Преимущества и недостатки ZFS ZFS кардинально отличается от всех существующих "классических" файловых систем. Об её устройстве можно писать целые книги. Здесь я попытался привести очень краткий список фактов об этой ФС. Какие преимущества она имеет для простого пользователя дома или на работе? * *Полная* замена не только файловой системы, но и менеджеров томов (EVMS, LVM, итд), RAID-массивов (как программных, так и аппаратных), средств кэширования (flashcache, гибридные диски). Удобство, малое затрачиваемое время на администрирование/обслуживание хранилищ. * Прозрачная online проверка *целостности* данных (контрольные суммы, в том числе и криптографические), исправление ошибок на лету (self-healing, если есть избыточность). Классические файловые системы *вообще* не блюдут целостность ваших данных! ZFS имеет сильнейшие средства защиты и обнаружения порчи данных. Гарантированная *консистентность* файловых систем, нет нужды в fsck. * Прозрачная LZ4/Zstandard *компрессия* данных может *существенно* повысить производительность (за счёт меньшего объёма обмениваемых с диском данных и того, что ARC кэш хранит, зачастую, в разы или даже на порядок больше фактических данных в памяти за счёт компрессии) и сэкономить место, лишь незначительно нагружая CPU. * Мгновенно создаваемые снимки (*snapshots*) с возможностью моментального отката до любого состояния ФС. Делайте неизменяемые снимки хоть ежесекундно! Возможность чтения данных из снимков без полного отката ФС. * Моментально создаваемые файловые системы (например, в виде поддиректорий к уже текущим) с независимыми друг от друга настройками и требованиями компрессии, избыточности, контроля целостности, обработке fsync-операций, квотами, резервирования места, свойств имён файлов (чувствительность к регистру, Unicode-нормализация), кэширования, управления доступом, итд. * Возможность резервного копирования/восстановления полностью всех данных с одной или нескольких файловых систем (zfs send/recv) всего одной командой. В том числе, с созданием инкрементальных бэкапов. * Возможность хранить не только файлы/файловые системы, но и просто эмулируемые блочные устройства (*zvol*), без ненужного overhead от файловой системы. * Возможность моментального создания записываемых снимков файловых систем или блочных устройств (*clones*) -- клонов. Например их можно эффективно (не делая полной копии) использовать как основу для образов виртуальных машин, chroot-ов, jail-ов, контейнеров, и т.д.. * Возможность создания *надёжного* RAID5/RAID6 аналога без использования дорогостоящих vendor-lockin-ed контроллеров с батарейками (для предотвращения, так называемого, write-hole). * Сборка/пересборка массивов, как правило, происходит значительнее быстрее чем на обычных RAID-ах, так как передаются только действительно хранимые данные, либо разница между ними, а не весь объём дисков. ZFS можно сравнить с "классическими" ФС (пускай даже совместно с LVM и RAID) как удобство использования DVCS по сравнению с полностью ручным слежением за кодом программ. А что она даст пользователям более серьёзных и крупных систем, в дополнение к предыдущему списку? * При использовании большого количества дисков и большого размера блоков, RAIDZ* будет иметь существенно меньше избыточной информации чем аналогичные уровни RAID5/6. * Поддерживаемые уровни RAID: stripe -- аналог RAID0, mirror -- аналог RAID1, RAIDZ1 -- аналог RAID5, RAIDZ2 -- аналог RAID6, RAIDZ3 -- аналогов не имеющий. * Возможность создания многоуровневых массивов. Например 10 JBOD-ов с 24-мя дисками можно объединить в stripe из 24-х RAIDZ2 массивов по 10 дисков в каждом -- целых две полки полностью могут отказать при сохранении доступности данных. * Возможность использование промежуточного кэша (*L2ARC*) для чтения. А также возможность использования отдельных (SSD)-дисков (*SLOG*) для существенного ускорения fsync-тяжёлых операций (СУБД, почтовые системы). "Жирные" ZFS системы с множеством дисков, L2ARC/SLOG устройствами и достаточным количеством оперативной памяти, как правило, превосходят по производительности остальных. * Очень быстрая запись данных, в том числе параллельных потоков -- почти вся запись на диски происходит последовательно. * Моментальное добавление дисков в массивы на лету и расширение его размера. * Нет практических ограничений на размер файловой системы. * Опциональная дедупликация данных. Но ведь должны быть недостатки? Безусловно! * Это сложная система тесно интегрирующаяся в уровень как блочных устройств, так и файловых систем. Поэтому ZFS до сих пор отсутствует в => пригодном для промышленного использования виде в Linux и пока это прерогатива Solaris и BSD систем. * ZFS имеет огромное количество настроек -- производительность "из коробки" может в разы (или даже порядки) отличаться. * ZFS сильно проседает по производительности при малом доступном объёме оперативной памяти. Это "дорогая" система, не пригодная для маломощных компьютеров. Однако это *не* означает что ZFS более медленная -- во многих случаях она будет работать быстрее остальных! * ZFS может потребовать больше свободного места на дисках (или больше дисков) для: уменьшения негативного эффекта фрагментации данных; уменьшения избыточных данных на RAIDZ-массивах; уменьшения времени пересборки массивов. Это дорогая система! * Вы не можете уменьшить размер массивов или убрать диски из stripe/RAIDZ, а также добавить диски в vdev. * Использование аппаратных RAID-контроллеров или умных HBA (например с кэшем), как правило, будет только вредить, но никогда не помогать. Не смотря на все эти недостатки и дороговизну, даже домашнему пользователю преимущества удобства работы, создания бэкапов и мгновенных снимков, контроль целостности данных должны перевесить. Для удобства прикидывания конфигураций массивов (производительность чтения/записи, IOPS чтения/записи, полезного места), привожу таблицу из => https://www.michaelwlucas.com/os/fmzfs FreeBSD Mastery: ZFS +-------------------------------------------------------------------------------------------+ |Disks|Config| ReadIOPS | WriteIOPS | ReadMB/s | WriteMB/s | Usable Space | Fault Tolerance | |-----+------+----------+-----------+----------+-----------+--------------+-----------------| |1 |Stripe| 250 | 250 | 100 | 100 | 1 TB (100%) | none | +-------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------+ |Disks|Config |ReadIOPS|WriteIOPS|ReadMB/s|WriteMB/s|Usable Space|Fault Tolerance | |-----+-----------------+--------+---------+--------+---------+------------+----------------| |2 |2 x Stripe |500 |500 |200 |200 |2 TB (100%) |none | |-----+-----------------+--------+---------+--------+---------+------------+----------------| |2 |1 x 2 disk Mirror|500 |250 |200 |100 |1 TB (50%) |1 | +-------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------+ |Disks|Config |ReadIOPS|WriteIOPS|ReadMB/s|WriteMB/s|Usable Space|Fault Tolerance| |-----+------------------+--------+---------+--------+---------+------------+---------------| |3 |1 x 3 disk Mirror |750 |250 |300 |100 |1 TB (33%) |2 | |-----+------------------+--------+---------+--------+---------+------------+---------------| |3 |1 x 3 disk RAID-Z1|250 |250 |200 |200 |2 TB (66%) |1 | +-------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------+ |Disks|Config |ReadIOPS|WriteIOPS|ReadMB/s|WriteMB/s|Usable Space|Fault Tolerance| |-----+------------------+--------+---------+--------+---------+------------+---------------| |4 |2 x 2 disk Mirror |1000 |500 |400 |200 |2 TB (50%) |2 (1/VDEV) | |-----+------------------+--------+---------+--------+---------+------------+---------------| |4 |1 x 4 disk RAID-Z1|250 |250 |300 |300 |3 TB (75%) |1 | |-----+------------------+--------+---------+--------+---------+------------+---------------| |4 |1 x 4 disk RAID-Z2|250 |250 |200 |200 |2 TB (50%) |2 | |-----+------------------+--------+---------+--------+---------+------------+---------------| |5 |1 x 5 disk RAID-Z1|250 |250 |400 |400 |4 TB (80%) |1 | |-----+------------------+--------+---------+--------+---------+------------+---------------| |5 |1 x 5 disk RAID-Z2|250 |250 |300 |300 |3 TB (60%) |2 | |-----+------------------+--------+---------+--------+---------+------------+---------------| |5 |1 x 5 disk RAID-Z3|250 |250 |200 |200 |2 TB (40%) |3 | +-------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------+ |Disks|Config |ReadIOPS|WriteIOPS|ReadMB/s|WriteMB/s|Usable Space|Fault Tolerance| |-----+-------------------+--------+---------+--------+---------+------------+---------------| |6 |3 x 2 disk Mirror |1500 |750 |600 |300 |3 TB (50%) |3 (1/VDEV) | |-----+-------------------+--------+---------+--------+---------+------------+---------------| |6 |2 x 3 disk Mirror |1500 |500 |600 |200 |2 TB (33%) |4 (2/VDEV) | |-----+-------------------+--------+---------+--------+---------+------------+---------------| |6 |1 x 6 disk RAID-Z1 |250 |250 |500 |500 |5 TB (83%) |1 | |-----+-------------------+--------+---------+--------+---------+------------+---------------| |6 |1 x 6 disk RAID-Z2 |250 |250 |400 |400 |4 TB (66%) |2 | |-----+-------------------+--------+---------+--------+---------+------------+---------------| |6 |1 x 6 disk RAID-Z3 |250 |250 |300 |300 |3 TB (50%) |3 | |-----+-------------------+--------+---------+--------+---------+------------+---------------| |12 |6 x 2 disk Mirror |3000 |1500 |1200 |600 |6 TB (50%) |6 (1/VDEV) | |-----+-------------------+--------+---------+--------+---------+------------+---------------| |12 |4 x 3 disk Mirror |3000 |1000 |1200 |400 |4 TB (33%) |8 (2/VDEV) | |-----+-------------------+--------+---------+--------+---------+------------+---------------| |12 |1 x 12 disk RAID-Z1|250 |250 |1100 |1100 |11 TB (92%) |1 | |-----+-------------------+--------+---------+--------+---------+------------+---------------| |12 |2 x 6 disk RAID-Z1 |500 |500 |1000 |1000 |10 TB (83%) |2 (1/VDEV) | |-----+-------------------+--------+---------+--------+---------+------------+---------------| |12 |3 x 4 disk RAID-Z1 |750 |750 |900 |900 |9 TB (75%) |3 (1/VDEV) | |-----+-------------------+--------+---------+--------+---------+------------+---------------| |12 |1 x 12-disk RAID-Z2|250 |250 |1000 |1000 |10 TB (83%) |2 | |-----+-------------------+--------+---------+--------+---------+------------+---------------| |12 |2 x 6-disk RAID-Z2 |500 |500 |800 |800 |8 TB (66%) |4 (2/VDEV) | |-----+-------------------+--------+---------+--------+---------+------------+---------------| |12 |1 x 12-disk RAID-Z3|250 |250 |900 |900 |9 TB (75%) |3 | |-----+-------------------+--------+---------+--------+---------+------------+---------------| |12 |2 x 6-disk RAID-Z3 |500 |500 |600 |600 |6TB (50%) |6 (3/VDEV) | +--------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------+ |Disks|Config |ReadIOPS|WriteIOPS|ReadMB/s|WriteMB/s|Usable Space|Fault Tolerance| |-----+-------------------+--------+---------+--------+---------+------------+---------------| |36 |18 x 2 disk Mirror |9000 |4500 |3600 |1800 |18 TB (50%) |18 (1/VDEV) | |-----+-------------------+--------+---------+--------+---------+------------+---------------| |36 |12 x 3 disk Mirror |9000 |3000 |3600 |1200 |12 TB (33%) |24 (2/VDEV) | |-----+-------------------+--------+---------+--------+---------+------------+---------------| |36 |1 x 36 disk RAID-Z2|250 |250 |3400 |3400 |34 TB (94%) |2 | |-----+-------------------+--------+---------+--------+---------+------------+---------------| |36 |2 x 18 disk RAID-Z2|500 |500 |3200 |3200 |32 TB (89%) |4 (2/VDEV) | |-----+-------------------+--------+---------+--------+---------+------------+---------------| |36 |4 x 9 disk RAID-Z2 |1000 |1000 |2800 |2800 |28 TB (78%) |8 (2/VDEV) | |-----+-------------------+--------+---------+--------+---------+------------+---------------| |36 |6 x 6 disk RAID-Z2 |1500 |1500 |2400 |2400 |24 TB (66%) |12 (2/VDEV) | +--------------------------------------------------------------------------------------------+