Алексей Коробкин
В летнем релизе 6/06 ОС Solaris версии 10 появилась поддержка новой
файловой системы ZFS. Это интересное нововведение, и оно не менее значительно,
нежели зоны или система самодиагностики DTrace. Почему понадобилось изобретать
новую файловую систему вместо привычной ufs и чем она интересна?
Управление дисками
Когда администратор сервера подключает новое хранилище, он действует
примерно так: при помощи встроенного в хранилище менеджера дисков формирует
один или несколько аппаратных RAID-массивов, полученные дисковые тома разбивает
на разделы fdisk, а разделы затем размечает под файловые системы с помощью newfs,
mkfs и прочих. Если администратор, следуя современным тенденциям [2], решил построить
программный, а не аппаратный RAID-массив, то он должен воспользоваться ещё и
менеджером дисков операционной системы. Иными словами, процесс не выглядит
слишком простым: нужно совершить три действия, требующие повышенного внимания и
тщательного планирования, запустив для этого три программы, качество одной из
них зачастую зависит только от поставщика хранилища.
Инженеры Sun попытались упростить эту работу. Созданная
ими ZFS объединяет в себе все три слоя управления хранилищами. Новизна подхода
в том, что верхний слой – файловая система – знает, на каком массиве она
работает. В чем здесь преимущество? Например, зная размер файлов, которые она
туда пишет, ZFS может создавать полоски (stripes) переменной длины на массивах
RAID-0 и RAID-5, обеспечивая таким образом высокую скорость работы и повышенную
отказоустойчивость. ZFS высчитывает контрольные суммы для файлов, а не блоков
данных, избавляясь от возможной ошибки обычных RAID-массивов, когда блок с
правильной суммой бывает записан не туда, куда надо.
Кроме того, ZFS – транзакционная, а не журналируемая
файловая система. Она использует методику копирования при записи (copy on write),
и в случае, например, сбоя питания транзакция либо завершается, либо
игнорируется. При этом файловая система всегда остается в исправном состоянии.
Подключенные к серверу новые диски ZFS может
начать использовать сразу же. По аналогии с оперативной памятью, если мы
добавили в сервер память, нет необходимости что-то делать – операционная
система автоматически её распознает и задействует. Ограничений объёма
практически нет: ZFS – 128-битная файловая система, и её полное название звучит
как Zettabyte File System. Она может хранить 128 квадриллионов зетабайт данных.
Предполагается, что мы всегда объединяем все
доступные серверу хранилища и диски в единый массив ZFS, а внутри него строим
столько файловых систем, сколько нужно. Такой массив носит название пул (pool).
Конфигурация пула может быть самой разнообразной, варианты вы сейчас посмотрите
на примерах.
Пул файловых систем ZFS можно создать либо на
пустых дисках, либо на слайсах (slice) ufs, либо на отдельных файлах большого
размера. Естественно, в последнем случае надежность и скорость будут зависеть
от свойств основной файловой системы. Сначала попробуем на одном диске: