Чим така хороша файлова система ZFS в Linux Ubuntu?

Файлова система ZFS в Linux Ubuntu: у чому особливості її структури, переваги та недоліки? Детально про це, читайте в нашій статті.

Чим така хороша файлова система ZFS в Linux Ubuntu?
Перейти до перегляду
Файлова система ZFS у Linux Ubuntu. Які переваги має ZFS?

Файлова система ZFS у Linux Ubuntu. Які переваги має ZFS?

ZFS або Zettabyte File System – це файлова система, яка створена в Sun Microsystems для операційної системи Solaris. Вона підтримує великі обсяги даних, поєднує концепції файлової системи, менеджера логічних дисків та фізичних носіїв, а також просте керування томами зберігання даних.

Це файлова система наступного покоління, спочатку розроблена для створення рішень NAS з підвищеною безпекою, надійністю та продуктивністю. На відміну від інших систем, ZFS – це 128-бітна файлова система, що пропонує практично необмежену ємність. ZFS є проектом з відкритим вихідним кодом та ліцензується під CDDL (Common Development and Distribution License).

Структура ZFS - Zettabyte File System

Для використання файлової системи ZFS необхідно встановити або FreeBSD, або ОС, яка використовує illumos-ядро, це відгалуження ядра OpenSolaris.

Якщо ви хочете використовувати ZFS в Ubuntu, то необхідно додати її підтримку вручну. Зробити це не складно, потрібно лише виконати декілька команд. До цього ми повернемося пізніше, а зараз давайте розглянемо переваги та недоліки файлової системи.

Переваги ZFS

З переваг файлової системи ZFS можна виділити такі:

Вона має спрощене адміністрування.

Управління томами, RAID масивами та файловою системою тут злито докупи. Для створення томів, рівнів надмірності, файлових систем, стиснення, точок монтування, вам знадобиться лише кілька команд.

Це також спрощує моніторинг, оскільки є два, або навіть три менші рівні, які слід переглядати.

Наступне забезпечення цілісності даних.

При записі даних, разом з ними обчислюється та записується контрольна сума. Надалі, коли дані зчитуються, контрольна сума обчислюється іще раз. При розбіжності записаних контрольних сум та зчитаних даних, виявляється помилка. Після цього система спробує виправити таку помилку автоматично.

Також ZFS відмінно масштабується з можливістю додавання нових пристроїв, керування кешем тощо.

Функція копіювання під час запису.

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

Функція копіювання під час запису

Потім, метадані файлових систем оновлюються до нової інформації після завершення запису. Це призводить до збереження старих даних у разі збою системи, або іншої шкідливої події.

Має вбудовані функції зберігання

  • Реплікація – процес створення копії чогось.

  • Дедуплікація – процес, який усуває надмірні копії даних та знижує навантаження на сховище.

    Дедуплікація
  • Стиснення – це опція, яка зберігає дисковий простір і додає швидкість. В процесі, кількість бітів необхідних для представлення даних скорочується.

  • Снапшоти – набір еталонних маркерів для даних у конкретний момент часу.

    Снапшоти
  • Клони – ідентична копія чогось.

Обмеження ZFS

Але, як і будь-яка файлова система, ZFS також має свої слабкі місця.

ZFS страждає від жахливої ​​продуктивності при заповненні на 80% і більше від своєї ємності.

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

Немає можливості скорочувати пул.

Ви не можете видаляти пристрої або vdev з пулу після додавання.

Також є обмеження у зміні типу надмірності.

За винятком перемикання пулу окремого диска в пул дзеркалювання, ви не можете змінювати тип надмірності. Вибравши тип надмірності, єдиним рішенням буде його руйнування та створення нового, відновлюючи дані із резервних копій або іншого розташування.

Установка ZFS в Ubuntu

А зараз давайте розглянемо, як встановити ZFS в операційній системі Linux на прикладі ubuntu версії 20.04.

Для встановлення нам знадобиться термінал. Для запуску натисніть клавіші Ctrl+Alt+T.

Потім виконайте наступну команду

$ sudo apt update

Для перевірки оновлень програм. Після введення команди система попросить ввести пароль: введіть пароль root і натисніть Enter.

sudo apt update

І для встановлення наступне:

$ sudo apt install zfsutils-linux

sudo apt install zfsutils-linux

Після запуску команди установки, для підтвердження введіть «y» та натисніть Enter. Після цього розпочнеться процес інсталяції пакета програмного забезпечення.

Щоб перевірити інсталяцію ZFS, виконайте таку команду.

$ zfs –version

Перевірка встановленої версії ZFS

