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

Описание

При помощи 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 можно воспользоваться его документацией

Что еще почитать по теме

Владимир Туров 1 сентября 2020

Дело совершенно секретного iPod

Это был обычный серый день в конце 2005 года. Я сидел на рабочем месте и писал код для следующей версии iPod. Вдруг без стука ворвался директор ПО для iPod, начальник моего начальника, и закрыл дверь.
Владимир Туров 1 сентября 2020

Новое в блоге

Ульяна Малышева 13 октября 2021

Продуктовый дайджест: бесплатное тестирование сервера с 8 GPU и услуга Disaster Recovery

В дата-центре Selectel появился суперкомпьютер с 8 мощными видеокартами, и это тот случай, когда на сервер просто хочется смотреть. Также мы получили статус DRaaS-провайдера от VMware и обновили Manag…
Ульяна Малышева 13 октября 2021
Ульяна Малышева 6 октября 2021

Популярные расширения для PostgreSQL: как установить и для чего использовать

Облачные базы данных Selectel поддерживают 40 расширений для PostgreSQL. Некоторые добавляют небольшие радости оптимизации баз данных, другие — заменяют отдельные модули разработки на стороне приложен…
Ульяна Малышева 6 октября 2021
T-Rex 29 сентября 2021

Адаптация в компании: что делать до, во время и после первого дня работы

Поздравляем, вам отправили оффер и вы его приняли. Дальше — самое интересное: новый офис, задачи, коллеги. Уверены, вам помогут стать «своим» на новом месте, но полностью переносить ответственность за…
T-Rex 29 сентября 2021
bondar 24 сентября 2021

Piller CPM300: зачем мы устанавливаем новые динамические ИБП

Бесперебойная подача электропитания в серверные — одна из обязательств провайдера дата-центра перед клиентами. Но важна не только отказоустойчивость решения, но и его эффективность с точки потребления…
bondar 24 сентября 2021