s3ql — файловая система на базе облачного хранилища

s3ql

Описание

При помощи S3QL вы можете создать файловую систему на базе облачного хранилища Selectel Storage, которую можно смонтировать в любой современной версии OS Linux, FreeBSD или Mac OS X.

Возможности

Прозрачность

S3QL практически не отличима от локальной файловой системы. Она поддерживает hardlinks, symlinks, стандартные системные права доступа, расширенные атрибуты, а также файлы размером до 2TB.

Динамический размер

Размер файловой системы не ограничен, он увеличивается при сохранении данных и уменьшается после их удаления. На локальном диске хранятся кэшированные данные.

Компрессия

Перед сохранением в облачное хранилище данные могут быть сжаты (поддерживается lzma, bzip2, zlib).

Шифрование

После компрессии (но до загрузки в хранилище) данные могут быть зашифрованы AES алгоритмом шифрования с 256 битным ключем. Также используется дополнительный SHA256 HMAC checksum для защиты данных от внешних манипуляций.

Дедупликация данных

Если несколько файлов имеют одинаковое содержимое, то повторяющиеся данные будут записаны только один раз, что позволяет эффективно хранить большое количество схожих данных, при минимально занятом объеме. Данный функционал работает как на целых файлах, так и на блоках данных, которые повторяются в разных файлах.

Copy-on-Write/Snapshotting

S3QL может быстро копировать целые директории без использования дополнительного диского пространства. Только при внесении изменений в одну из копий, измененные данные будут занимать дополнительное место.

Защита данных от изменения

Вы можете запретить изменение данных для каталогов, например, для хранения бэкапов, которые будут защищены от случайного удаления.

Высокая производительность независимо от сетевых задержек

Операции, связанные с изменением структуры (создание директорий, перемещение файлов и изменение прав) выполняются очень быстро, так как они не требуют сетевого взаимодействия.

Поддержка медленных каналов связи

S3QL разбивает содержимое файлов на маленькие блоки и локально кеширует их, что уменьшает количество сетевых обращений для чтения и записи данных, а также снижает объем передаваемых данных, так как только измененные блоки данных передаются по сети.

Установка

Пакет s3ql доступен в репозиториях Debian (sid) и Ubuntu, установка из которых сводится к обычному запуску apt-get install s3ql.
Если у вас в репозитории нет данного пакета или вас не устраивает его версия, то всегда можно установить вручную, воспользовавшись инструкцией.

Создание файловой системы

mkfs.s3ql swift://auth.selcdn.ru/container
По умолчанию, все иноды разбиваются на блоки в 10МБ, этот параметр можно задавать при создании файловой системы —max-obj-size. После создания файловой системы этот параметр изменить нельзя.
Также по умолчанию, при создании файловой системы вам потребуется ввести пароль для шифрования данных, но, если вам не требуется шифрование, то можно указать опцию —plain и тогда данные не будут шифроваться, что может увеличить производительность файловой системы.

Монтирование

Подключить облачное хранилище очень просто:
mount.s3ql swift://auth.selcdn.ru/container /mnt/container

Компрессия

При монтировании файловой системы можно указать необходимый алгоритм сжатия данных, но надо понимать, что чем сильнее компрессия, тем больше нагрузка на процессор и меньше скорость при сохранении данных. Алгоритмы сжатия соотносятся друг с другом следующим образом: lzma медленый, но имеет лучшую компрессию относительно bzip2, а bzip2, в свою очередь, имеет лучшую компрессию относительно zlib, но медленнее его. Для максимальной производительности файловой системы лучше выбирать алгоритм сжатия исходя из пропускной способности сети

Кеширование

S3QL поддерживает локальный кеш данных файловой системы для ускорения доступа. Кеш основан на блоках данных, так что возможно, что только части файлов находятся в кеше.

Дополнительные команды

s3qladm — используется для изменения пароля для шифрования, обновления файловой системы, удаление всех данных и загрузки метаданных из хранилища;
fsck.s3ql — иногда после потери сетевого соединения с хранилищем или после падения самого s3ql необходимо делать проверку файловой системы, без которой нет возможности дальнейшего монтирования;
s3qlcp — позволяет реплицировать каталоги в рамках одной s3ql файловой системы;
s3qlctrl — для управления текущими настройками смонтированой файловой системы, например, размер кеша и уровень логирования, а также позволяет принудительное выполнение flushcache и загрузку мета-данных в хранилище;
s3qllock — делает папки неизменяемыми;
s3qlrm — рекурсивно удаляет файлы и директории на файловой системе s3ql, также может удалить каталоги, которые отмечены как неизменяемые;
s3qlstat — отображает статистику для смонтированой файловой системы.

Отмонтирование

umount.s3ql /mnt/container
Отмонтировать файловую систему может только тот пользователь, который её примонтировал или root. При отмонтировании происходит дозагрузка данных в хранилище, которые еще не были записаны — при этом команда блокируется до момента завершения загрузок.

Итог

Плюсы

  • шифрование на стороне клиента, что обеспечивает хранение полностью зашифрованых данных в хранилище;
  • при помощи дедупликации данных можно сократить расходы на хранение данных в облаке относительно традиционного подхода;
  • кеширование данных позволяет сократить затраты на исходящий трафик для хранилища.

Недостатки

  • Нет возможности множественного монтирования (одновременно на разных машинах).

P.S. Для более подробного ознакомления с s3ql можно воспользоваться его документацией