Результатом буде виведення версії програми. Тепер можна створити пул зберігання з віртуальним пристроєм vdev.

Пул зберігання storage pool

Пул зберігання (storage pool) – це набір одного або кількох віртуальних пристроїв, на яких зберігаються дані. Пул ZFS, або як його ще називають - Zpool, є контейнером даних найвищого рівня у всій системі ZFS. Він використовується для створення однієї або декількох файлових систем (наборів даних) або блокових пристроїв (томів). Ці файлові системи і блокові пристрої спільно використовують простір пула, що залишився. Операції з розділення та форматування будуть виконуватися системою ZFS.

Віртуальний пристрій vdev

Віртуальний пристрій (vdev) може складатися з одного або більше фізичних пристроїв. Він може бути пулом або його частиною, може мати рівень надмірності дзеркала, потрійного дзеркала, RAIDZ, RAIDZ-2 або RAIDZ-3.

RAID-Z – це реалізація модифікованого RAID-5. У ZFS він здатний усунути помилки та прогалини у запису, виявлені в оригінальному RAID-5. RAID-Z1 вимагає для роботи як мінімум три диски: два диски для зберігання і один для парності.

RAID-Z2 повинен мати два диски для зберігання та два для парності.

RAID-Z2

RAID-Z3 - як мінімум два накопичувачі та три диски для контролю парності.

RAID-Z3

Як створити RAIDz

А тепер розглянемо, як зібрати з накопичувачів RAID-Z. Спочатку потрібно визначити накопичувачі, з яких буде збудовано масив.

Для перевірки підключених дисків та визначення потрібних, скористаємося утилітою – fdisk. Виконаємо наступну команду для створення списку накопичувачів:

$ sudo fdisk -l

В результаті ви побачите список дисків з детальною інформацією про кожен з них.

Перевірка підключених дисків

Для прикладу, я покажу як зібрати RAIDZ першого рівня, це аналог RAID5 з одним диском парності. Дозволяє залишатися масиву в робочому стані без втрати даних при виході з ладу одного накопичувача.

У мене є три жорсткі диски /dev/sdd, /dev/sde та /dev/sdf. Я створю пул з ім'ям zdata. Для цього виконаю таку команду:

$ sudo zpool create ith2-zfs-raid-1p zdata /dev/sdd /dev/sde /dev/sdf

$ sudo zpool create zdata raidz /dev/sdd /dev/sde /dev/sdf

Створення пулу з ім'ям zdata

Якщо з'являється будь-яка помилка, то ви можете запустити команду використовуючи параметр -f після команди zpool create , яка примусово виконує команду.

$ sudo zpool create -f ith2-zfs-raid-1p zdata /dev/sdd /dev/sde /dev/sdf

Щоб дізнатися точку монтування після створення пулу, виконаємо команду df -h:

$ df –h

Дізнатися точку монтування

Пул змонтований у /zdata. Щоб змінити точку монтування пулу, використовую наступний синтаксис.

$ sudo zfs set mountpoint =<path> <pool_name>

У цьому прикладі я використав /var/pool, як нову точку монтування.

$ sudo zfs set mountpoint=/var/pool zdata

Перевіряємо нову точку:

$ df –h

Перевіряємо нову точку монтування

У пулі зберігання можна створювати каталоги. Наприклад, я створю каталог з ім'ям mydata

$ sudo zfs create zdata/mydata

І щоб переглянути всі пули зберігання ZFS у системі, виконаємо таку команду:

$ zpool list

Переглянути всі пули зберігання ZFS в системі

А для того, щоб дізнатися про конфігурацію та стан кожного пристрою в пулі ZFS, виконайте команду статусу.

$ zpool status

Для виведення подій та усунення несправностей введіть таку команду

$ sudo zpool events zdata –v

Дізнатися про конфігурацію та стан кожного пристрою в пулі ZFS

Для додавання ще одного жорсткого диска до пулу зберігання ZFS, потрібно виконати команду з ім'ям диска, який потрібно додати.

$ sudo zpool add zdata /dev/sdb

І після додавання диска подивимося статус пулу:

$ zpool status

Додавання ще одного жорсткого диска в пул зберігання ZFS

Ну і для видалення пулу зберігання ZFS, потрібно виконати наступну команду.

$ sudo zpool destroy zdata

Як створити, відкотити та видалити моментальні знімки ZFS

Ця файлова система дозволяє створювати моментальні знімки вашого пулу.

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

Для створення знімка використовується команда - zfs snapshot, за якою слідує ім'я знімка. У цьому прикладі я використав zdata/mydata для створення моментального знімка.

$ sudo zfs snapshot zdata/mydata@snap1

Для перевірки знімка виконаємо таку команду:

$ zfs list -t snapshot

Створити моментальний знімок пулу ZFS

Якщо його можна перейменувати:

sudo zfs rename zdata/mydata@snap1 zdata/mydata@snap2

Ви можете скасувати зміни, виконавши операцію відкату моментального знімка. Майте на увазі, що ви втратите всі зміни з моменту створення моментального знімка.

Для того, щоб відкотитися до потрібного знімку, потрібно виконати команду zfs rollback з ім'ям потрібного снапшота. Це скасує всі дії в даному каталозі, що робилися після цього знімка.

$ sudo zfs rollback test-pool/mydata@snap1

Відкотити ZFS до потрібного знімку

Ця команда відкочує систему до потрібної дати.

Після завершення відкату ви можете перевірити наявність видалених, після снапшота, файлів у каталозі.

Передача та отримання ZFS

Снапшоти можна зберегти в файл і повернути його назад, що відмінно підходить для створення бекапів або надсилання копій через мережу (наприклад, через ssh) для копіювання файлової системи.

Команда – send, відправляє снапшот файлової системи, який може бути пересланий у файл або іншу машину в потоці. Команда – receive, приймає такий потік та записує копію снапшота назад у файлову систему ZFS.

Для прикладу, створимо ще один снапшот і збережемо його у файл наступною командою:

sudo zfs snapshot -r zdata/mydata@snap3

sudo zfs send zdata/mydata@snap2> ~/mydata-snap.zfs

Створимо снапшот і збережемо його у файл

А потім повернемо його назад, виконавши таку команду:

sudo zfs receive -F zdata/mydata-copy < ~/mydata-snap.zfs

Повернути знімок із файлу

За допомогою додаткових скриптів можна налаштувати автоматичне створення снапшотів та відправку (наприклад, на сервер за протоколом ssh).

Стиснення даних ZFS

І, як згадувалося раніше, ZFS дозволяє автоматично стискати дані. Враховуючи потужність сучасних процесорів, це корисна опція, так як зменшений розмір даних означає, що менше даних будуть фізично прочитані та записані, з чого випливають більш швидкі операції введення/виводу. ZFS надає широкий набір методів стиснення. За замовчуванням використовується lz4 (високопродуктивна заміна для lzjb), що дає швидше стиснення та розпакування порівняно з lzjb, при дещо більшому ступені стиснення. Для зміни рівня компресії можна використати команду:

sudo zfs set compression=gzip-9 zdata

Або, можна навіть змінити тип стиснення:

sudo zfs set compression=lz4 zdata

Перегляд рівня компресії:

sudo zfs get compressratio

Стиснення даних ZFS

Найбезпечніший вибір — це lz4, тому що він значно швидший за решту варіантів, при хорошій продуктивності.

Висновок

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

Якщо у вас виникли проблеми з втратою інформації з файлової системи ZFS та RAIDZ, скористайтеся програмою Hetman RAID Recovery. З її допомогою ви зможете повернути випадково видалені файли з файлової системи ZFS або дістати інформацію із зруйнованого RAIDZ масиву. Програма допоможе у разі збоїв, форматування, затирання та інших випадків втрати даних.

Відновлення даних з пошкоджених RAID-масивів, недоступних для комп'ютера.
Перейти до перегляду
💽 Програма для відновлення даних із пошкоджених RAID масивів 💽

💽 Програма для відновлення даних із пошкоджених RAID масивів 💽

Valery Martyshko

Автор: , Технічний письменник

Автор, перекладач та технічний спеціаліст компанії Hetman Software. Має майже десятирічний досвід роботи в IT сфері, який охоплює різні галузі: від ПК з Windows та мобільних пристроїв, до фото та відео обладнання, сигналізацій та систем відеоспостереження, і т.д. Окрім іншого, є також спеціалістом по Android, Windows та Microsoft Office. Є експертом в області відновлення даних, файлових систем, пристроїв зберігання даних, RAID масивів.

Vladyslav Kupriyenko

Редактор: , Технічний письменник

Редактор статей блогу, автор та ведучий рубрики на YouTube каналі компанії Hetman Software. За освітою: спеціаліст з обслуговування комп’ютерних систем та мереж, вивчав розробку програмного забезпечення. Має досвід роботи в IT сфері, який охоплює різні галузі: адміністрування комп’ютерної мережі та обладнання, контроль та підтримка роботи Інтернет, офісних та спеціалізованих програм. Є фахівцем в області відновлення даних, файлових систем та пристроїв зберігання даних.

Рекомендуємо для вас

Вас вітає асистент Hetman Software створений на основі штучного інтелекту.
Розпочати чат