Файловая система ZFS – лучшая файловая система, возможно

Операционная система Linux является достаточно гибкой системой. Это позволяет использовать ее как на настольных компьютерах, так и на серверах. Главное выбрать правильную файловую систему, которая будет отвечать именно вашим требованиям. В этой статье мы детально рассмотрим файловую систему ZFS.

Содержание

  1. Что являет собой файловая система ZFS?
  2. История развития файловой системы ZFS
  3. Структура файловой системы ZFS
  4. Возможности файловой системы ZFS
  5. Недостатки файловой системы ZFS
  6. Безопасность данных в ZFS
  7. ZFS и Mac OS
  8. Как открыть ZFS накопитель в Windows?
  9. Лучшие альтернативы файловой системе ZFS

Что являет собой файловая система ZFS?

Изначально перед разработчиками файловой системы ZFS стояла задача создать суперсовременную файловую систему, которая могла бы работать с огромными объемами данных. При этом не должна снижаться производительность, плюс файловая система ZFS должна была обладать всеми современными функциями.

Компания Sun Microsystems для своей операционной системы Solaris хотела создать новый тип файловой системы, которая опережала бы время. Поэтому в ней было реализовано достаточно большое количество новаторских решений, таких как структура размещения данных, поддержка пулов и многое другое.

Даже сама концепция файловой системы ZFS была новаторской – ZFS должна была содержать в себе менеджер логических томов, обеспечивать удобное управление томами и придерживаться принципов легковесных файловых систем. Ну и на додачу к всему этому ZFS должна была обеспечивать избыточность.

И вот, в 2005 году команда разработчиков под руководством Меттью Арена и Джефа Бонвика представила файловую систему, отвечающую всем этим требованиям.

ZFS получилась очень быстрой, технологичной и новаторской. Кроме того, она 128-битная, вместо привычных 64-бита. Таким образом разработчики сделали огромный акцент на ее актуальности в будущем.

Фактически ZFS смогла собрать воедино многие решения, которые используются в других файловых системах по отдельности. К примеру, файловая система так или иначе использует LVM (менеджер томов), Linux RAID (хоть и несколько модифицированный), некоторые функции XFS, снапшоты и многое другое. Если вы хотите узнать больше информации о Linux RAID – прочтите статью «RAID – что это такое и какой тип лучше использовать».

Технология LVM детально описана в статье «LVM – что это такое, преимущества и недостатки»

Нельзя не упомянуть, что файловая система ZFS использует технологию copy on write. Это означает, что во время перезаписи файла физически он не перезаписывается. Вместо этого выделяется новый блок и туда записывается новая копия. Затем, вместо удаления старых файлов обновляются метаданные, которые указывают на новый блок, а оригинальная информация будет удалена только в случае нехватки места на диске. Такое решение сильно увеличивает возможности восстановления данных, так как в случае повреждения информации вы всегда можете просмотреть предыдущую версию файлов.

Использование метода copy-on-write позволяет не использовать журналирование вовсе и иметь при этом возможность восстановления утерянных данных.

Все вышеописанные преимущества и огромный потенциал файловой системы ZFS стали причиной, почему многие обратили на нее внимание и до сих пор ее обсуждают.

История развития файловой системы ZFS

После релиза файловой системы ZFS ее исходный код был интегрирован в ядро операционной системы Solaris. В том же году начались порты для других операционных систем и уже к 2008 году ZFS была портирована для FreeBSD и начались работы по портированию ZFS для Linux. Однако, процесс портирования был усложнен переходом на CDDL (Common Development and Distribution License) лицензию. Она хоть и основана на принципах свободного распространения ПО, однако противоречит принципам лицензирования GNU/Linux. Это привело к тому, что порт доработали, однако в операционной системе Linux, ZFS можно использовать в сильно ограниченном режиме. Чтобы решить этот вопрос современные дистрибутивы Linux предлагают методы для установки ZFS. То есть, пользователь сначала устанавливает нужный дистрибутив Linux, а затем использует предложенный дистрибутивом способ, чтобы установить файловую систему ZFS.

Наиболее эффективными методами установки ZFS на Linux является использование модуля FUSE или установка отдельного модуля ядра ZFS on Linux.

Вскоре после этого компания Oracle приобрела Sun Microsystems вместе со всеми лицензиями и закрыла код ZFS. Соответственно, дальнейшая свободная разработка была невозможной. Это стало причиной перехода многих ключевых разработчиков в другие компании и создания проекта OpenZFS, в котором придерживаются концепции свободной разработки.

Однако лицензию так и не изменили, так как многие авторскими правами на ZFS обладает достаточно большое количество разработчиков, которые разошлись по других компаниях или разъехались по миру. Соответственно проще было оставить все как есть и использовать методы, предложенные дистрибутивами Linux, нежели добиваться разрешения каждого из разработчиков

На сегодняшний день существует 37 версий файловой системы ZFS, каждая из которых привносит новые улучшения.

Стоит также отметить, что файловая система ZFS активно развивается. Если учесть ее технический потенциал, и добавить к этому постоянное улучшение быстродействия и других функций – можно сделать вывод, что ZFS через несколько лет может стать системой №1 для серверных систем.

Структура файловой системы ZFS

Структура файловой системы ZFS оформлена в виде дерева Меркла, или Хэш-дерева. Для начала, стоит сказать, что дерево хешей используется в блокчейне криптовалют (к примеру, в Bitcoin или Ethereum). Фактически файловая система ZFS являет собой менеджер дисков и LVM в одной упаковке.

То есть, на самом низком уровне несколько физических дисков объединяются в некую виртуальную группу – VDEV (Virtual Device). Таких групп может быть достаточно большое количество. Также на этом уровне обеспечивается избыточность. Чередование происходит внутри каждой группы дисков. Можно выбрать Mirror (аналог RAID 1) или RAID-Z (работает по принципу RAID-5 с несколькими модификациями). Последний тип делится на несколько уровней: RAID-Z1 – использует два диска для хранения данных и один данных четности, RAID-Z2 – использует два диска для хранения данных и два диска для хранения данных четности, и RAID-Z3 – использует два диска для данных пользователя и три диска для данных четности. Выбор типа RAID-Z осуществляется в зависимости от того, что больше нужно пользователю – надежность или производительность.

Затем, все VDEV (группы дисков) объединяются в общий пул. Фактически это LVM, который объединяет в себе несколько RAID массивов.

Поверх всей этой структуры находится сама файловая система с пользовательскими данными.

Структура файловой системы ZFS позволяет динамически добавлять новые группы дисков причем, каждая группа может иметь собственную конфигурацию. На программном уровне она воспринимается как отдельный VDEV независимо от конфигурации.

Возможности файловой системы ZFS

В этой части статьи мы рассмотрим самое интересное – возможности файловой системы ZFS и разберемся в чем ее технологичность и почему же люди так ее любят.

В ZFS разработчики реализовали очень большое количество полезных функций, среди которых наиболее заметны следующие:

1) Сильно увеличен максимальный размер записываемого файла – теперь он составляет 16 эксбибайт;

2) Максимальный размер тома достигает 256 зебибайт (ZiB), количество таких томов может быть любым;

3) ZFS является 128-битной файловой системой – на практике это означает, что она предоставляет емкость 16 миллионов миллионов 32 или 64-битных систем. Это означает, что заполнить такой 128-битный пул практически невозможно. Один из создателей ZFS Джеф Бонвик даже пошутил на этот счет. Он сказал, что для обеспечения работоспособности пула таких размеров нужно больше энергии чем для того, чтобы вскипятить океан;

4) Снапшоты используются для слежения за состоянием системы – в снимке записано оригинальное состояние файловой системы и состояние на данный момент. Если файл удаляется из системы – он также удаляется и из снимка. При записи новой информации – выделяются новые блоки. Главная особенность заключается в том, что никакого дополнительного пространства для снимков не нужно;

5) Проверка целостности данных и автоматическое их исправление – каждый раз, когда записываются новые данные – файловая система создает для них чек-сумму (контрольную сумму). При чтении данных происходит сравнивание чек-суммы. При наличии несоответствий файловая система отмечает ошибку и автоматически пытается ее исправить;

6) Минимум две копии контрольных сумм для метаданных – обычно они находятся в разных местах для обеспечения большей безопасности;

7) Высокая скорость сжатия на лету – тут многое зависит от алгоритма. К примеру, при использовании алгоритма LZ4, ZFS без проблем может показать скорость записи 800 Мб/с на одно ядро, а скорость чтения будет не ниже 4.5 Гб/с.

8) Атомарность – файловая система ZFS является атомарной за счет применения дерева Меркла. Целостность блоков гарантируется транзакционностью файловой системы. Такое решение позволяет не использовать WAL-лог. Минусом такого решения является необходимость знания большого количества команд и утилит;

9) Поддержка пулов – диски можно объединять в группы VDEV, которые в свою очередь можно объединять в пулы;

