ZFS должна быть классной, но меня немного бесит, что она словно застряла в прошлом — даже до того, как её признали крутой и лучшей файловой системой. Она негибкая, ей не хватает современной интеграции с флеш-памятью и она не поддерживается напрямую большинством операционных систем. Но я храню все свои ценные данные на ZFS, поскольку именно она обеспечивает наилучший уровень защиты для условий SOHO (малый офис/домашний офис). И вот почему.

image
Первая директива систем хранения: не возвращать неправильные данные!

Революция ZFS. Около 2006 года


В своих статьях о FreeNAS я настойчиво повторял, что «ZFS — самая лучшая файловая система», но если вы посмотрите мои сообщения в социальных медиа, то станет ясно, что мне она на самом деле не совсем нравится. Я пришёл к выводу, что такое противоречие требует объяснения и контекста, так что рискнём потревожить фанатов ZFS и сделаем это.

Когда ZFS впервые появилась в 2005 году, она была абсолютно своевременной, но она застряла там до сих пор. Разработчики ZFS сделали много правильных вещей, объединив лучшие функции диспетчера томов с файловой системой «зеттабайтного масштаба» в Solaris 10:

  • ZFS достигла такого уровня масштабируемости, который должна иметь каждая современная файловая система, практически без ограничений на количество данных и метаданных и размер файлов.
  • ZFS проверяет контрольные суммы всех данных и метаданных для обнаружения повреждёний, это совершенно необходимая функция для долговременного крупномасштабного хранения данных.
  • Когда ZFS выявляет ошибку, то может автоматически восстановить данные с зеркал, блоков чётности или альтернативных мест хранения.
  • В систему встроены зеркалирование и RAID-Z, за счёт чего многочисленные накопители органично объединяются в один логический том.
  • ZFS имеет надёжные функции для подготовки снапшотов и зеркал, в том числе возможность пошагово обновлять данные на других томах.
  • Данные можно сжимать на лету, также поддерживается дедупликация.

Когда появилась ZFS, это была революционная система, по сравнению со старыми диспетчерами томов и файловыми системами. И Sun открыла бoльшую часть исходного кода 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 из-за отсутствия проверки целостности не подходят там, где потеря данных неприемлема.

Позиция автора: используйте ZFS (пока)


Грустно это признавать, но на 2017 год ZFS — лучшая файловая система для долговременного широкомасштабного хранения данных. Хотя иногда и сложно с ней работать (кроме FreeBSD, Solaris и специализированных устройств), но надёжность и проверенность делают ZFS единственным заслуживающим доверия инструментом для хранения данных за пределами корпоративных систем хранения. В конце концов, надёжное хранение данных — это единственное, что действительно должна делать файловая система. Все мои важные данные сразу идут в ZFS, от фотографий до музыки, от фильмов до офисных файлов. Ещё нескоро я доверюсь чему-нибудь кроме ZFS!

Сноски


1. Для современных больших дисков предпочтительнее RAID-Z2 и RAID-Z3 с большей избыточностью.^
2. Странно, хотя множественные пулы и съёмные диски отлично работают на ZFS, почти никто не говорит о таком варианте использования. Всегда речь идёт об одном пуле под названием “tank”, который включает в себя все диски в системе.^
3. Одна вещь, которой по-настоящему не хватает в Btrfs — это поддержки флеш, и особенно гибридных систем хранения. Но лично я бы предпочёл, чтобы они сначала реализовали поддержку RAID-6.^
4. Хотя контрольные суммы для данных в ReFS по-прежнему отключены по умолчанию.^
Поделиться с друзьями
-->

