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

Файловая система ZFS в Linux Ubuntu. В чем особенности ее структуры, преимущества и недостатки, давайте вместе разберемся в нашей статье.

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

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 в Linux Ubuntu. Чем так хороша ZFS

Файловая система ZFS в Linux Ubuntu. Чем так хороша ZFS

Преимущества 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

Результатом будет вывод версии программы. Теперь можно создать пул хранения c виртуальным устройством 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 массива. Программа поможет в случае сбоев, форматирования, затирания, и других случаев потери данных.

Перейти к просмотру
Топ программ для восстановления данных с ZFS диска. Как восстановить данные с файловой системы ZFS

Топ программ для восстановления данных с ZFS диска. Как восстановить данные с файловой системы ZFS

Dmytriy Zhura

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

Дмитрий Жура – автор и один из IT-инженеров компании Hetman Software. Имеет почти 10 летний опыт работы в IT-сфере: администрирование и настройка серверов, установка операционных систем и различного программного обеспечения, настройка сети, информационная безопасность, внедрения и консультация по использованию специализированного ПО. Является экспертом в области восстановления данных, файловых систем, устройств хранения данных и RAID массивов.

Andrey Mareev

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

В далеком 2005 году, я получил диплом по специальности «Прикладная математика» в Восточноукраинском национальном университете. А уже в 2006 году, я создал свой первый проект по восстановлению данных. С 2012 года, начал работать в компании «Hetman Software», отвечая за раскрутку сайта, продвижение программного обеспечения компании, и как специалист по работе с клиентами.

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

Вас приветствует ассистент Hetman Software, созданный на основе искусственного интеллекта.
Начать Чат