10) Высочайшая скорость работы – ZFS без проблем может работать с сотней пулов (не дисков, а именно пулов) без потери производительности;

11) Возможность создать легковесную файловую систему – в ZFS манипулирование файловой системой происходит легче нежели в других файловых системах. Все манипуляции больше похожи на работу с каталогами, нежели с файловой системой;

12) Благодаря использованию метода копирования при записи – вы никогда не потеряете файл во время его записи на диск;

13) Автоматически расширяемый канал передачи данных – при подключении дополнительных дисков нужно увеличить пропускную способность, иначе производительность будет снижаться. В ZFS это учли. Поэтому при подключении новых VDEV файловая система автоматически настроит диски и расширит канал передачи данных;

14) Возможность планировать работу с данными – эта возможность становится полезной, к примеру, на серверах. То есть, когда возникает «простой процессора» вы можете использовать эти ресурсы для работы с данными. Таким образом можно более эффективно использовать аппаратные ресурсы вашей машины.

Как видите ZFS это достаточно функциональная файловая система и это мы еще не перечислили мелкие нововведения, которые повышают удобство и функциональность системы. Но самое главное – при помощи файловой системы ZFS вы можете создать огромное, быстрое и расширяемое локальное хранилище.

Недостатки файловой системы ZFS

В предыдущем пункте этой статьи мы рассмотрели главные преимущества файловой системы ZFS. Теперь пришла пора поговорить о ее недостатках, коих тоже хватает:

  1. Не слишком быстрая работа на жестких дисках – из-за своей структуры ZFS требует быстрого случайного доступа, коим не могут похвастаться жесткие диски. Соответственно, при увеличении количества жестких дисков производительность может снижаться. Известны случаи, когда на домашнем компьютере с не слишком быстрым жестким диском производительность настолько падала, что пользоваться компьютером было невыносимо. Соответственно весь потенциал вы сможете получить только на SSD накопителях;
  2. Необходимость в знании большого количества команд и утилит – чтобы получить максимальный эффект вы должны уметь очень хорошо «общаться» с этой файловой системой;
  3. Невозможность изменить структуру дисков в VDEV – вы можете только один раз настроить каждую группу дисков VDEV (количество дисков, избыточность и т.д.). После применения конфигурации внести изменения не получится. В настоящее время уже разрабатывается патч, который сможет исправить эту проблему;
  4. Необходимость в большом количестве оперативной памяти – несмотря на то, что в минимальных требованиях указан минимальный объем ОЗУ в 4ГБ, на практике лучше всего использовать компьютер не ниже 8 ГБ и больше.
  5. Большой уровень фрагментации данных – возникает из-за особенностей работы файловой системы. На сегодняшний день отсутствует нормальный дефрагментатор;
  6. Нельзя уменьшить количество VDEV – исправление этой проблемы планируется в ближайшем будущем;
  7. Отсутствие распределения квот между пользователями – на сегодняшний день этот вопрос решают путем создания файловой системы разных размеров для каждого пользователя;
  8. Нельзя смешивать VDEV и ZPOOL – то есть вы не сможете создать аналог RAID 10 или RAID 01, так как избыточность можно организовать только на нижнем уровне, внутри каждой группы дисков VDEV;
  9. Возможность сильного падения производительности при удалении большого количества данных;
  10. Повышенная нагрузка на процессор при использовании RAID Z – возникает из-за необходимости расчёта данных четности. Такая же ситуация наблюдается и при использовании программного массива RAID 5. Однако RAID 5 обычно используется в хранилищах меньшего размера. Хранилища ZFS обычно очень большие, соответственно железо должно быть очень мощное;

Однако, не смотря на все недостатки, на сегодняшний день не существует файловой системы, которая могла бы столь эффективно работать с большими хранилищами. А учитывая активное развитие ZFS – становится ясной причина ее популярности.

Безопасность данных в ZFS

В файловой системе ZFS большое количество внимания уделили не только работе с большими объемами данных, но и их безопасности. Согласитесь, было бы не очень приятно, если бы данные пула размером в сто дисков вдруг исчезли из-за поломки одного накопителя.

Одним из методов защиты данных стало внедрение RAID Z. Как уже упоминалось выше, эта технология построена на массиве RAID 5. В случае поломки любого накопителя RAID Z позволяет просто вытянуть сломанный жесткий диск и вставить новый. Главное, чтобы он был такого же размера. Все остальное файловая система сделает сама. Пользователь заметит только небольшое снижение производительности, вызванное пересчетом алгоритма и дальнейшим восстановлением данных на новый диск.

