zfs против xfs

<p>мы рассматриваем возможность создания сервера хранения ~ 16 тб. на данный момент мы рассматриваем как zfs, так и xfs в качестве файловой системы. каковы преимущества, недостатки? что мы должны искать? есть ли третий, лучший вариант?</p>

<p>я обнаружил, что xfs лучше подходит для очень больших файловых систем с большим количеством больших файлов. у меня есть работающая файловая система xfs 3,6 тб уже более 2 лет без проблем. определенно работает лучше, чем ext3 и т.д. при таком размере (особенно при работе со многими большими файлами и большим количеством операций ввода-вывода).</p><p>с zfs вы получаете пул устройств, чередование и другие расширенные функции, встроенные в саму файловую систему. я не могу говорить о деталях (я позволю другим комментировать), но из того, что я могу сказать, вы хотели бы использовать solaris, чтобы получить максимальную выгоду здесь. мне также неясно, насколько zfs помогает, если вы уже используете аппаратный raid (как и я).</p>

<p>zfs даст вам преимущества, помимо программного raid. структура команд очень продуманна и интуитивно понятна. также есть сжатие, моментальные снимки, клонирование, отправка/получение файловой системы и устройства кэширования (эти новые модные ssd-диски) для ускорения индексации метаданных.</p><p>сжатие:</p><pre><code>#zfs set compression=on filesystem/home </code></pre><p>он поддерживает простые для создания копий при записи снимки, которые можно смонтировать:</p><pre><code># zfs snapshot filesystem/home/user@tuesday # cd filesystem/home/user/.zfs/snapshot/tuesday </code></pre><p>клонирование файловой системы:</p><pre><code># zfs clone filesystem/home/user@tuesday filesystem/home/user2 </code></pre><p>файловая система отправки/получения:</p><pre><code># zfs send filesystem/home/user@tuesday | ssh otherserver "zfs receive -v filesystem/home/user" </code></pre><p>инкрементная отправка/получение:</p><pre><code># zfs send -i filesystem/home/user@tuesday | ssh otherserver "zfs receive -v filesystem/home/user" </code></pre><p>кеширующие устройства:</p><pre><code># zpool add filesystem cache ssddev </code></pre><p>это всего лишь верхушка айсберга, я настоятельно рекомендую попробовать установить open solaris и попробовать его.</p><p> <a href="http://www.opensolaris.org/os/tryopensolaris/">http://www.opensolaris.org/os/tryopensolaris/</a> </p><p><strong> редактировать </strong>: это очень старая версия open solaris больше не поддерживается, возможно, лучший способ использовать zfs - <a href="http://zfsonlinux.org/">linux</a> , или <a href="https://www.freebsd.org/doc/handbook/zfs.html">freebsd</a> .</p><hr><p>полное раскрытие: раньше я был архитектором систем хранения данных sun, но я не работал на них более года, я просто в восторге от этого продукта.</p>

<p>использование моментальных снимков lvm и xfs в живых файловых системах - это путь к катастрофе <em>, особенно </em> при использовании очень больших файловых систем.</p><p>последние 6 лет я работал исключительно на lvm2 и xfs на своих серверах (дома, даже если zfs-fuse просто слишком медленный) ...</p><p>однако я больше не могу сосчитать различные режимы сбоев, с которыми я столкнулся при использовании снимков. я вообще перестал их использовать - это слишком опасно.</p><p>единственное исключение, которое я сделаю сейчас, - это мое личное резервное копирование почтового сервера/веб-сервера, где я буду делать резервные копии на ночь, используя кратковременный снимок, который всегда равен размеру исходного fs, <em> и </em> удаляется сразу после этого.</p><p>самые важные аспекты, о которых следует помнить:</p><ol> <li>если у вас есть большая (ish) файловая система, которая имеет снимок, производительность записи ужасно снижается</li> <li>если у вас есть большая (ish) файловая система, у которой есть моментальный снимок, время загрузки будет отложено буквально на десятки минут, в то время как диск будет перетекать во время импорта группы томов. сообщения не будут отображаться. этот эффект особенно неприятен, если root находится на lvm2 (потому что время ожидания корневого устройства истечет, а система не загрузится)</li> <li>если у вас есть моментальный снимок, его очень просто не хватает. после исчерпания свободного места снимок поврежден и не может быть восстановлен.</li> <li>снимки нельзя откатить/объединить в данный момент (см. <a href="http://kerneltrap.org/linux/lvm\_snapshot\_merging">http://kerneltrap.org/linux/lvm\_snapshot\_merging</a> ). это означает, что единственный способ восстановить данные из снимка - это фактически скопировать его (rsync?). опасность опасность: вы <em> не хотите </em> делать это, если емкость снимка не меньше размера исходного fs; если вы этого не сделаете, вы скоро поразите кирпичную стену и в итоге и исходный фс, и снимок будут повреждены. (я был там!)</li> </ol>

<p>еще пара вещей, о которых нужно подумать.</p><ul> <li> <p>если диск умирает в аппаратном raid-массиве независимо от файловой системы, которая находится поверх него, все блоки на устройстве должны быть восстановлены. даже те, которые не содержат никаких данных. zfs, с другой стороны, является менеджером томов, файловой системой и управляет избыточностью и чередованием данных. таким образом, он может разумно перестраивать только те блоки, которые содержат данные. это приводит к более быстрому восстановлению, чем при заполнении тома на 100%.</p> </li> <li> <p>zfs имеет фоновую очистку, которая гарантирует, что ваши данные остаются согласованными на диске и устраняет любые проблемы, которые они обнаруживают, прежде чем это приведет к потере данных.</p> </li> <li> <p>файловые системы zfs всегда находятся в согласованном состоянии, поэтому нет необходимости в fsck.</p> </li> <li> <p>zfs также предлагает больше гибкости и возможностей благодаря своим снимкам и клонам по сравнению со снимками, предлагаемыми lvm.</p> </li> </ul><p>запустив большие пулы хранения для производства видео большого формата в стеке linux, lvm, xfs. мой опыт показывает, что легко попасть в микро-управление вашим хранилищем. это может привести к большому количеству неиспользованного выделенного пространства и времени/проблем с управлением вашими логическими томами. это может не иметь большого значения, если у вас есть администратор хранилища с полной занятостью, задачей которого является микроуправление хранилищем. но я обнаружил, что подход к хранению в пуле zfs устраняет эти проблемы управления.</p>

<p>zfs абсолютно потрясающая. я использую его в качестве домашнего файлового сервера для файлового сервера 5 x 1 tb hd), а также использую его в производстве почти с 32 tb жесткого диска) дисковое пространство. оно быстрое, простое в использовании и обеспечивает лучшую защиту от повреждения данных.</p><p>мы используем opensolaris на этом сервере, в частности, потому что мы хотели получить доступ к новым функциям и потому, что он предоставил новую систему управления пакетами и способ обновления.</p>

