Випуск ZFS on Linux 0.8.0, реалізації ZFS для ядра Linux

Після майже двох років розробки представлений реліз ZFS on Linux 0.8.0реалізації файлової системи ZFS, оформленої у вигляді модуля для ядра Linux. Робота модуля перевірена з ядрами Linux з 2.6.32 до 5.1. Готові настановні пакети найближчим часом будуть підготовлені для основних дистрибутивів Linux, включаючи Debian, Ubuntu, Fedora, RHEL/CentOS. Модуль ZFS on Linux вже входить до складу дистрибутивів Debian, Ubuntu, Gentoo, Sabayon Linux та ALT Linux.

В рамках ZFS on Linux підготовлено реалізацію компонентів ZFS, пов'язаних як з роботою файлової системи, так і з функціонуванням менеджера томів. Зокрема, реалізовані компоненти: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) та ZPL (ZFS POSIX Layer). Додатково проектом забезпечена можливість використання ZFS як бекенд для кластерної файлової системи Lustre. Напрацювання проекту засновані на оригінальному коді ZFS, імпортованому з проекту OpenSolaris та розширеному покращення та виправленні від спільноти Illumos. Проект розвивається за участю співробітників Ліверморської національної лабораторії за контрактом із Міністерством енергетики США.

Код розповсюджується під вільною ліцензією CDDL, яка несумісна з GPLv2, що не дозволяє досягти інтеграції ZFS on Linux до складу основної гілки ядра Linux, оскільки змішування коду під ліцензіями GPLv2 і CDDL неприпустимо. Для обходу цієї ліцензійної несумісності було вирішено поширювати продукт повністю під ліцензією CDDL у вигляді модуля, що окремо завантажується, який поставляється окремо від ядра. Стабільність кодової бази ZFS on Linux оцінюється як сумісна з іншими ФС для Linux.

Основні зміни:

  • Додано вбудовану підтримку шифрування збережених даних на рівні файлової системи та розділів. За промовчанням для шифрування використовується алгоритм aes-256-ccm. Для завантаження ключів шифрування запропоновано команду "zfs load-key";
  • Реалізовано можливість передачі шифрованих даних при виконанні команд "zfs send" та "zfs receive". При вказівці опції "-w" вже зашифровані в пулі дані передаються в інший пул як є, без проміжного дешифрування. При подібному копіюванні дані залишаються захищені ключем сторони, що відправляє, що дозволяє використовувати даний режим для резервного копіювання на системи, що не заслуговують на довіру (у разі компрометації одержувача, без ключа атакуючий не зможе отримати доступ до даних);
  • Додано підтримку видалення первинних накопичувачів з пулу зберігання, приєднаних як окремо, так і у складі дзеркала. Видалення здійснюється командою "zpool remove". У процесі видалення дані з накопичувача, що виключається, копіюються на первинні накопичувачі, що залишаються в пулі;
  • Додано команду "zpool checkpoint" для збереження поточного стану пулу з можливістю відкату подальших змін на збережений момент часу (створюється снапшот всього пулу). Представлена ​​можливість може бути корисною в процесі виконання потенційно небезпечних складних адміністративних робіт, що у звичайних умовах призводять до незворотних змін (наприклад, активація прапорів нової функціональності ZFS або очищення даних);
  • Додано команду «zpool trim», що дозволяє інформувати накопичувачі, що використовуються в пулі, про сектори, які більше не використовуються. Застосування операції TRIM дає можливість підвищити ефективність роботи SSD-накопичувачів та запобігти деградації їх продуктивності. Для включення безперервного фонового процесу передачі команд TRIM запропоновано нову властивість autotrim;
  • Додано команду «zpool initialize» для ініціалізації всього нерозподіленого дискового простору, що дозволяє забезпечити його миттєву готовність до використання без зниження продуктивності при першому доступі (наприклад, при розміщенні віртуалізованих сховищ, таких як VMware VMDK);
  • Додана підтримка облікового запису та квот на рівні проекту, що доповнюють раніше доступні квоти на рівні користувача та групи. По суті, проекти — це окремий простір об'єктів, пов'язаних з окремим ідентифікатором (project ID). Прив'язка визначається через операцію 'chattr -p' або через успадкування атрибутів. Для управління проектами представлені команди "zfs project" і "zfs projectspace", що дозволяють керувати створенням проектів і задавати їм ліміти дискового простору;
  • Додана можливість створення Lua-скриптів для автоматизації різних робіт із ZFS. Скрипти запускаються у спеціальних ізольованих оточеннях за допомогою команди "zpool program";
  • Реалізовано нову бібліотеку pyzfs, що надає стабільний API для адміністрування ZFS з програм на мові Python. Бібліотека є обв'язкою над libzfs_core і надає ідентичний набір функцій, але застосовує ближчі для Python типи;
  • Забезпечена сумісність утиліт arcstat, arcsummary та dbufstat з Python 3. Утиліти arcstat.py, arc_summary.py та dbufstat.py перейменовані у варіанти без розширення ".py";
  • Додано підтримку інтерфейсу ядра Linux Direct IO (O_DIRECT), що дозволяє звертатися до даних без буферизації та в обхід кешу;
  • Представлені оптимізації продуктивності:
    • Прискорено роботу команд «scrub» та «resilver» за рахунок розбиття на дві фази (виділено окрему фазу для сканування метаданих та визначення розташування блоків з даними на диску, що дозволяє виконати подальшу перевірку з використанням послідовного читання даних);
    • Додано підтримку класів розміщення даних (Allocation classes),
      що дозволяють включати в пул відносно невеликі SSD-накопичувачі і використовувати їх для зберігання тільки певних типів часто використовуваних блоків, таких як метаданих, дані DDT і дрібні блоки з файлами;

    • Збільшено продуктивність команд для адміністрування, таких як
      «zfs list» і «zfs get», рахунок кешування необхідних їх роботи метаданих;

    • Додано підтримку розпаралелювання операцій виділення блоків через запуск окремих процесів «allocator» для кожної групи metaslab. На звичайних системах відзначається приріст продуктивності лише на рівні 5-10%, але у великих (8 128 GB SSD, 24 core NUMA, 256 GB ОЗУ) приріст операцій виділення блоків може становити 25%;
    • Додано можливість відкладеного виконання команди «resilver» (перебудова розподілу даних з урахуванням зміни конфігурації накопичувачів) — якщо при запуску нової операції ще не відпрацювала попередня, новий обробник почне виконуватися тільки після закінчення роботи попереднього;
    • До журналу ZIL (ZFS Intent Log) внесені оптимізації, що дозволяють створювати та обробляти блоки за наявності блоків, що ще обробляються сховищем;
    • Скорочено час реєстрації розділів (zvol) у системі. Коли пул містить велику кількість розділів, вони тепер стають доступними відразу після виконання «zpool import»;
    • Додано підтримку апаратного прискорення обчислення хешів SHA256 та операцій шифрування AES-GSM з використанням чіпів з підтримкою технології Intel QAT (Quick Assist Technology). Додано підтримку засобів апаратного прискорення чіпсету Intel C62x і CPU Atom C3000.

Джерело: opennet.ru

Додати коментар або відгук