Файловая система ZFS автоматически анализирует свое состояние путем сравнения снапшотов. В случае возникновения неполадок ZFS исправит ошибку, а если это будет невозможным – вы увидите сообщение, но все равно сможете восстановить данные. Все дело в методе «copy on write» на котором построена вся ZFS. При перезаписи новые данные записываются в новый блок, не изменяя при этом старые данные.

Эта же технология предотвращает потерю данных вследствие отключения питания во время изменения файла.

SHA-256 — еще одна технология, которая защищает данные от потери. Во время записи файловая система автоматически генерирует контрольную сумму файла и при копировании рассчитывает ее снова. Если при сравнен6ии возникнут различия – ZFS сразу же распознает ошибки.

Применение вышеперечисленных технологий заметно снижает вероятность потери или повреждения данных. Это еще одна причина, почему многие большие проекты обратили свое внимание на файловую систему ZFS.

ZFS и Mac OS

В 2009 году компания Apple объявила о портировании файловой системы ZFS для Mac OS. К сожалению, процесс портирования так и не был завершен и к презентации новой версии Mac OS все упоминания о ZFS были удалены. Причины отказа от ZFS не раскрываются.

Как открыть ZFS накопитель в Windows?

Поскольку на сегодняшний день Windows является наиболее распространённой системой в мире, рано или поздно возникает необходимость открыть ZFS накопитель в Windows. Причин может быть много – начиная от банального переноса файлов и заканчивая более специализированными задачами.

Так или иначе операционная система Windows не поддерживает ZFS из коробки, поскольку нативными файловыми системами Windows являются NTFS и FAT (16, 32).

Но что делать, если нужно открыть ZFS накопитель в Windows?

Существует несколько способов как это сделать.

Первый способ заключается в использовании программы RS Partition Recovery. Программа проста в использовании и позволяет сразу же работать с данными на ZFS диске. Вам даже перезагружать компьютер не нужно.

Но самое главное – вы можете восстановить утерянные данные в случае их пропажи, повреждения файловой структуры диска или его форматирования. Функция восстановления заметно выделяет RS Partition Recovery на фоне конкурентов, так как нередко Windows некорректно работает с файловой системой ZFS. Это может привести к потере важных данных.

Также стоит отметить, RS Partition Recovery поддерживает ВСЕ современные файловые системы, включая Btrfs, Ext2,3,4, XFS, HFS, UFS и многие другие.

Все вышеперечисленные возможности программы RS Partition Recovery делают ее программой «must have» для каждого пользователя.

Второй способ заключается в установке особого драйвера под названием ZFSin.

Этот драйвер добавляет поддержку ZFS на нативном уровне. Но, на деле все не так радужно, как это выглядит на первый взгляд.

Дело в том, что достаточно часто драйвер ZFSin конфликтует с драйверами операционной системы. Но самое печальное то, что почти всегда это приводит к синему экрану смерти Windows или выходу операционной системы из строя.

На додачу, если во время конфликта драйверов ваша ZFS-флэшка будет подключена к системе – очень высокая вероятность повреждения данных или логической структуры накопителя.

Таким образом, вместо поддержки ZFS на Windows вы с большой долей вероятности можете получить нерабочую операционную систему. Это и есть причина, почему первый способ более предпочтительный, нежели второй.

Лучшие альтернативы файловой системе ZFS

Если проанализировав все преимущества и недостатки вы не уверены, что хотите использовать ZFS, или вам не хочется изучать огромное количество команд – вы можете рассмотреть лучшие альтернативы этой файловой системе.

Если говорить об альтернативах для домашнего использования – лучшей альтернативой будет использование Ext4. Да, она медленнее чем ZFS и не обладает многими современными функциями.

Но, в то же время она надежна, проста в обслуживании и обеспечивает производимость достаточную для большинства пользователей.

Если речь идет об использовании на сервере – наилучшей альтернативой смело можно назвать файловую систему Btrfs. Также, как и ZFS она активно развивается, но в то же время она заметно проще в обслуживании и обеспечивает достаточную производительность. Из минусов Btrfs можно назвать еще не слишком зрелую экосистему и сравнительно меньшие объемы обрабатываемых данных (по сравнению с ZFS).

Выбор файловой системы полностью зависит от нужд и умений пользователя. Мы же только показали сильные и слабые стороны файловой системы ZFS и надеемся, что помогли вам сделать правильный выбор.

Часто задаваемые вопросы

Оставить комментарий