<p>я не думаю, что вы должны сосредоточиться на производительности. ваши данные в безопасности с xfs, ext4 и т.д.? нет. прочтите эти кандидатские и научные работы:</p><p>xfs не защищена от повреждения данных: pages.cs.wisc.edu/~vshree/xfs.pdf</p><p>и не ext3, jfs, reiserfs и т. д .: zdnet.com/blog/storage/how-microsoft-puts-your-data-at-risk/169?p=169&tag=mantle\_skin%3bcontent "я натолкнулся на увлекательную диссертацию phd виджаяна прабхакарана, iron file systems, который анализирует, как пять файловых систем журналирования товаров - ntfs, ext3, reiserfs, jfs и xfs - решают проблемы хранения.</p><p>в двух словах он обнаружил, что все файловые системы имеют</p><pre><code>. . . failure policies that are often inconsistent, sometimes buggy, and generally inadequate in their ability to recover from partial disk failures. " </code></pre><p>но zfs успешно защищает ваши данные. вот исследовательский документ по этому вопросу: zdnet.com/blog/storage/zfs-data-integrity-tested/811</p>

<p>какую ос вы планируете запустить? или это другая часть рассмотрения? если вы используете solaris, насколько я знаю, xfs даже не вариант. если вы не используете solaris, как вы планируете использовать zfs? поддержка ограничена на других платформах.</p><p>если вы говорите о сервере linux, я бы лично остановился на ext3, хотя бы потому, что он проходит большую часть тестирования. zfs-fuse еще очень молод. кроме того, однажды у меня были проблемы с xfs, когда ошибка приводила к повреждению данных после обновления ядра. преимущества xfs по сравнению с ext3 определенно не перевешивают затраты, связанные с восстановлением компьютера, расположенного в удаленном центре обработки данных.</p>

<p>не ориентированный на fs ответ, извините, но имейте в виду, что некоторые контроллеры дисков не будут иметь дело с> 2 тб luns/логических дисков - это может немного ограничить организацию вашего хранилища. я просто хотел, чтобы вы знали об этом, чтобы вы могли проверить всю систему до конца, чтобы убедиться, что она будет работать с 16 тб.</p>

<p>это зависит от того, какие функции вы хотите ..., два разумных выбора - xfs и zfs, как вы сказали, код xfs довольно хорошо протестирован, я впервые использовал его 8 лет назад под irix</p><p>можно получить снимки с xfs (используя lvm и xfs\_freeze)</p><p>возможно иметь отдельное лог-устройство, например ssd</p><pre><code>mkfs.xfs -l logdev=/dev/sdb1,size=10000b /dev/sda1 </code></pre><p> <a href="https://serverfault.com/questions/40302">большие xfs традиционно требуют много памяти для проверки</a> </p><p>проблема с появлением нулей была функцией "безопасности", которая, я думаю, исчезла некоторое время назад.</p>

<p>помимо того, что уже упоминалось, с точки зрения производительности xfs на базе md raid работает лучше, чем zfs на потоковой передаче мультимедиа. я использовал то же самое оборудование в течение полувека с xfs и примерно столько же времени с zfs на своем медиа-сервере. на intel atom 330 с xfs я никогда не сталкиваюсь с stuter, на zfs на сложных сценах одно и то же оборудование не может идти в ногу и начинает сбрасывать кадры.</p>

<p>ну, ребята, давайте не будем забывать о последнем дополнении к zfs: дедупликация. и давайте поговорим о совместном использовании iscsi, nfs или smb. как уже говорили другие, экспорт файловых систем zfs, снимков, контрольной суммы блоков raidz (= raid5), ширины динамической полосы, управления кешем и многих других. я голосую за зфс.</p>

<p>вместо того, чтобы строить свой собственный, альтернативой является sun 7410 aka toro. он имеет очень полезное программное обеспечение, которое поставляется вместе с решением.</p>