Чим така хороша файлова система ZFS в Linux Ubuntu?
Файлова система ZFS в Linux Ubuntu: у чому особливості її структури, переваги та недоліки? Детально про це, читайте в нашій статті.
- Переваги ZFS
- Обмеження ZFS
- Установка ZFS в Ubuntu
- Як створити RAIDz
- Як створити, відкотити та видалити моментальні знімки ZFS
- Передача та отримання ZFS
- Стиснення даних ZFS
- Висновок
- Питання та відповіді
- Коментарі
ZFS або Zettabyte File System – це файлова система, яка створена в Sun Microsystems для операційної системи Solaris. Вона підтримує великі обсяги даних, поєднує концепції файлової системи, менеджера логічних дисків та фізичних носіїв, а також просте керування томами зберігання даних.
Це файлова система наступного покоління, спочатку розроблена для створення рішень NAS з підвищеною безпекою, надійністю та продуктивністю. На відміну від інших систем, ZFS – це 128-бітна файлова система, що пропонує практично необмежену ємність. ZFS є проектом з відкритим вихідним кодом та ліцензується під CDDL (Common Development and Distribution License).
Характеристика | Опис |
---|---|
Підтримка великих обсягів даних | ZFS підтримує надзвичайно великі обсяги даних, дозволяючи зберігати до ексабайтів інформації. |
Інтеграція файлової системи та управління томами | Поєднує файлову систему та менеджер томів, забезпечуючи спрощене управління дисковим простором. |
Миттєві знімки (snapshots) | Дозволяє створювати знімки файлової системи для швидкого відновлення даних без значних витрат ресурсів. |
Захист від пошкоджень даних | Вбудовані механізми перевірки цілісності даних з використанням хешування, які запобігають їх пошкодженню. |
Резервування даних (RAID-Z) | Забезпечує різні рівні захисту даних завдяки вбудованим функціям RAID-Z для захисту від втрат. |
Стиснення даних | Забезпечує ефективне стиснення даних, що допомагає зекономити дисковий простір. |
Клонування файлових систем | Дозволяє створювати клоновані копії безпосередньо з знімків для тестування або розробки. |
Шифрування | Підтримує шифрування даних для захисту конфіденційної інформації. |
Для використання файлової системи 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 install zfsutils-linux
Після запуску команди установки, для підтвердження введіть «y» та натисніть Enter. Після цього розпочнеться процес інсталяції пакета програмного забезпечення.
Щоб перевірити інсталяцію ZFS, виконайте таку команду.
$ zfs –version
Результатом буде виведення версії програми. Тепер можна створити пул зберігання з віртуальним пристроєм vdev.
Пул зберігання (storage pool) – це набір одного або кількох віртуальних пристроїв, на яких зберігаються дані. Пул ZFS, або як його ще називають - Zpool, є контейнером даних найвищого рівня у всій системі ZFS. Він використовується для створення однієї або декількох файлових систем (наборів даних) або блокових пристроїв (томів). Ці файлові системи і блокові пристрої спільно використовують простір пула, що залишився. Операції з розділення та форматування будуть виконуватися системою ZFS.
Віртуальний пристрій (vdev) може складатися з одного або більше фізичних пристроїв. Він може бути пулом або його частиною, може мати рівень надмірності дзеркала, потрійного дзеркала, RAIDZ, RAIDZ-2 або RAIDZ-3.
RAID-Z – це реалізація модифікованого RAID-5. У ZFS він здатний усунути помилки та прогалини у запису, виявлені в оригінальному RAID-5. RAID-Z1 вимагає для роботи як мінімум три диски: два диски для зберігання і один для парності.
RAID-Z2 повинен мати два диски для зберігання та два для парності.
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
Якщо з'являється будь-яка помилка, то ви можете запустити команду використовуючи параметр -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, виконайте команду статусу.
$ zpool status
Для виведення подій та усунення несправностей введіть таку команду
$ sudo zpool events zdata –v
Для додавання ще одного жорсткого диска до пулу зберігання ZFS, потрібно виконати команду з ім'ям диска, який потрібно додати.
$ sudo zpool add zdata /dev/sdb
І після додавання диска подивимося статус пулу:
$ zpool status
Ну і для видалення пулу зберігання ZFS, потрібно виконати наступну команду.
$ sudo zpool destroy zdata
Як створити, відкотити та видалити моментальні знімки ZFS
Ця файлова система дозволяє створювати моментальні знімки вашого пулу.
Моментальний знімок — це доступна лише для читання копія файлової системи, створена в певний час. Можна робити знімки цілих наборів даних або пулів. Моментальний знімок включає вихідну системну версію файлової системи разом із усіма змінами, внесеними після створення моментального знімка. Простіше кажучи, під час створення моментального знімка створюється диференціальна копія лише для читання.
Для створення знімка використовується команда - zfs snapshot, за якою слідує ім'я знімка. У цьому прикладі я використав zdata/mydata для створення моментального знімка.
$ sudo zfs snapshot zdata/mydata@snap1
Для перевірки знімка виконаємо таку команду:
$ zfs list -t snapshot
Якщо його можна перейменувати:
sudo zfs rename zdata/mydata@snap1 zdata/mydata@snap2
Ви можете скасувати зміни, виконавши операцію відкату моментального знімка. Майте на увазі, що ви втратите всі зміни з моменту створення моментального знімка.
Для того, щоб відкотитися до потрібного знімку, потрібно виконати команду zfs rollback з ім'ям потрібного снапшота. Це скасує всі дії в даному каталозі, що робилися після цього знімка.
$ sudo zfs rollback test-pool/mydata@snap1
Ця команда відкочує систему до потрібної дати.
Після завершення відкату ви можете перевірити наявність видалених, після снапшота, файлів у каталозі.
Передача та отримання 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
Найбезпечніший вибір — це lz4, тому що він значно швидший за решту варіантів, при хорошій продуктивності.
Висновок
Приймаючи це до уваги, ZFS безсумнівно є файловою системою, що пропонує широкий спектр можливостей. Файлова система дозволяє не тільки управляти даними ефективним та інноваційним способом, але й у разі непередбачених ситуацій дозволить відновити дані без будь-яких перерв у роботі. Крім того, у разі збою, всю систему можна легко відновити, використовуючи функцію моментального знімка, та повернути її до певного моменту часу.
Якщо у вас виникли проблеми з втратою інформації з файлової системи ZFS та RAIDZ, скористайтеся програмою Hetman RAID Recovery. З її допомогою ви зможете повернути випадково видалені файли з файлової системи ZFS або дістати інформацію із зруйнованого RAIDZ масиву. Програма допоможе у разі збоїв, форматування, затирання та інших випадків втрати даних.
Характеристика | Опис |
---|---|
Підтримка RAID-масивів | Програма підтримує різні типи RAID-масивів, включаючи RAID 0, RAID 1, RAID 5, RAID 10, а також нестандартні конфігурації. |
Автоматичне визначення параметрів | Автоматично визначає параметри масиву, такі як розмір блоку, порядок дисків та інші важливі характеристики. |
Відновлення даних | Можливість відновлення даних з пошкоджених або видалених RAID-масивів, а також відновлення після збою або помилок у конфігурації. |
Попередній перегляд файлів | Дозволяє переглядати файли перед відновленням для оцінки якості та перевірки даних. |
Підтримка різних файлових систем | Підтримує файлові системи FAT, NTFS, ReFS, HFS+, Ext2/3/4, XFS, ZFS та інші. |
Зручний інтерфейс | Простий у використанні інтерфейс з покроковим майстром для відновлення даних. |