Как использовать файловую систему ZFS в Linux. Файловые системы ближайшего будущего




ZFS в порядке сжатия и дедупликации linux

каков порядок записи данных в файловую систему zfs в linux?

единственный конкретный документ я нашел на http://docs.oracle.com/cd/E36784_01/html/E36835/gkknx.html говорит: When a file is written, the data is compressed, encrypted, and the checksum is verified. Then, the data is deduplicated, if possible.

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

Я тестировал mysqlf, и я считаю, что порядок следующий: dedup, compress, encrypt .

мой тест-настройка:

Zpool create tank /dev/sdb zfs create tank/lz4 zfs create tank/gzip9 zfs set compression=lz4 tank/lz4 zfs set compression=gzip-9 tank/gzip9 zfs set dedup=on tank

выход zfs list

NAME USED AVAIL REFER MOUNTPOINT tank 106K 19,3G 19K /tank tank/gzip9 19K 19,3G 19K /tank/gzip9 tank/lz4 19K 19,3G 19K /tank/lz4

сгенерируйте случайный файл с помощью dd if=/dev/urandom of=random.txt count=128K bs=1024

131072+0 Datensätze ein 131072+0 Datensätze aus 134217728 Bytes (134 MB) kopiert, 12,8786 s, 10,4 MB/s

вывод списка zpool в пустой пул:

NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT tank 19,9G 134K 19,9G - 0% 0% 1.00x ONLINE -

затем скопируйте файлы в наборы данных с различными алгоритмами сжатия:

Cp random.txt /tank/lz4 cp random.txt /tank/gzip9

выход zfs list после копирования:

NAME USED AVAIL REFER MOUNTPOINT tank 257M 19,1G 19K /tank tank/gzip9 128M 19,1G 128M /tank/gzip9 tank/lz4 128M 19,1G 128M /tank/lz4

выход zpool list afer копирование:

NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT tank 19,9G 129M 19,7G - 0% 0% 2.00x ONLINE -

коэффициент дедупликации 2.0 после копирование одного файла в разные наборы данных. На мой взгляд, это означает, что дедупликация выполняется на data -блоки перед сжатием и шифрованием.

пожалуйста, кто-нибудь может проверить, правильно ли это?

1 ответов

когда файл записывается, данные сжимаются, шифруются, и контрольная сумма проверяется. Затем данные дедуплицируются, если это возможно.

мое предположение со случайным файлом было неверным. Кажется, что ZFS прерывает сжатие, если не может достичь определенного минимального коэффициента сжатия.

другая определенная вещь, котор нужно заметить что представление LZ4 на несжимаемых данных очень высоко. Это достигается путем включения механизма "раннего прерывания", который срабатывает, если LZ4 не может соответствовать ожидаемому минимальному коэффициенту сжатия (12,5% на ZFS).

