ZFS — найкраща файлова система (поки що)
ZFS повинна бути класною, але мене трохи бісить, що вона ніби застрягла в минулому навіть до того, як її визнали крутою і кращою файловою системою. Вона негнучка, їй не вистачає сучасної інтеграції з флеш-пам'яттю, і вона не підтримується безпосередньо більшістю операційних систем. Але я зберігаю всі свої цінні дані на ZFS, оскільки вона забезпечує найкращий рівень захисту для умов SOHO (малий офіс/домашній офіс). І ось чому.

Революція ЗФС. Близько 2006 року
Коли ZFS вперше з'явилася у 2005 році, вона була абсолютно своєчасною, але вона застрягла там досі. Розробники ZFS зробили багато правильних речей, об'єднавши найкращі функції диспетчера томів із файловою системою «зеттабайтного масштабу» в Solaris 10:
- ZFS досягла такого рівня масштабованості, який повинна мати кожна сучасна файлова система практично без обмежень на кількість даних і метаданих і розмір файлів.
- ZFS перевіряє контрольні суми всіх даних і метаданих для виявлення пошкоджень, це абсолютно необхідна функція довгострокового великомасштабного зберігання даних.
- Коли ZFS виявляє помилку, може автоматично відновити дані з дзеркал, блоків парності або альтернативних місць зберігання.
- У систему вбудовано дзеркало і RAID-Z, за рахунок чого численні накопичувачі органічно об'єднуються в один логічний том.
- ZFS має надійні функції для підготовки снапшотів та дзеркал, зокрема можливість покроково оновлювати дані на інших томах.
- Дані можна стискати на льоту, також підтримується дедуплікація.
Коли з'явилася ZFS, це була революційна система порівняно зі старими.диспетчерами томів та файловими системами. І Sun відкрила більшу частину вихідного коду ZFS, дозволивши портувати її на інші операційні системи. Як улюблена іграшка всієї індустрії ZFS швидко з'явилася на Linux і FreeBSD, і навіть Apple почала впроваджувати її як частину файлової системи наступного покоління в Mac OS X! Майбутнє здавалося таким світлим!
З 2007 по 2010-й: ZFS пішла під укіс
Але щось жахливе трапилося з ZFS на шляху до її тріумфу: судові позови, проблеми з ліцензіями та FUD – тактика психологічної маніпуляції від недоброзичливців.
Перші хмари з'явилися в 2007 році, коли NetApp подала позов до Sun на підставі того, що ZFS порушує патенти на WAFL. Sun відповіла зустрічним позовом того ж року — і юридичні позови затяглися. Хоча в ZFS безперечно не було коду NetApp, але механізм копіювання при записі в снапшоти був схожий на WAFL, і деякі з нас в індустрії стурбувалися, що позов NetApp вплине на доступність відкритих вихідних файлів ZFS. Цих ризиків виявилося достатньо для Apple, щоб відмовитися від підтримки ZFS у Mac OS X 10.6 "Snow Leopard" перед випуском цієї ОС.
Ось чудовий блог про ZFS та Apple від Адама Левенталя, який працював над цим проектом у компанії: ZFS: Apple's New Filesystem That Wasn’t
Тоді Sun переживала важкі часи, і Oracle скористалася моментом для покупки компанії. Це посіяло нові сумніви щодо майбутнього ZFS, оскільки Oracle відома як не великий аматор широкої громадської підтримки вільних проектів. А ліцензія CDDL, яку Oracle застосувала до коду ZFS, визнана несумісною з GPLv2, яка використовується в Linux, що унеможливлює використання ZFS у найпопулярнішій у світі ОС для серверів.
Хоча проект OpenSolaris продовжився і після придбання Oracle, а ZFSвключили у FreeBSD, але це було значною мірою поза корпоративного сектора. Звичайно, NexentaStor і GreenBytes допомогли просунути ZFS у корпоративному секторі, але недолік підтримки серверів Sun з боку Oracle теж почав впливати на ситуацію.
Які проблеми у ZFS зараз?
OpenZFS практично не відрізняється від тієї файлової системи, що була десять років тому.
Багато хто продовжує скептично ставитися до дедуплікації, яка вимагає багато дорогої пам'яті. І я справді маю на увазі дорогий: практично кожен ZFS FAQ однозначно вимагає наявності пам'яті лише ECC та мінімум 8 ГБ. На мій власний досвід з FreeNAS, для активного маленького сервера з ZFS підійде 32 ГБ, а це коштує $200-300 навіть за сьогоднішніми цінами.
І ZFS, так і по-справжньому, не пристосувався до флеш-пам'яті, яка зараз використовується повсюдно. Хоча флеш можна використовувати для кешів ZIL та L2ARC, це сумнівна перевага для систем з достатньою кількістю RAM, і ZFS не має справжньої функції гібридного сховища даних. Смішно, що в документації ZFS повсюдно згадуються кілька гігабайт флеш-пам'яті SLC, коли на ринку вже є багатотерабайтні диски 3D NAND. І ніхто не говорить про NVMe, хоча це стандарт для високопродуктивних ПК.
І є питання гнучкості, точніше, її відсутності. Якщо ви створили том ZFS, він практично зафіксований на все життя. Є лише три способи розширити пул зберігання:
- Замінити всі диски в пулі на диски більшої ємності (що класно, але дорого).
- Створити дискову послідовність з іншим набором дисків (що може призвести до незбалансованої продуктивності, надмірності та купи інших потенційно безглуздих помилок).
- Побудувати новий пул та перенести туди набориданих командою zfs send (так роблю я, хоча тут свої хитрощі).
Окрім третього способу, у вас немає можливості зменшити пул ZFS. Гірше того, ви не можете змінити тип захисту даних без перескладання всього пулу, у тому числі додати другий та третій диски парності. FreeNAS сумлінно витрачає величезну кількість часу, намагаючись відмовити новачків від використання RAID-Z1 [1] і скаржиться, якщо вони все одно вибирають таку схему.
Все це може здатися дрібними, незначними причіпками, але в сукупності вони суб'єктивно відправляють ZFS в середні віки після використання Drobo, Synology або сучасних хмарних систем зберігання. З ZFS вам потрібно «купити диски, багато пам'яті, створити RAID-масив і ніколи більше його чіпати», що не зовсім відповідає сучасному використанню систем зберігання [2] .
Які варіанти?
Напевно, я представив ZFS не зовсім у вигідному світлі. Колись вона була революційною, але зараз починає виявляти обмеження та випадати з контексту сучасного світу з флеш-зберіганням даних. То чи є альтернативи?
У Linux кілька пристойних диспетчерів томів та файлових систем, а більшість використовують LVM або MD та ext4. Фахівців за файловими системами дуже порадувала Btrfs, яка поєднує в собі функції диспетчера томів і файлової системи в стилі ZFS, але з додатковою гнучкістю за межами того, на чому шльопнулася ReiserFS. І Btrfs дійсно могла б стати «ZFS для Linux», але нещодавно розробка спіткнулася, після жахливого торішнього бага зі втратою даних з рейдів RAID 5 і 6, і більше про них майже нічого не чути. Але я, як і раніше, думаю, що через п'ять років рекомендуватиму користувачам Linux використовувати Btrfs, особливо з її потужним потенціалом для застосування в контейнерах [3] .
Для Windows компанія Microsoft також збирається викотити власну файлову систему нового покоління ReFS з використанням дерев B+ (схоже на Btrfs), з божевільним масштабуванням та функціями стійкості та захисту даних [4] . У поєднанні з Storage Spaces, Microsoft матиме життєздатну систему зберігання наступного покоління для Windows Server, яка може навіть використовувати SSD і 3D-XPoint як рівень або кеш.
І є ще Apple, яка за чутками кілька разів змінювала систему зберігання, перш ніж зупинитися на APFS, яка вийшла цього року в macOS High Sierra. APFS багато в чому схожа на Btrfs і ReFS, хоча реалізована інакше, з більшою орієнтацією на користувача. Поступаючись в деяких сферах (користувацькі дані не перевіряються контрольною сумою і не підтримується стиснення), APFS - саме та система, яка потрібна для iOS та macOS. І APFS - це останній цвях у труну ідеї "ZFS на Mac OS X".
У кожній із трьох основних ОС тепер є файлова система нового покоління (і диспетчер томів). У Linux є Btrfs, у Windows - ReFS і Storage Spaces, а в macOS є APFS. FreeBSD начебто зберегла відданість ZFS, але це незначна частина ринку. І кожна система корпоративного рівня вже просунулася набагато далі за те, що може робити ZFS та системи корпоративного рівня на базі ZFS від Sun, Nexenta та iXsystems.
Але ZFS, як і раніше, набагато перевершує старі файлові системи для домашнього користувача. Через відсутність перевірки цілісності, надмірності та відновлення після помилок NTFS (Windows), HFS+ (macOS) та ext3/4 (Linux) абсолютно не підходять для довготривалого зберігання даних. І навіть ReFS та APFS через відсутність перевірки цілісності не підходять там, де втрата даних неприйнятна.
Сумно це визнавати, але на 2017 рікрік ZFS - найкраща файлова система для довготривалого широкомасштабного зберігання даних. Хоча іноді і складно з нею працювати (крім FreeBSD, Solaris і спеціалізованих пристроїв), але надійність і перевіреність роблять ZFS єдиним заслуговує на довіру інструментом для зберігання даних за межами корпоративних систем зберігання. Зрештою, надійне зберігання даних – це єдине, що дійсно має робити файлова система. Усі мої важливі дані одразу йдуть у ZFS, від фотографій до музики, від фільмів до офісних файлів. Ще нескоро я довірюся чомусь крім ZFS!
1. Для сучасних великих дисків краще RAID-Z2 і RAID-Z3 з більшою надмірністю. ↑ 2. Дивно, хоча множинні пули та знімні диски добре працюють на ZFS, майже ніхто не говорить про такий варіант використання. Завжди йдеться про один кулі під назвою “tank”, який включає всі диски в системі.↑ 3. Одна річ, якої по-справжньому не вистачає в Btrfs - це флеш підтримки, і особливо гібридних систем зберігання. Але особисто я хотів би, щоб вони спочатку реалізували підтримку RAID-6. ↑ 4. Хоча контрольні суми даних у ReFS, як і раніше, відключені за замовчуванням.↑