ZeroFS: новий проект для S3-сумісного сховища

ZeroFS: новий проект для зручності використання S3-сумісного сховища

Більшість людей знають про S3-сумісне сховище, яке є об’єктним сховищем і слідує моделі API Amazon S3. Це місце для зберігання резервних копій, архівів, зображень, журналів або даних додатків. Серед таких рішень: AWS S3, комерційні S3-сумісні хмарні сервіси та самостійно розміщені платформи, такі як Garage, SeaweedFS і RustFS.

Це дешево, широко доступно та добре працює на великій масштабу, проте зазвичай не веде себе як сховище, з яким щодня працюють користувачі Linux. ZeroFS намагається змінити цю ситуацію.

Що таке ZeroFS?

ZeroFS — це новий проект з відкритим кодом, який представляє S3-сумісне об’єктне сховище у вигляді файлових систем і блочних пристроїв, доступних для Linux. Це дозволяє розширити використання об’єктного сховища за межі резервного копіювання та архівації або специфічних робочих процесів.

На технічній стороні, ZeroFS працює між сховищем та операційною системою, сервуючи дані як файлову систему в стилі POSIX через NFS або 9P, або як сире блочне сховище через NBD. Це дозволяє доступ до одного і того ж S3-сумісного сховища у вигляді файлів і каталогів або як блочного пристрою, який можна форматувати з файловими системами, такими як ext4 або використовувати із такими стеку зберігання, як ZFS.

Основні переваги ZeroFS

Головна мета проекту проста: зробити об’єктне сховище придатним для роботи там, де системи Linux очікують доступ до файлових систем або блочних пристроїв. Замість того, щоб покладатися на FUSE-монтаж або спеціалізовані програми API S3, ZeroFS використовує протоколи, які вже підтримуються операційними системами. Згідно з документацією проекту, це включає доступ на рівні файлів через NFS і 9P та доступ на рівні блоків через NBD.

NFS забезпечує ZeroFS широку сумісність, оскільки клієнти NFS практично доступні на майже кожній Unix-подібній ОС. Опція 9P спеціально націлена на Linux-середовища, пропонуючи покращену відповідність POSIX та розширене кешування. Протокол NBD унікальний тим, що дозволяє S3-сумісному сховищу виглядати як сире блочне пристрій.

Безпека та продуктивність ZeroFS

ZeroFS забезпечує обов’язкове шифрування. Дані шифруються перед завантаженням, використовуючи XChaCha20-Poly1305, а ключі отримуються з пароля через Argon2id. Не існує невиконаного режиму, тому провайдери об’єктного сховища отримують лише зашифровані дані.

Крім того, дані файлів стиснуті перед шифруванням, за замовчуванням використовується zstd, а LZ4 є швидшою альтернативою. Метод стиснення можна змінювати без міграції існуючих даних, а раніше написані фрагменти залишаються доступними.

Щодо продуктивності, ZeroFS підтримує кешування в пам’яті та локальному диску, щоб зменшити затримку об’єктного сховища. Це добре відома проблема при використанні S3-сумісного сховища як традиційної файлової системи. Додаткові функції включають контрольні точки, реплікацію читання, підтримку TRIM, необов’язкове зберігання WAL, автономний компресор, а також веб-інтерфейс з менеджером файлів, панеллю приладів та терміналом браузера.

Однак ZeroFS слід ретельно оцінити. Об’єктне сховище відрізняється від локальних дисків чи традиційного мережевого сховища затримкою та узгодженістю. Використання його як файлової системи або блочного пристрою має свої нюанси.

Проте, незважаючи на це, ZeroFS є привабливим варіантом для тестування файлових систем з хмарним зберіганням, самостійно розміщеного зберігання, зашифрованого віддаленого зберігання та експериментальних робочих процесів блочних пристроїв на об’єктному сховищі. Проект написано на Rust і випущено як безкоштовне програмне забезпечення з відкритим кодом під ліцензією AGPL-3.0.

Додаткові відомості, інструкції з встановлення та приклади конфігурації доступні на офіційному веб-сайті проекту.