(оригинал)

  • Безудержное нарушение принципа многоуровневости? (оригинал)
  • Карты пространства (оригинал)
  • ZFS Deduplication (англ.)
  • Тюнинг

    Вопросы новичка по zfs

    Каковы аппаратные требования для zfs?

    Минимальные, чтобы только включилось - 512 М памяти и 32 бит процессор. Минимальные рабочие - 64 бит процессор (напр двух ядерный атом) и 1Гб памяти. Желательно - процессоры Sandy или Ivy Bridge, можно младшие. Памяти чем больше, тем лучше, но в домашних условиях больше 8 Гб вряд ли нужно. (Не забудьте сделать тюнинг, если памяти много, см ниже.) Часто приходится слышать рекомендацию “гигабайт памяти на терабайт массива”. Но пока ни в одном из заслуживающих доверия источников этой рекомендации найти не удалось. Так что, возможно, это городская легенда. В идеале и в production память ECC, но у подавляющего большинства камрадов память обычная. Прим. Для режима дедупликации требуются очень большие, иногда непредсказуемо большие, объемы памяти, см ниже.

    Попытки использования в домашних условиях SSD для кеширования как чтения, так и записи не дали заметных позитивных результатов. MikeMac

    Какие есть варианты массивов (пулов) zfs?

    Массив строится как набор виртуальных устройств (vdev). Часто пул состоит из одного vdev. Виды vdev (Прим. для краткости говорим, что vdev состоят из дисков, хотя это могут быть и разделы дисков и файлы и пр.)

    • stripe - страйп, нечто среднее между RAID0 и JBOD. Не имеет избыточности, вся информация теряется при смерти любого из дисков.
    • mirror - зеркало, примерный аналог RAID1. Каждый диск зеркала содержит полную копию всей информации. Выдерживает смерть одного любого диска. Возможно и тройное зеркало.
    • raidz1 - примерный аналог RAID5, требует минимум 3 дисков, объем одного диска уходит на избыточность. Выдерживает смерть одного любого диска.
    • raidz2 - примерный аналог RAID6, требует минимум 4 диска, объем двух дисков уходит на избыточность. Выдерживает смерть двух любых дисков.
    • raidz3 - требует минимум 5 дисков, объем трёх дисков уходит на избыточность. Выдерживает смерть трёх любых дисков.

    Если в пул входит несколько vdev, то они объединяются в страйп из vdev. Так можно сделать примерный аналог RAID10 (страйп из зеркал) или RAID60 (страйп из raidz2). Входящие в пул vdev могут иметь разный размер, но строго рекомендуются одного типа (хотя технически возможно собрать пул из разных типов vdev). Например, не рекомендуется объединять в пул raidz1 и страйп из-за падения надёжности. MikeMac

    Каковы сравнительные достоинства и недостатки различных типов vdev?

    • stripe
      • + используется всё пространство дисков; увеличение производительности аналогично RAID0
      • - низкая надежность, вся информация теряется при смерти любого из дисков.
    • mirror
      • + высокая производительность и надежность
      • - половина объема уходит на избыточность (2/3 для тройного зеркала)
    • raidz1
      • + Экономное использование дискового пространства при обеспечении избыточности
      • - некоторое снижение производительности по сравнению с зеркалом; при смерти одного из дисков до окончания перестроения на новый диск имеем страйп в смысле надежности
    • raidz2
      • + высокая надежность, расчёты показывают, что более высокая, чем у зеркала - если вы и потеряете массив, то не из-за выхода дисков из строя, а из-за проблем с другими компонентами
      • - два диска уходят на избыточность
    • raidz3
      • + параноидальная надежность, излишняя практически всегда
      • - три диска на избыточность. MikeMac

    И какой вариант мне предпочесть?

    • stripe для малоценной или легко восстанавливаемой информации (оцените и затраты своего времени)
    • mirror для высокой нагрузки случайного чтения/записи
    • raidz1 как базовый вариант для файлопомойки
    • raidz2 как премиум вариант

    NB: Никакой RAID не заменяет Backup. Важная, невосстановимая информация должна быть сохранена куда-то вовне. MikeMac

    Подробнее о vdev

    Сжатие включать?

    Oleg Pyzhov : какие разделы сжимать, какие нет определил опытным путем. Проц у меня атомный поэтому без вариантов тип сжатия lzjb

    • storage1/system 6,74G compressratio 1.71x (тут лежат скрипты, а также каталоги для FreeBSD: /usr/src, /usr/obj, /usr/ports)
    • storage1/soft 61,6G compressratio 1.17x (тут дистрибьютивы)
    • storage1/document 302G compressratio 1.16x (тут много мелких файлов: DWG,DOC,XLS, JPG)
    • storage1/timemachine сжатие не испольщую, тк неэффективно.. MacOSX и так походу сжимает свой Backup)
    • storage1/media не сжимаю, тк неэффективно

    Sergei V. Sh : размеры датасета с кучей фото

    • 93.2G (ashift=9 compresion=on)
    • 95.0G (ashift=9 compresion=off)
    • 94.5G (ashift=12 compresion=on)
    • 96.1G (ashift=12 compresion=off)

    Как переименовать пул?

    zpool export poolname zpool import poolname newname

    Как удалить файл, если нет места на диске с ZFS

    dd if = /dev/null of = file.avi rm file.avi

    UPD от MikeMac На практике оказалось, что первым пунктом следует проверить наличие снапшотов

    zfs list -t snapshot

    Если снапшоты есть, то их следует удалять (http://docs.oracle.com/cd/E19253-01/819-5461/gbcya/index.html), начиная с наиболее древних, пока не появится место (или пока не будут удалены все).

    Если же проводить операцию по усечению файла как выше - то в случае наличия его копии в снапшоте операция не высвободит места.

    Кроме того, практика показывает что усечение файла лучше проводить над небольшими файлами.

    Как узнать точный размеры пула?

    • Как определить полный объем пула, доступный пользователю (т.е. за вычетом ушедшего на избыточность)?

    USED - объем занятого пространства AVAIL - сколько осталось

    • Сиди складывай USED + AVAIL?
    • в байтах для датасета zpool/var:

    zfs get -Hp -o value avail,used zpool/var | awk "{ s+=$1; } END { print s; }"

    • в терабайтах:

    zfs get -Hp -o value avail,used zpool/var | awk "{ s+=$1; } END { printf "%.3f Tb.\n", s/(1048576*1048576); }"

    От WearWolf .

    Заменил все диски на бОльшие, но размер пула не изменился, что делать?

    Наиболее простой для новичка способ - перезагрузить систему. Если это не помогает

    zpool online -e <имя пула> <имя любого диска из этого пула>

    Если задать автоувеличение при помощи команды

    zpool set autoexpand = on <имя пула>

    Пул будет сам вырастать. Sergei V. Sh

    Автоувеличение пула не работало перепробовал все трюки - включение autoexpand=on , экспорт-импорт, ребут импорт пула был невозможен пока не деинсталировал VirtualBox - расположен на пуле и при попытке принудительного экспорта просто уводит весь нас в ребут.

    Данная рекоммендация, по всей видимости, не актуальна для новых версий ZoL.

    Для настоящих знатоков извращений:)

    Q. Купить разом все хдд не имею возможности, а ухудшать конфиг не хочу
    A. мой случай… я сделал себе 8+2 (raidz2 из 10 дисков) - но дисков сразу не имею

    Q. А какими командами FreeBSD поделить 2T диск на половинки для этого?
    A. например, так

    Q. имею raidz1 на 2T дисках. Заменить каждый на 4T - ноль проблем. Но в выхлопе остается несколько шт 2T дисков. Печалька.
    A.

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

    Установка ZFS немного отличается от других файловых систем, и в зависимости от того, что вы используете, может потребоваться небольшое ноу-хау. Если вы новичок в этой файловой системе, лучше всего идти по маршруту Ubuntu. Начиная с Ubuntu 16.04, Canonical упрощает работу с ZFS. Еще лучше, Ubuntu - безусловно самая безопасная реализация ZFS в Linux, с простой настройкой и процессом сборки, который, как известно, очень надежный (в то время как другие дистрибутивы Linux имеют высокий риск нарушения ZFS).

    Чтобы установить файловую систему ZFS, Следуйте инструкциям и узнайте, как заставить их работать, прежде чем продолжить этот учебник.

    Примечание. Хотя можно использовать ZFS для одного жесткого диска, это не очень хорошая идея, и вы, вероятно, пропустите все функции, которые делают эту файловую систему отличной. Точкой файловой системы является создание избыточности, путем растяжения данных на нескольких жестких дисках. Прежде чем продолжить, убедитесь, что у вас больше, чем 1 жесткий диск для ZFS.

    Настройка ZFS

    Файловая система ZFS работает, объединяя множество разных жестких дисков вместе, чтобы создать один большой центр хранения. Это звучит слишком сложно, и это так. Тем не менее, результат - превосходное хранилище с большим пространством.

    Создание новой файловой системы ZFS немного сложнее, чем просто открытие редактора разделов Gparted. Вместо этого вам нужно будет взаимодействовать с ним на уровне командной строки. В окне терминала запустите lsblk команда. Запуск команды «list block» выведет все накопители на вашем ПК Linux.

    Пройдите и решите, какие жесткие диски использовать для вашего Z-пула, и помните имена. В этом учебнике наши три диска в пуле ZFS / DEV / SDB , / DEV / SDC и / DEV / SDD .

    Затем вам нужно полностью обнулить жесткие диски, выбранные для Z-пула, чтобы у них больше не было данных. С использованием dd команду, перезапишите каждый из дисков. Это займет некоторое время.

    Примечание: изменение / DEV / SDx с идентификатором диска, найденным с помощью lsblk команда (SDB И т.д.).

    Sudo dd if = / dev / zero of = / dev / sdX bs = 8M

    когда dd заканчивается, запускает FDISK команда. Запуск fdisk покажет много информации о жестких дисках, включая информацию о файловой системе для каждого. Просмотрите показания и убедитесь, что ни один из дисков, которые вы удалили, не имеет файловой системы. Этот шаг имеет решающее значение, поскольку ZFS не использует традиционный формат разбиения.

    Суда FDISK-л

    Если же линия индикатора FDISK считывание выглядит хорошо, безопасно создать новый Z-пул ZFS. Для базовой настройки Z-пула выполните следующие действия:

    Sudo zpool create -f newzpool / dev / sdb dev / sdc / dev / sdd

    Базовая установка позволит большинству пользователей удовлетворить свои потребности в хранилищах. Однако те, которые ценят свои данные и нуждаются в защите, не должны идти с такой базовой настройкой. Вместо этого подумайте о создании пула ZFS с RaidZ.

    Использование RaidZ в сочетании с вашим ZFS-пулом гарантирует, что ваши данные будут избыточными, с множеством резервных копий. Чтобы создать пул ZFS с RaidZ, запустите:

    Sudo zpool create -f newzpool raidz / dev / sdb dev / sdc / dev / sdd

    Чтобы добавить файлы в новый пул хранения ZFS, откройте диспетчер файлов и перейдите в корень файловой системы. Поместите файлы внутри папки с именем ZFS Zpool.

    Добавить диски в ZFS Zpool

    ZFS предназначен для хранения большого количества данных, но это не значит, что ваши оригинальные диски не будут заполняться. Наступит время, когда потребуется больше места для хранения. К счастью, поскольку ZFS не использует разделы, добавление большего количества хранилища в систему прост.

    В этом примере мы добавим еще два диска в Zpool (/ dev / sde и / dev / sdf).

    Примечание: если ваша установка ZFS не использует RaidZ, удалите ее из команды.

    Sudo zpool add -f newzpool raidz / dev / sde / dev / sdf

    Удалить пул ZFS

    Зачастую объемы ZFS ломаются и становятся непригодными. Когда это произойдет, вам может потребоваться удалить пул хранения. Чтобы удалить пул хранения, откройте терминал и используйте zfs destroy команда.

    Sudo zpool уничтожить newzpool

    Бег zpool уничтожить занимает довольно много времени, в зависимости от того, сколько данных находится в вашем пуле хранения. Вы узнаете, что Zpool полностью уничтожен, когда терминал снова используется.

    Проверить статус ZFS

    Быстрый способ проверить статус вашего Zpool с помощью статус zpool команда. С его помощью пользователи могут видеть базовое считывание тома ZFS, как он это делает и имеются ли какие-либо ошибки. Чтобы проверить статус, выполните следующую команду.

    В предыдущих постах я неоднократно упоминал о zfs. Причем получалось, что и памяти и процессора она требует не по детски. Остался вопрос - и зачем? Сразу скажу, что не претендую на полноту и пр. Что такое zfs можно взглянуть в Википедии. Заинтересовавшимся серьёзнее советую нагуглить zfs administration guide (вроде бы был и по русски). Моё намерение - объяснить зачем вдруг дома файловая система корпоративного уровня. Прим. У читателя, особенно второй части поcта, предполагается уверенное понимание того, что такое дисковые массивы, напр. RAID5. Если понимания нет - вряд ли такие массивы стоит дома самому строить и этот текст читать.


    1. Целостность файловой системы . Каждый сталкивался с ситуацией, когда файловую систему приходилось чинить. Успешно или не очень. zfs построена так, что в ней даже нет утилиты вроде виндовой chkdsk или линуксовой fsck. Ситуация, когда файловая система оказалась в противоречивом состоянии, просто невозможна. Реализовано через Copy-on-write (данные пишем не поверх старых, а выделяем новый блок, пишем туда, если все ОК - заменяем указатель со старых данных на новые. Подробнее - см гугл). В результате логическая структура диска не испортится из-за того, что-то не вовремя отключили или свет отрубился. Ну разве записанное в последние 10 сек пропадет. (впрочем, диск может и физически сгореть при играх с электричеством).

    2. Уверенность, что не прочитаешь мусор, думая, что читаешь данные . Железо несовершенно. Например, если дребезжат контакты на SATA кабелях, на диск будет записано совсем не то, что было в памяти. И никто, замечу, долгое время об этом не узнает. Мой профессиональный опыт связан с полиграфией. Не раз приходилось на выводе видеть картинку до середины нормальную - а дальше шум. zfs хранит с каждым блоком данных его контрольную сумму. При считывании данных сумма автоматически сличается. Казалось бы, так просто...

    3. Уверенность, что хранимые данные не протухли . Да, данные при хранении имеют тенденцию портиться. Что хорошо известно тем, кто поверил маркетингу производителей DVD болванок про 100 лет и записал на них свои архивы. Особенно это важно для "холодных" данных, долгое время лежащих без движения. Архивах, старых фото и т.п. Проверить данные вроде как просто - надо их считать и сличить контрольные суммы. Для zfs, понятно - достаточно файлы прочитать. Для регулярной проверки есть команда, в фоновом режиме все проверяющая.

    4. Снимки файловой системы. Легкость запоминания состояния файловой системы на данный момент времени, хранение таких снимков и откат к ним при необходимости. Защищает от дурацких действий человека. Модель Copy-on-write просто располагает к такой функциональности - блоки удаленных или перезаписанных данных просто не освобождаем, а ссылки на них храним в снимке. В результате снимок занимает места столько, сколько содержит измененных по сравнению текущим моментом данных, а не весь объем данных.

    Это все было для данных без избыточности, типа одиночного диска. Но zfs позволяет формировать массивы с избыточностью , подобные (и превосходящие) RAID1 (зеркало), RAID5 (избыточность в размере одного диска), RAID6 (двух) и даже "RAID7" (сохраняющий данные при выходе их строя любых трех дисков массива). Массивы можно объединять, получая что-то вроде RAID10 или RAID50. И чем же zfs массивы лучше?

    5. Аппаратная независимость . Чтобы сделать аппаратный RAID5, тем более RAID6, нужен дорогой RAID контроллер. zfs raidz - вариант программного RAID, требуются только доступ к дискам, например SATA порты. zfs raidz вполне может быть построен на портах разных контроллеров и из дисков разных моделей (в использовании разных моделей дисков есть и плюсы и минусы). И перенесен чуть не на любое железо, куда можно подключить диски. Я, например, неоднократно переставлял диски между SATA портами, прозрачно импортировал массив, созданный в режиме IDE на контроллере, в ACHI режиме и на SAS контроллере. Хотя операционная система нумерует диски по портам и определяет IDE, ACHI и SAS диски по-разному, zfs все это способен молча отработать (до определенных пределов, конечно. Сдуру что хочешь можно сломать.)

    6. Отсутствие Дыры по Записи . (Wiki) То есть разрушения данных, если диск массива не может принять данные. Дорогие RAID контроллеры оборудуют батарейками, которые позволяют много дней хранить данные, не успевшие попасть на диск, и записывать их в массив при появлении возможности.

    7. Устойчивость при сбое диска . Пусть у нас одинаковые RAID5 и zfs raidz1. В каждом из них сбоит один из дисков, меняем его на новый. И в процессе замены (а она занимает многие часы для больших массивов) не читается блок на одном из оставшихся дисков массива.

    Для RAID5 в большинстве случаев это катастрофа. Массив объявляется сбойным не читаемым, несем его профессионалам, которые за круглую сумму инфу будут восстанавливать.

    Для zfs raidz1 сообщается на какие файлы пришлись сбойные блоки, остальное синхронизируется. А если с заменяемого диска хоть что-то читается и от компа его не отключали - информация с него тоже будет использована для синхронизации. И с высокой степенью вероятности данные вообще не потеряем.

    8. Работа с полезными данными, а не всем массивом . Например, если я заменяю диск в RAID5 массиве, время восстановления зависит от объема массива. Если в zfs raid1 - от объема записанной в массив информации, тк не используемое для данных место не будет синхронизироваться.

    Преимуществ еще много, но мне для дома интереснее именно эти. В корпоративном применении - есть и другие (сжатие данных, дедупликация...). Упомяну важные для меня недостатки .

    1. Нарастить raidz массив на один диск нельзя . Можно заменить все терабайтные диски на тритеры - и увеличить объем. Можно собрать из 3 (и более) дисков еще один raidz и добавить его к существующему. Но превратить raidz1 из 5 дисков в raidz1 из 6 можно только слив куда-то информацию, разрушив массив и создав новый.

    2. Массив нельзя уменьшить . Можно только увеличивать. Например, заменить в массиве терабайтные винты на двухтерабайтные - можно. А на полутерабайтные - нельзя, даже если в массиве хранится 1 килобайт инфы.
    Можно подсоединить к массиву еще один - а отсоединить нельзя. Все такие процедуры - только через сохранение инфы куда-то вовне, разрушение массива и создание нового.

    3. Ресурсоемкость . zfs постоянно считает контрольные суммы, что создает нагрузку на процессор и жрет под кеши память. В корпоративном применении есть мнение - гигабайт памяти на терабайт массива. Дома мне хватает 330 атома и 4 Гб памяти (а раньше и на 2 Гб работало - особой разницы не увидел). Хотя атома для полной утилизации гигабитной сети мне не хватает, но 40-50мб/с мои потребности закрывает.. А вот если железо старое и еще значительно слабее - zfs не для Вас.

    Да, напомню, если понравилось - в NAS4free , которому и посвящен весь цикл постов, управление NAS, включая операции с zfs, идет через понятный новичку веб интерфейс.

    Файловая система ZFS — основа надежного и недорого хранилища данных

    На страницах проекта сайт была затронута тема организации файлового хранилища:

    • первая часть
    • вторая часть

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

    Введение в ZFS

    Аббревиатура ZFS получилось из словосочетания zettabyte file system, обозначая тем самым одну из самых современных и совершенных файлововых систем. Например, уже из названия следует, что это зетабайтная файловая система , если быть точнее, то данная FS поддерживает 256 квадриллионов зетабайт. Для справки — один зетабайт равен 1 073 741 824 терабайт!

    Пусть простят меня читатели, но больших академических выкладок в данной статье не будет. Предлагаю сконцентрироваться непосредственно на практическом аспекте, а именно созданию отказоустойчивого и масштабируемого хранилища данных. Такие хранилища безусловно строятся при помощи технологий RAID массивов, а у файловой системы ZFS имеется свой штатный инструмент для работы с физическими дисками и организации их в RAID-Z массивы (аналог RAID5). При этом, в отличие от аналогичных технологий, данная FS самостоятельно восстанавливает поврежденные блоки и исправляет их на лету без вмешательства пользователя. RAID-Z постоянно проверяет контрольные суммы данных для поддержания их целостности и может идентифицировать блоки, требующие перекомпоновки. Это делается до того, как запрашиваемые данные попадают к пользователю.

    К основным плюсам данной FS — практически неограниченное дисковое пространство и встроенные инструменты построения отказоустойчивых RAID-Z массивов, относится также и атомарная запись данных . Под этим термином понимается следующее — данные либо полностью записываются на диск, либо не записываются вовсе. Такая технология позволяет избежать проблем, которые возникают в случаях сбоев работы сети, подсистемы питания и отказа операционной системы.

    Поддержка со стороны операционных систем

    Изначально ZFS была разработана в недрах компании Sun Microsystems для операционной системы Solaris. Сейчас благодаря ряду проектов, данная файловая система стала доступной для других ОС. К ним относятся — помимо Solaris, еще и OpenSolaris, Apple Mac OS X 10.5, FreeBSD, Linux (через FUSE или отдельный модуль ядра (ZFS on Linux)). Выбор конкретной ОС для своего проекта или проще говоря, для файлового хранилища остается за вами. Наибольшее распространение получила FreeBSD и производная — NAS4Free.

    Конструктивные особенности системы хранения

    При организации хранилища данных приходится оценивать ряд моментов. Одни из самых насущных — сколько необходимо дискового пространства предоставить для пользователей и сервисов, а также какие имеются возможности расширения и масштабирования массива устройств хранения данных. Далее возникают более технические вопросы — сколько нужно дисков, какие контроллеры, материнские платы и конфигурацию RAID-Z нужно использовать. Ответить на данные вопросы нужно перед началом работ, поэтому остановимся на их рассмотрении более подробно.

    • Объем дискового пространства

    Из потребностей и требований к объему создаваемого хранилища, определяется количество HDD , их модели, а также тип конфигурации RAID-Z. Сразу приведу несколько рекомендаций:

    — максимальная надежность и производительность достигается при испольловании жестких дисков одной модели и производителя

    — ОС не следует размещать в самом хранилище, лучше использовать отдельный HDD/USB-напопитель

    — количество дисков должно соответствовать выбранной системе RAID-Z

    • Варианты RAID-Z

    Существует несколько разновидностей RAID-Z массивов, но сейчас мы рассмотрим два наиболее практичных и популярны:

    — raid-z1 — здесь используется для контроля четности один диск из пула (минимум дисков для организации данного вида массива — 3 шт). При выходе из строя одного диска, массив будет работать корректно, при его замене массив перестроится самостоятельно. При выходе из строя двух дисков — массив разрушается и данные восстановлению не подлежат.

    — raid-z2 — в данном случае для контроля четности выделяется 2 диска (минимум дисков для такой конфигурации — 5 шт.). Эта система является более отказоустойчивой.

    • Жесткие диски

    Как было сказано ранее — лучше всего использовать одинаковые диски одного производителя (объем, модель и т.п.). При этом, стоит учитывать один важный момент, который молодые специалисты упускают. Настоятельно рекомендуется приобретать на один диск больше, т.е. производить закупку по формуле n+1 количество дисков. Это снизит время простоя и риски потери информации при «заводском браке» или повреждении HDD при транспортировке, а также сократит время в будущем по замене неисправного жесткого диска. Стоит отметить, ZFS поддерживает «hot spare», т.е. можно выполнить конфигурирование пула и дисков так, что один из них будет использоваться для горячей замены (без остановки хранилища), в том числе и в автоматическом режиме. Также стоит понимать, что от количества жестких дисков зависит и скорость работы хранилища (за счет распределения нагрузки по дискам в моменты чтения и записи).

    • Другие компоненты системы

    Исходя из требований к объему хранилища, стоит выбирать мат. платы, контроллеры, блоки питания и корпуса для серверов с возможность расширения. При организации хранилища корпоративного класса стоит использовать только MB и RAM с контролем четности (ECC)!

    • Масштабируемость системы

    Как было сказано в предыдущем пункте — MB и корпуса серверов должны поддерживать установки дополнительных устройств. При этом, если создается хранилище начального или среднего класса (без серьезных требований к надежности и производительности системы), SATA-контроллеры могут стать узким местом.

    Подведем итог

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

    Кратко перечислю основные преимущества и свойства ZFS:

    • встроенные инструменты для работы с разделами HDD и организации RAID-Z
    • нет привязки к оборудованию
    • нечувствительна к незапланированным отключениям электропитания
    • автоматическая подмена вышедших из строя HDD, исправление ошибок и перестроение RAID
    • поддерживаются огромные размеры томов, файлов, пулов, а также легкая масштабируемость хранилища
    • быстрое и удобное администрирование ZFS Pool’ов
    • при увеличении HDD повышается производительность хранилища
    • дедупликация и сжатие данных

    К минусам данной файловой системы можно отнести:

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

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