Комментарии (66)


  1. ildarz
    01.08.2017 10:33
    +3

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

    На этот счет все было сказано еще в 1912 году — "Узок круг этих революционеров. Страшно далеки они от народа."


    1. akardapolov
      01.08.2017 14:02

      Там есть продолжение:

      Но дело их не пропало. Декабристы разбудили Герцена. Герцен начал революционную агитацию

      ZFS отличная система для хранения важных, нечастно изменяемых данных. Профиль нагрузки: записал один раз, читай всегда. Файловая система для ОС, ПО, backup-ы, файлопомойки.


      1. iskatel
        02.08.2017 02:06

        «для хранения важных, нечастно изменяемых данных»

        А чем плохо для часто изменяемых?
        ну кроме некоторого падения производительности и трэша при заполнении pool под завязку?


        1. akardapolov
          02.08.2017 09:50

          >> А чем плохо для часто изменяемых?
          >> ну кроме некоторого падения производительности и трэша при заполнении pool под завязку?

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


  1. apro
    01.08.2017 10:49

    Из-за отсутствия проверки целостности, избыточности и восстановления после ошибок ext3/4 (Linux) абсолютно не подходят

    В ext4 есть контрольные суммы для метаданных, и она же журналируемая поэтому конечно есть восстановление после ошибок.


    1. iskatel
      02.08.2017 01:53

      именно! контрольные суммы — только _для метаданных_, опционально (и только в относительно свежих версиях), точно так же сделано в xfs (тоже в свежих).
      контрольных сумм для просто данных — нет ни там, ни там.
      В mdadm точно так же — нет.

      Linux software RAID is not going to protect you from bit corruption and silent data corruption is a well known issue with it. In fact, if the kernel is able to read the data from one disk it would never know that it is bad. The RAID only kicks in if there is an I/O error when reading the data.


  1. Loki3000
    01.08.2017 11:07

    А не слишком ли жирно «минимум 8Гб» для домашней файлопомойки? Я понимаю что энтузиастов много, но все же для домашних задач, как правило, хватает и более скромного железа.


    1. Dmitry_5
      01.08.2017 11:48
      -1

      У меня 2 гб и ntfs. Обычно память пуста, где-то 1.5 гб выделено под файловый буфер (видно по графику копирования с ssd на nas)


    1. lobzanoff
      01.08.2017 12:21

      У меня на работе среди прочего есть NAS Thecus, в последней прошивке появилась ZFS и, поддаваясь на сладкие речи коллеги Linux-гуру, решил поставить ее. А памяти то там был 1 гиг, кто ж знал… Таких тормозов, а часто и вислова, я не видал давно… Добавления памяти до 4 гиг не помогло. Мало того, что все тормозило, так и некоторые файлы и папки заблокировались, так что копирование с него данных для последующего снесения нафиг и переформатирования под ext4 привело к некоторой потере. Благо это была файлопомойка и хранилище некритичных и дублируемых в другом месте бэкапов, так что не очень расстроился. Теперь вот стоит ext4 и 2 гига памяти. Все летает, тьфу тьфу тьфу


    1. man55
      01.08.2017 22:06
      +3

      NAS4FREE на плате Intel D525MW, Atom525, 2*1G памяти, два диска 5400 оборотов, зеркало на zfs.
      Сценарий использования — бэкапы, файлопомойка, торренты скрещенные с miniDLNA сервером для телека.
      Никаких зависонов и вообще проблем, аптайм месяцами.
      Были глюки и отвалы при просмотре тяжелых фильмов, долго искал причины и ругался на zfs, оказалось тупо битая память


    1. BrSlava
      01.08.2017 22:06
      +2

      Домашний NAS 4Гб памяти, винт 2х2Тб ZFS — и все хорошо


    1. iskatel
      02.08.2017 01:49
      +1

      «минимум 8Гб» — на самом деле с запасом, просто с 8 работает быстрее. Минимум это при применении дедупликации, совершенно ненужной дома.
      8Gb сегодня стоят недорого, особенно если вспомнить цену нескольких дисков в тот NAS и самого NAS.


    1. Alexsandr_SE
      02.08.2017 07:24

      Я на опыты создал на на стареньком 2-х ядерном ксеоне рейд zfs с дедупликацией (около 400гиг доступно) и 8 гигабайт памяти. Памяти мало. при некоторых операциях записи я получаю скорость работы около 1,5мб/с. Скорость чтения при таких ситуациях всего несколько десятков кб/с. Процессор не нагружен. Эта файловая система как по мне может работать адекватно только на бекапы. Но стоит её расшевелить изменениями данных и минимальная скорость гарантирована.


      1. iskatel
        02.08.2017 20:58
        +1

        «создал на на стареньком 2-х ядерном ксеоне рейд zfs с _дедупликацией_» «и 8 гигабайт памяти» ну и кто вам доктор?


        1. Alexsandr_SE
          02.08.2017 22:01

          Для файлового хранилища более чем система. Для нагруженного хранилища zfs не годится. Сколько этой штуке понадобится памяти при 12 терабайтах и дедупликации? При любых настройках, включая работу без сжатия и дедупликации я не смог выжать скорости записи более 70мб и 60мб на чтение.
          Сами накопители в конфигурации рейда (аналог рейд 10) способны выдать около 170мб/с.


          1. iskatel
            03.08.2017 02:36

            но не для включенной дедупликации.

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


            1. Alexsandr_SE
              03.08.2017 10:05

              Подключение через iSCSI, гигабитная сеть. Скорость чтения/записи больше всего по графику напоминают зубья пилы. Скорость небольшая (40мб/с), потом идет рост вверх, доходит пика (80-90мб/с) и опять падает до 40. Какое-то время держится и опять все с начала. Синхронная запись/чтение вообще заваливает чтение до нескольких мб/с в хороших условиях, в плохих там кб/с. В начале думал свич, но такое поведение получилось только под управлением NAS4Fre. К содалению не проверял на других файловых системах. Сама система старые серверок с 6-ю дисками.


              1. iskatel
                03.08.2017 18:58

                Сначала шла речь про дедупликацию, теперь появились iSCSI.
                Эти вещи очень любят жрать ресурсы.

                " Синхронная запись/чтение " это отдельная тема.

                В общем, Ваши тесты — подтверждение тезиса, что включая «все фичи по максимуму», можно положить всё.


                1. Alexsandr_SE
                  03.08.2017 20:19

                  Сейчас работает с дедупликацией. Объема памяти если верить тому, что есть в инете более чем достаточно. На практике маловато, но это машина для бекапа с ограниченным объемом, ночью времени хватает. Но скорость как писал при записи может достигать около 10мб/с или меньше, а синхронное чтение десятки кб/с.
                  Но и без дедупликации скорость не конек данной системы. К сравнению виндовс сервер с не страдает проблемой скорости. Может там фич меньше просто :)


                  1. iskatel
                    04.08.2017 01:45

                    «К сравнению виндовс сервер с не страдает проблемой скорости. Может там фич меньше просто :)»

                    Там тупо нет многих фич или же они сделаны примитивно.
                    Например, бэкап всего раздела на «живой», работающей NTFS — это практически полное замирание работы разделов, которые бэкапятся.
                    Сравните с Zfs snapshot.

                    «Сейчас работает с дедупликацией.… синхронное чтение десятки кб/с.»

                    Подозреваю, таки мало памяти.


                    1. Alexsandr_SE
                      04.08.2017 09:33

                      Zfs snapshot все же фича, а не просто копирование.
                      Я тоже думаю, что все упирается в память, но было написано мол 8 гигабайт хватает для 1 терабайта на носителе. По факту это оказалось не так. Файловый сервер скажем на zfs я бы не собирал. Может если будет когда возможность погонять машину с большим кол-ос памяти и посмотрю, но в стесненных условиях такая файловая система работает не лучшим образом.


                      1. gmelikov
                        04.08.2017 09:45

                        Если хотите использовать дедупликацию, то рекомендую изучить требования к ОЗУ более подробно, там нет стандартного размера на 1тб, там есть примерно 320 байт ОЗУ на каждый блок (для dataset это recordsize).

                        Рекомендую прочитать этот комментарий, давал в нём методы точного расчёта требований.

                        Также добавлю, что ОЗУ требуется для записи, на чтение дедупликация не влияет (только если вы записываете параллельно с чтением, и при этом у вас кончилась ОЗУ, тогда для каждой операции записи будет много случайных IO чтения на диск).


    1. ICELedyanoj
      02.08.2017 11:58

      Домашний бэкап-сервер. FreeNas на HP DL G6 с 12 х 3ТБ хранилищем.
      72Gb RAM.
      При активной записи в хранилище можно заметить, как память забивается буквально на глазах. Кеш ZFS будет отъедать всю свободную память — к гадалке не ходи.


      1. AntiHelper
        02.08.2017 20:04
        +1

        У Вас домашний датацентр???


        1. CherryPah
          07.08.2017 22:34
          +1

          с нынешними реалиями цен взять бу брендовое решение становится дешевле чем новую китайскую SOHO железяку.
          Самой дорогой частью будут винты


          1. ICELedyanoj
            08.08.2017 09:49

            20x3Tb Hitachi 7K2000, отработавших, судя по смарту, около 3-х лет в каком-то датацентре (счётчик включений был 20-30 за 3 года) обошлись чуть больше 1К у.е.
            12 штук пошли в работу, 8 лежат как запасные. Вся железяка без винтов обошлась чуть больше 1.5К, вместе.
            На мой взгляд — достаточно недорого, свои данные я ценю гораздо выше.


    1. a0fs
      03.08.2017 00:51

      В Linux нет, в FreeBSD прекрасно живёт на 2. Проблема с Linux — ZFS любит память ( в том смысле как любит её база данных), и дерётся за неё с системой, при этом не достаточно оперативно её освобождая. А интеграция этой ФС с Linux через такую-то матерь только добавляет эпичности сюжету. Когда ZFS вписана в систему, всё становится несколько проще.


      1. poxvuibr
        03.08.2017 09:54

        А интеграция этой ФС с Linux через такую-то матерь только добавляет эпичности сюжету.

        Насколько я понимаю, ZFS on Linux — такой же модуль ядра, как ext4 и другие.


        1. a0fs
          03.08.2017 20:08

          Почти. Там имеет место целый слой абстракции, делающий среду работы данного модуля слегка притянутой к Solaris. В результате на единицу массы там слишком много абстракций, а это чревато боком. К чести ZFS следует признать, что даже в этих условиях она работает отлично. Но нужно иметь в виду жадный до оперативы ARC, и выкручивать его максимумы так, чтобы оставалось приложениям и ещё немного для манёвров со стороны ОС.


          1. BerliozNSK
            11.08.2017 08:18

            Я не много не понимаю, буду рад за разъяснение:

            Во FreeBSD zfs.ko тянет за собой в зависимостях opensolaris.ko. Для чего? Не для того же?


  1. BerliozNSK
    01.08.2017 11:13
    +3

    Соглашусь с автором, что у ZFS есть проблемы.

    Но если посмотреть на СХД типа VNX или Celerra, то обнаруживается, что ZFS может больше, хотя та же Celerra стоила в 2010-м около четырех миллионов рублей. В тех задачах, в которых я использовал VNX и Celerra, мне не хватало на ZFS разве только что автотиринга, да Fibre Channel, хотя последнее решаемо, в принципе.

    А в случае варианта с «бюджетной СХД» (компьютер в 3U корпусе и с ECC памятью), которая отдает LUN по iSCSI в ESXi, да файлы по SMB — ZFS это «то, что доктор прописал»

    P.S. Сугубо личное мнение


  1. hdfan2
    01.08.2017 13:40
    +1

    которая может даже использовать SSD и 3D-XPoint как уровень или кэш.

    Не совсем понятно, что имеется в виду под «уровнем». В оригинале «tier». Подозреваю (хотя и могу ошибаться), что имеется в виду «которая может даже использовать SSD и 3D-XPoint либо для хранения данных, либо в качестве кэша».


  1. myemuk
    01.08.2017 13:50

    Полгода назад поставил на ноутбуке btrfs. Или я ее неправильно настроил или наткнулся на баг, но лучше раздел не заполнять полностью. Даже после удаления файлов, свободного места больше не становится.

    В первый раз я потратил много времени на очистку. Пришлось внешний хард форматировать в btrfs, добавлять в разделу и запускать команду balance. А после удалять его из набора, чтобы данные опять перекочевали обратно.

    Возможно на серверах файловая система btrfs хороша, но на рабочих лошадках пока рановато ставить. Или постоянно проверять «реальное» свободное место командой «btrfs fi sh» В ближайшее время опять вернусь на ext4


    1. iborzenkov
      01.08.2017 14:08

      Четыре года назад поставил btrfs на домашний сервер, правда тогда убунта еще на корень ее ставить не умела без бубна, так и работает — корень на reiser, а /data на btrfs
      А два года назад на домашний, уже на корень.
      На ноуте с покупки была ext4 так что не трогал.
      Вроде с местом все ок показывает, и когда сервер забился на 100% проблем не было, просто потер и все ок.


    1. Temtaime
      02.08.2017 02:40

      Не имел проблем после полного(до последнего байта) заполнения btrfs, зато имел другие.
      После удаления диска из raid 1 и добавления нового в процессе апгрейда — система перестала монтироваться. Попытки заставить её монтироваться всеми способами из мануалов, включая различные методы восстановления привели к потере части файлов. Смог спасти остальное только благодаря тому, что удалённый диск смонтировался в degraded состоянии.
      С тех пор — больше не связываюсь с ней, перешёл на zfs. С контейнерами она, кстати, отлично дружит в связке с proxmox ve.


      1. mpolk
        02.08.2017 16:28

        А я, напротив, успешно использую btrfs в продакшне (в виде raid1). Как для системных томов физических серверов, так и в качестве хранилища данных netflow. В последнем случае хранилище представляет собой сборище довольно разнокалиберных потребительских (неэнтерпрайзовых) винчестеров, и именно этот вариант использования доставляет наибольшее удовольствие. Дешевые диски по мере износа тихо сыпятся — это заметно, только если глядеть на счетчики ошибок. Время от времени негромко умирают. Данные при этом не теряются, нетфлоу собирается бесперебойно. Я не спеша заменяю умерший винчестер, и жизнь продолжается. В общем RAID в своем исконном первоначальном смысле (Redundant Array of INEXPENSIVE Disks). По сравнению с тем, как тот же процесс выглядел, когда я пытался осуществлять его на классическом линуксовом raid-е — просто небо и земля. На mdraid-е были крики, обмороки, деградировавшие массивы, изредка потеря данных и т.п.

        RAID выше первого я не пробовал (боюсь). RAID1 работает несколько лет на нескольких серверах без каких-либо проблем на Ubuntu 14.04 (ядра 3.13, 3.19 и 4.4 от Убунту) и Oracle Linux UEK3/4 (ядра 3.8 и 4.1 с многочисленными Оракловскими патчами и бэкпортами). Попытка сделать то же самое на ядре 3.10 в Centos 7 привела к довольно скорому развалу массива. Кое-как удалось собрать его и срочно мигрировать на mdraid + ext4. В Центосовском ядре btrfs, насколько я понимаю, какой-то недоделанный.


  1. Shatun
    01.08.2017 14:25

    Для Windows компания Microsoft тоже собирается выкатить собственную файловую систему нового поколения ReFS с использованием деревьев B+ (похоже на Btrfs), с сумасшедшим масштабированием и функциями стойкости и защиты данных

    ReFS уже давно есть в серверных редакциях ПО(по-моему с вин сервер 2012), уже есть и в вин10, не уверен правда мб пока только в инсайдерских сборках.


    1. erty
      01.08.2017 15:10

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


    1. VitalKoshalew
      01.08.2017 15:37

      Тут ошибка перевода: в оригинале "...Microsoft is busy rolling out their own next-generation filesystem. ReFS uses B+ trees...".


  1. svanichkin
    01.08.2017 15:53

    APFS хуже? Ну, судя по заголовку?


    1. akzhan
      02.08.2017 20:59

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


      Для обычного домашнего компьютера это ОК.


      Да и вообще, почему этим должна заниматься файловая система?


      P.S.: И таки она вышла только для iOS, для MacOS выйдет чуть позже, пока в бетах.


      1. svanichkin
        02.08.2017 23:08

        Как это нет защиты от повреждения? https://ru.wikipedia.org/wiki/Apple_File_System

        2 Особенности
        2.1 Снимки файловой системы
        2.2 Шифрование
        2.3 Целостность данных
        2.4 Защита от сбоев


        1. akzhan
          03.08.2017 12:33

          APFS не поддерживает контрольных сумм для данных, я слишком общо выразился.


          Есть прекрасный обзор APFS с точки зрения разработчика ZFS.


  1. VitalKoshalew
    01.08.2017 17:30
    +2

    Называть клон NetApp-овского WAFL/ONTAP «революционным», мне кажется, не совсем корректно. Всё же стоит отдать дань уважения тем инженерам в NetApp, которые это всё изначально придумали. Как только истёк срок действия большинства патентов NetApp, подобные технологии стали разрабатывать все, кому не лень, о чём и говорится в статье.

    Мне кажется, что с приходом SSD, актуальность WAFL-подобных файловых систем теряется: нет особой нужды гнаться за оптимизацией скорости случайной записи (ухудшая скорость линейного чтения за счёт фрагментации), когда можно использовать SSD для тиринга и кэша записи. Опять же, внутри всех без исключения SSD всё равно свой WAFL и прямого доступа к ячейкам/строкам SSD не предоставляет.

    Подобная ситуация уже была в индустрии, когда выдающаяся по своим характеристикам HPFS от IBM на основе нормализованных двоичных деревьев с распределённым хранением метаданных канула в лету, как только оперативной памяти стало достаточно, чтобы закэшировать все «примитивные» табличные структуры FAT/NTFS.

    Кроме оптимизации случайной записи, плюсами WAFL/ONTAP, и последующих клонов (в т.ч. ZFS) были:

    • Сквозные контрольные суммы — в том или ином виде это будет внедрено со временем везде, о чём автор и упоминает. Прямой связи с WAFL-подобными системами у этой технологии нет — в оригинале NetApp заказывала SAS-диски с нестандартным размером сектора, на массовом рынке это невозможно, так что приходится выкручиваться, кто как может, в том числе и в не-WAFL-подобных системах.
    • RAID-DP благополучно превратился в вариации на тему RAID-6 (RAID-Z2 etc) и стал уже стандартом de facto. Опять же, WAFL-подобное размещение для этого не обязательно.
    • Снэпшоты реализованы на уровне систем виртуализации, а поскольку почти все нагрузки на сегодняшний день виртуализованы, реализация этого механизма на уровне дисковой подсистемы не так привлекательна, как раньше.

    Как видно, основные «killer features» либо потеряли свою актуальность, либо реализуются вне зависимости от типа размещения данных. Но, безусловно, инженерам-первооткрывателям стоит сказать «Спасибо!», вот только большинство открытий было сделано в стенах NetApp, а не Sun.

    [Disclaimer: за 100% историческую достоверность фактов не ручаюсь, писал по памяти. Если что неверно в описании, кто чей клон — пожалуйста представьте свою версию в комментариях, помню в своё время было много споров на этот счёт.].


    1. BasilioCat
      01.08.2017 22:43
      +2

      Надо отдать должное NetApp — у них получился действительно инженерный шедевр, от железа до метрик. Вот только стоимость их решений доступна лишь очень жирным котам. Революционность ZFS в том, что Sun взяли годные идеи NetApp, и переписали их, избегая запатентованных технологий, и открыли исходники. Как-то давно примерно так поступил Торвальдс и GNU.
      Так что скажем спасибо IBM за многомилионные мейнфреймы, благодаря которым у каждого есть дешевые компьютеры, скажем спасибо NetApp, что их разработки, окупившись в энтерпрайзе, пошли «в народ», и скажем «спасибо» Ораклу, похоронившему дальнейшую разработку ZFS, благодаря чему мы застряли в прошлом десятилетии с файловыми системами.

      P.S.: Снапшоты при помощи систем виртуализации для файлового хранилища — это как-то странно. У решений поверх стандартных файловых систем они дадут значительно больший оверхед, у VMWare они интегрированы с файловой системой (=тот же подход, что у wafl/zfs)


      1. sabbak
        02.08.2017 16:27
        -1

        VMware vmfs нет снапшотов, о какой интеграции речь/


    1. spqr_voldi
      02.08.2017 09:52

      Также в плюс репликация и создание клонов.


      1. VitalKoshalew
        02.08.2017 15:23

        И клоны средствами виртуализации делаются, хоть и не всегда так удобно, как в NetApp. Репликация в наше время есть у всех солидных СХД и даже просто в Windows (Storage) Server 2016, в Hyper-V она с 2012 года. Уже прогресс дальше пошёл — в сторону гиперконвергентных систем.

        Но, для своего времени — да, это тоже были потрясающие инновации.


  1. DaylightIsBurning
    01.08.2017 19:55

    Мне кажется, следующим логичным развитием была бы унификация не только менеджера томов и ФС, но еще и менеджера распределённой ФС с многоуровневым tiering-ом и адаптивной репликацией. На данный момент что-то похожее пилят в lizardfs, есть коммерческие реализации.


  1. vsb
    01.08.2017 19:57
    +1

    Есть новая интересная система для Linux: bcachefs. Она пока в процессе разработки но в целом уже достаточно стабильна для «поиграться» или некритичных данных.


  1. sanrega
    02.08.2017 04:44

    Действительно ли важно наличие ЕСС-памяти для использования ZFS?


    1. vsb
      02.08.2017 09:26
      +1

      Наличие ECC-памяти важно для использования любой ФС. Если бит в памяти перевернётся и вы этого не заметите, то этот бит сохранится на диск, например испортив вам ваши бэкапы.


      1. Alexsandr_SE
        02.08.2017 09:54

        Как показывают сотни рабочих ПК регистровая память все же не настолько критична. У кучи контор сервера на обычном ПК и работают пока не разрушаются диски.


        1. akzhan
          02.08.2017 21:04

          я таких крупных контор не встречал )


      1. VitalKoshalew
        03.08.2017 00:30
        +3

        А если перевернутся два бита, вы получите BSoD/kernel panic/etc. Часто вы видите такое на исправной памяти? Почему вероятность одиночного bit flip настолько выше двойного?

        При этом я не агитирую за отказ от ECC — себестоимость девятого чипа памяти уже давно минимально влияет на цену серверной RAM. Есть — и ладно, всем спокойней, этакое плацебо.

        Суть end-to-end checksum в ONTAP, ZFS и т.д. как раз в том, чтобы отследить ошибки на любом этапе, ведь кроме основного ОЗУ те же биты проходят через множество других подсистем, в которых информация тоже может повредиться.

        Что касается именно связки ECC+ZFS, вот довольно интересная, на мой взгляд, статья: Will ZFS and non-ECC RAM kill your data?


        1. ildarz
          03.08.2017 01:26
          -1

          Почему вероятность одиночного bit flip настолько выше двойного?

          Потому что гладиолус теорема умножения вероятностей.


        1. vsb
          09.08.2017 06:31

          > А если перевернутся два бита, вы получите BSoD/kernel panic/etc. Часто вы видите такое на исправной памяти? Почему вероятность одиночного bit flip настолько выше двойного?

          Почему именно два? Можно и от одного бита его получить. Редки видим, потому что эти случаи редки в принципе и потому, что битов, которые могут вызвать BSOD довольно мало.

          > Суть end-to-end checksum в ONTAP, ZFS и т.д. как раз в том, чтобы отследить ошибки на любом этапе, ведь кроме основного ОЗУ те же биты проходят через множество других подсистем, в которых информация тоже может повредиться.

          Checksum тут не поможет, если бит испортится ещё до того, как по нему подсчитают checksum. Ну и checksum помогает только констатировать факт — блок испортился. Это лучше, чем не знать этого, но ещё лучше не доходить до такой ситуации.


  1. vadikgo
    02.08.2017 08:18
    +1

    В свете отказа RedHat от поддержки btrfs начиная с rhel 7, в Linux альтернатив zfs не остаётся.


  1. Halt
    02.08.2017 08:35

    Кому интересна ZFS могу посоветовать разрабатываемую в рамках проекта Redox файловую систему TFS.

    Набор заявленных фич очень впечатляет. Хотя, конечно, до релиза еще далеко.


    1. DaylightIsBurning
      02.08.2017 14:38

      а что там такого впечатляющего?


  1. dmitry_ch
    02.08.2017 09:20
    +2

    Позиция автора: используйте ZFS (пока)

    В статье много сравнений ZFS с другими ФС, но выбранные ФС, увы, почти все на тех ОС, где ZFS никак не получится использовать. Поэтому сравнение напоминает классику «ноги — крылья — хвосты», но не дает выбора.

    Вместо NTFS уже давно было бы очень неплохо взять что-то поинтереснее. ZFS был бы просто идеальным вариантом (плюс, из-за массовости платформы, появилась бы тысяча утилит по более-менее обслуживанию ZFS). Но говорить, что NTFS устарела, а ZFS держится (пока), так что ее и надо использовать — это как-то нечестно.

    Вот и вопрос, что советует автор: выбирать ОС, где работает ZFS, или как?

    TFS (про которую уже выше написали) сейчас выглядит очень многообещающей. Ей бы прорваться в разные ОС — был бы просто праздник, но это такая огромная работа, что говорить о реальности сложно.
    Один список целей TFS чего стоит!
    TFS is designed with the following goals in mind:

    Concurrent
    TFS contains very few locks and aims to be as suitable for multithreaded systems as possible. It makes use of multiple truly concurrent structures to manage the data, and scales linearly by the number of cores. This is perhaps the most important feature of TFS.

    Asynchronous
    TFS is asynchronous: operations can happen independently; writes and reads from the disk need not block.

    Full-disk compression
    TFS is the first file system to incorporate complete full-disk compression through a scheme we call RACC (random-access cluster compression). This means that every cluster is compressed only affecting performance slightly. It is estimated that you get 60-120% more usable space.
    Revision history
    TFS stores a revision history of every file without imposing extra overhead. This means that you can revert any file into an earlier version, backing up the system automatically and without imposed overhead from copying.
    Data integrity
    TFS, like ZFS, stores full checksums of the file (not just metadata), and on top of that, it is done in the parent block. That means that almost all data corruption will be detected upon read.
    Copy-on-write semantics
    Similarly to Btrfs and ZFS, TFS uses CoW semantics, meaning that no cluster is ever overwritten directly, but instead it is copied and written to a new cluster.
    O(1) recursive copies
    Like some other file systems, TFS can do recursive copies in constant time, but there is an unique addition: TFS doesn't copy even after it is mutated. How? It maintains segments of the file individually, such that only the updated segment needs copying.
    Guaranteed atomicity
    The system will never enter an inconsistent state (unless there is hardware failure), meaning that unexpected power-off won't ever damage the system.
    Improved caching
    TFS puts a lot of effort into caching the disk to speed up disk accesses. It uses machine learning to learn patterns and predict future uses to reduce the number of cache misses. TFS also compresses the in-memory cache, reducing the amount of memory needed.

    Better file monitoring
    CoW is very suitable for high-performance, scalable file monitoring, but unfortunately only few file systems incorporate that. TFS is one of those.

    All memory safe
    TFS uses only components written in Rust. As such, memory unsafety is only possible in code marked unsafe, which is checked extra carefully.

    Full coverage testing
    TFS aims to be full coverage with respect to testing. This gives relatively strong guarantees on correctness by instantly revealing large classes of bugs.

    SSD friendly
    TFS tries to avoid the write limitation in SSD by repositioning dead sectors.

    Improved garbage collection
    TFS uses Bloom filters for space-efficient and fast garbage collection. TFS allows the FS garbage collector to run in the background without blocking the rest of the file system.


    1. DaylightIsBurning
      02.08.2017 14:43
      +1

      А что именно такого интересного заявлено среди целей TFS, чего не заявлено для ZFS/Brtfs? Tiering, которого не хватает в ZFS не заявлен, распределённость не заявлена.


  1. Andronas
    02.08.2017 13:07

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


    1. DaylightIsBurning
      02.08.2017 14:44
      +1

      ФС при всём. Бекап!=RAID, необходимы оба.


  1. ALexhha
    02.08.2017 19:03
    +1

    А что именно такого интересного заявлено среди целей TFS, чего не заявлено для ZFS/Brtfs?

    о Brtfs по ходу уже можно начать забывать. Признав ее deprecated RHEL как бы дает нам намек.


  1. robert_ayrapetyan
    03.08.2017 06:44
    +1

    Следует заметить, что Оракл в данный момент очень активно пилит ZFS под свои энтерпрайзные облачные сервера.