Pull to refresh

Comments 69

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

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

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

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

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

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

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

именно! контрольные суммы — только _для метаданных_, опционально (и только в относительно свежих версиях), точно так же сделано в 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.
А не слишком ли жирно «минимум 8Гб» для домашней файлопомойки? Я понимаю что энтузиастов много, но все же для домашних задач, как правило, хватает и более скромного железа.
UFO landed and left these words here

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Также добавлю, что ОЗУ требуется для записи, на чтение дедупликация не влияет (только если вы записываете параллельно с чтением, и при этом у вас кончилась ОЗУ, тогда для каждой операции записи будет много случайных IO чтения на диск).
Домашний бэкап-сервер. FreeNas на HP DL G6 с 12 х 3ТБ хранилищем.
72Gb RAM.
При активной записи в хранилище можно заметить, как память забивается буквально на глазах. Кеш ZFS будет отъедать всю свободную память — к гадалке не ходи.
с нынешними реалиями цен взять бу брендовое решение становится дешевле чем новую китайскую SOHO железяку.
Самой дорогой частью будут винты
20x3Tb Hitachi 7K2000, отработавших, судя по смарту, около 3-х лет в каком-то датацентре (счётчик включений был 20-30 за 3 года) обошлись чуть больше 1К у.е.
12 штук пошли в работу, 8 лежат как запасные. Вся железяка без винтов обошлась чуть больше 1.5К, вместе.
На мой взгляд — достаточно недорого, свои данные я ценю гораздо выше.
В Linux нет, в FreeBSD прекрасно живёт на 2. Проблема с Linux — ZFS любит память ( в том смысле как любит её база данных), и дерётся за неё с системой, при этом не достаточно оперативно её освобождая. А интеграция этой ФС с Linux через такую-то матерь только добавляет эпичности сюжету. Когда ZFS вписана в систему, всё становится несколько проще.
А интеграция этой ФС с Linux через такую-то матерь только добавляет эпичности сюжету.

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

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

Во FreeBSD zfs.ko тянет за собой в зависимостях opensolaris.ko. Для чего? Не для того же?
Я не эксперт, могу ошибаться, но где-то в интернетах читал, что часть наследия соляриса взяли непосредственно в систему (как минимум что-то по работе с памятью, потому на 32 битной фряхе ZFS возможен, а под линуксом нет). Что не поместилось оформили в модуль.
Под линуском x32 zfs тоже работает, но у разработчиков он не в приоритете.
Соглашусь с автором, что у ZFS есть проблемы.

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

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

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

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

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

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

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

Не имел проблем после полного(до последнего байта) заполнения btrfs, зато имел другие.
После удаления диска из raid 1 и добавления нового в процессе апгрейда — система перестала монтироваться. Попытки заставить её монтироваться всеми способами из мануалов, включая различные методы восстановления привели к потере части файлов. Смог спасти остальное только благодаря тому, что удалённый диск смонтировался в degraded состоянии.
С тех пор — больше не связываюсь с ней, перешёл на zfs. С контейнерами она, кстати, отлично дружит в связке с proxmox ve.
А я, напротив, успешно использую 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, насколько я понимаю, какой-то недоделанный.
Для Windows компания Microsoft тоже собирается выкатить собственную файловую систему нового поколения ReFS с использованием деревьев B+ (похоже на Btrfs), с сумасшедшим масштабированием и функциями стойкости и защиты данных

ReFS уже давно есть в серверных редакциях ПО(по-моему с вин сервер 2012), уже есть и в вин10, не уверен правда мб пока только в инсайдерских сборках.
ReFS сильно не хватает прозрачного сжатия файлов. Вот уж не знаю почему они не смогли это реализовать. Но как-раз на файлопомойках очень часто бывает необходима эта фича.
Тут ошибка перевода: в оригинале "...Microsoft is busy rolling out their own next-generation filesystem. ReFS uses B+ trees...".

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


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


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


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

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

2 Особенности
2.1 Снимки файловой системы
2.2 Шифрование
2.3 Целостность данных
2.4 Защита от сбоев
Называть клон 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% историческую достоверность фактов не ручаюсь, писал по памяти. Если что неверно в описании, кто чей клон — пожалуйста представьте свою версию в комментариях, помню в своё время было много споров на этот счёт.].
Надо отдать должное NetApp — у них получился действительно инженерный шедевр, от железа до метрик. Вот только стоимость их решений доступна лишь очень жирным котам. Революционность ZFS в том, что Sun взяли годные идеи NetApp, и переписали их, избегая запатентованных технологий, и открыли исходники. Как-то давно примерно так поступил Торвальдс и GNU.
Так что скажем спасибо IBM за многомилионные мейнфреймы, благодаря которым у каждого есть дешевые компьютеры, скажем спасибо NetApp, что их разработки, окупившись в энтерпрайзе, пошли «в народ», и скажем «спасибо» Ораклу, похоронившему дальнейшую разработку ZFS, благодаря чему мы застряли в прошлом десятилетии с файловыми системами.

P.S.: Снапшоты при помощи систем виртуализации для файлового хранилища — это как-то странно. У решений поверх стандартных файловых систем они дадут значительно больший оверхед, у VMWare они интегрированы с файловой системой (=тот же подход, что у wafl/zfs)
VMware vmfs нет снапшотов, о какой интеграции речь/
Также в плюс репликация и создание клонов.
И клоны средствами виртуализации делаются, хоть и не всегда так удобно, как в NetApp. Репликация в наше время есть у всех солидных СХД и даже просто в Windows (Storage) Server 2016, в Hyper-V она с 2012 года. Уже прогресс дальше пошёл — в сторону гиперконвергентных систем.

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

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

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

UFO landed and left these words here
А если перевернутся два бита, вы получите 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?
Почему вероятность одиночного bit flip настолько выше двойного?

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

UFO landed and left these words here

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

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

Набор заявленных фич очень впечатляет. Хотя, конечно, до релиза еще далеко.
Позиция автора: используйте 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.
А что именно такого интересного заявлено среди целей TFS, чего не заявлено для ZFS/Brtfs? Tiering, которого не хватает в ZFS не заявлен, распределённость не заявлена.
ZFS для домашних файловых хранилищ слишком сложна. Хотите надежности тогда храните минимум две копии данных в разных географически местах, и тип используемой ФС тут не при чем. Например для дома это локальное файловое хранилище и облако для копии.
А что именно такого интересного заявлено среди целей TFS, чего не заявлено для ZFS/Brtfs?

о Brtfs по ходу уже можно начать забывать. Признав ее deprecated RHEL как бы дает нам намек.
Следует заметить, что Оракл в данный момент очень активно пилит ZFS под свои энтерпрайзные облачные сервера.
Sign up to leave a comment.

Articles