Руководство по администрированию файловых систем ZFS Solaris

Создание и уничтожение пулов устройств хранения данных ZFS

В следующих разделах описываются различные случаи создания и уничтожения пулов устройств хранения данных ZFS.

Операции по созданию и уничтожению пулов выполняются быстро и просто. Однако при выполнении этих операций следует соблюдать осторожность. Несмотря на наличие проверок для предотвращения включения уже используемых устройств в новый пул, ZFS не всегда может определить, используется ли устройство в данный момент времени. Процесс уничтожения пула еще проще. Команду zpool destroy следует использовать с осторожностью. Это простая команда, выполнение которой может иметь серьезные последствия.

Создание пула устройств хранения данных ZFS

Для создания пула устройств хранения данных используется команда zpool create. В качестве аргументов команды указывается имя пула и любое количество виртуальных устройств. Имя пула должно удовлетворять соглашениям о наименовании, перечисленным в разделе Требования к именованию компонентов ZFS.

Создание базового пула устройств хранения данных

Следующая команда используется для создания нового пула tank, состоящего из дисков 1t0d0 и c1t1d0.


# zpool create tank c1t0d0 c1t1d0

Эти целые диски расположены в каталоге /dev/dsk и соответствующим образом маркированы ZFS. Они содержат один большой подраздел. Для дисков организовано динамическое чередования полос данных.

Создание зеркального пула устройств хранения данных

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


# zpool create tank mirror c1d0 c2d0 mirror c3d0 c4d0

Второе ключевое слово mirror указывает на новое виртуальное устройство верхнего уровня. Данные динамически наносятся полосами на оба зеркала, причем данные являются избыточными на каждом диске.

Дополнительную информацию о рекомендуемых зеркальных конфигурациях см. на следующем сайте:

http://www.solarisinternals.com/wiki/index.php/ZFS_Best_Practices_Guide

В настоящее время в зеркальной конфигурации ZFS поддерживаются следующие операции:

В настоящее время для зеркальной конфигурации не поддерживаются следующие операции:

Создание корневого пула ZFS

В текущей версии Solaris установку и загрузку можно проводить с файловой системы ZFS. Ознакомьтесь со следующей информацией о настройке корневого пула:

Для получения дополнительных сведений об установке и загрузке корневой файловой системы ZFS см. Глава 5Установка и загрузка корневой файловой системы ZFS.

Создание пулов устройств хранения данных RAID-Z

Процедура создания пула RAID-Z с однократным контролем четности аналогична созданию зеркального пула за исключением того, что вместо raidz или raidz1 используется ключевое слово mirror. Ниже приведен пример создания пула с одним устройством RAID-Z из пяти дисков:


# zpool create tank raidz c1t0d0 c2t0d0 c3t0d0 c4t0d0 /dev/dsk/c5t0d0

Этот пример демонстрирует указание дисков с использованием полного пути. Устройство /dev/dsk/c5t0d0 идентично устройству c5t0d0.

Аналогичную конфигурацию можно создать из дисковых подразделов. Пример:


# zpool create tank raidz c1t0d0s0 c2t0d0s0 c3t0d0s0 c4t0d0s0 c5t0d0s0

Однако диски должны быть предварительно отформатированы и иметь нулевой подраздел требуемого размера.

Для создания конфигурации RAID-Z с двойным контролем четности в команде создания пула используется ключевое слово raidz2 Пример:


# zpool create tank raidz2 c1t0d0 c2t0d0 c3t0d0
# zpool status -v tank
  pool: tank
 state: ONLINE
 scrub: none requested
config:

        NAME          STATE     READ WRITE CKSUM
        tank          ONLINE       0     0     0
          raidz2      ONLINE       0     0     0
            c1t0d0    ONLINE       0     0     0
            c2t0d0    ONLINE       0     0     0
            c3t0d0    ONLINE       0     0     0

errors: No known data errors

В настоящее время в конфигурации RAID-Z ZFS поддерживаются следующие операции:

В настоящее время для конфигурации RAID-Z не поддерживаются следующие операции:

Для получения дополнительной информации о конфигурации RAID-Z см. Конфигурация пула устройств RAID-Z.

Создание пула устройств хранения данных ZFS с устройствами протоколирования

По умолчанию ZIL выделяется из блоков в основном пуле. Однако оптимальная производительность достигается с использованием отдельных устройств протоколирования, таких как NVRAM или выделенный диск. Дополнительная информация об устройствах протоколирования ZFS приведена в разделе Настройка отдельных устройств протоколирования ZFS.

Можно настроить устройство протоколирования ZFS при создании пула устройств хранения данных или после его создания.

Например, можно создать зеркальный пул устройств хранения данных с зеркальными устройствами протоколирования.


# zpool create datap mirror c1t1d0 c1t2d0 mirror c1t3d0 c1t4d0 log mirror c1t5d0 c1t8d0
# zpool status
  pool: datap
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        datap       ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            c1t1d0  ONLINE       0     0     0
            c1t2d0  ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            c1t3d0  ONLINE       0     0     0
            c1t4d0  ONLINE       0     0     0
        logs        ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            c1t5d0  ONLINE       0     0     0
            c1t8d0  ONLINE       0     0     0

errors: No known data errors

Информация о восстановлении после сбоя устройства протоколирования представлена в Пример 11–2.

Создание пула устройств хранения данных ZFS с устройствами кэширования

Для кэширования данных пула устройств хранения возможно создание пула устройств хранения с устройствами кэширования. Пример:


# zpool create tank mirror c2t0d0 c2t1d0 c2t3d0 cache c2t5d0 c2t8d0
# zpool status tank
  pool: tank
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            c2t0d0  ONLINE       0     0     0
            c2t1d0  ONLINE       0     0     0
            c2t3d0  ONLINE       0     0     0
        cache
          c2t5d0    ONLINE       0     0     0
          c2t8d0    ONLINE       0     0     0

Ознакомьтесь со следующими пунктами перед созданием пула устройств хранения данных ZFS с устройствами кэширования.

Отображение информации о виртуальных устройствах пула устройств хранения данных

Каждый пул устройств хранения данных состоит из одного или нескольких виртуальных устройств. Виртуальное устройство – это внутреннее представление пула устройств хранения данных, описывающее структуру физического уровня и характеристики отказоустойчивости. Таким образом, виртуальное устройство представляет дисковые устройства или файлы, используемые для создания пула устройств хранения данных. Пул может содержать любое число виртуальных устройств в вершине конфигурации, известной как корневое виртуальное устройство (vdev).

Избыточность данных обеспечивается двумя виртуальными устройствами верхнего уровня: зеркалом и виртуальными устройствами RAID-Z. Эти виртуальные устройства состоят из дисков, дисковых подразделов или файлов. Резерв представляет особый vdev, который отслеживает доступные устройства горячего резерва для пула.

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


# zpool create tank mirror c1d0 c2d0 mirror c3d0 c4d0

В следующем примере показано создание пула, который содержит одно корневое виртуальное устройство из 4 дисков.


# zpool create mypool raidz2 c1d0 c2d0 c3d0 c4d0

В этот пул можно добавить другой корневой vdev с помощью команды zpool add. Пример:


# zpool add mypool raidz2 c2d0 c3d0 c4d0 c5d0

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

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


# zpool status tank
  pool: tank
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            c0t1d0  ONLINE       0     0     0
            c1t1d0  ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            c0t2d0  ONLINE       0     0     0
            c1t2d0  ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            c0t3d0  ONLINE       0     0     0
            c1t3d0  ONLINE       0     0     0

Обработка ошибок при создании пула устройств хранения данных ZFS

Ошибки при создании пула могут возникать по многим причинам. Некоторые из этих причин очевидны – например, отсутствие указанного устройства; выявить другие может быть затруднительно.

Обнаружение используемых устройств

Перед форматированием устройства в ZFS сначала определяется, используется ли диск ZFS или другим компонентом операционной системы. Если диск используется, могут появиться следующие ошибки:


# zpool create tank c1t0d0 c1t1d0
invalid vdev specification
use '-f' to override the following errors:
/dev/dsk/c1t0d0s0 is currently mounted on /. Please see umount(1M).
/dev/dsk/c1t0d0s1 is currently mounted on swap. Please see swap(1M).
/dev/dsk/c1t1d0s0 is part of active ZFS pool zeepool. Please see zpool(1M).

Некоторые из этих ошибок можно подавить с помощью параметра -f, однако большинство ошибок таким образом устранить невозможно. Ниже показаны ошибки, которые должны быть исправлены вручную, а не при помощи параметра - f:

Смонтированная файловая система

Диск или один из его подразделов содержат смонтированную файловую систему. Для исправления этой ошибки выполните команду umount.

Файловая система в /etc/vfstab

Диск содержит файловую систему, указанную в файле /etc/vfstab, однако в настоящее время эта файловая система не смонтирована. Для исправления этой ошибки удалите или закомментируйте строку в файле /etc/vfstab.

Выделенное устройство дампа

Диск используется как выделенное устройство дампа в системе. Для исправления этой ошибки выполните команду dumpadm.

Часть пула ZFS

Диск или файл является компонентом активного пула устройств хранения данных ZFS. Чтобы исправить эту ошибку, используйте команду zpool destroy для уничтожения другого пула, если он более не требуется. Или используйте команду zpool detach, чтобы отсоединить диск от другого пула. Отсоединить можно только диск из зеркального пула устройств хранения данных.

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

Наличие файловой системы

Диск содержит известную файловую систему, хотя она не смонтирована и не используется.

Часть тома

Диск является частью тома SVM.

Live Upgrade

Диск используется в качестве альтернативной загрузочной среды для Solaris Live Upgrade.

Часть экспортированного пула ZFS

Диск является элементом пула устройств хранения данных, экспортированного или вручную удаленного из системы. В последнем случае пул имеет статус potentially active (потенциально активен), поскольку диск может быть подключенным к сети накопителем, используемым другой системой. При переопределении потенциально активного пула следует соблюдать осторожность.

Ниже приведен пример использования параметра -f:


# zpool create tank c1t0d0
invalid vdev specification
use '-f' to override the following errors:
/dev/dsk/c1t0d0s0 contains a ufs filesystem.
# zpool create -f tank c1t0d0

В идеальном случае вместо применения параметра -f следует исправить ошибки.

Несоответствующие уровни репликации

Создавать пулы с виртуальными устройствами на разных уровнях репликации не рекомендуется. Команда zpool позволяет предотвратить случайное создание пула с несоответствующей степенью избыточности. При попытке создания пула с такими настройками могут появиться следующие ошибки:


# zpool create tank c1t0d0 mirror c2t0d0 c3t0d0
invalid vdev specification
use '-f' to override the following errors:
mismatched replication level: both disk and mirror vdevs are present
# zpool create tank mirror c1t0d0 c2t0d0 mirror c3t0d0 c4t0d0 c5t0d0
invalid vdev specification
use '-f' to override the following errors:
mismatched replication level: 2-way mirror and 3-way mirror vdevs are present

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

Пробное создание пула устройств хранения данных

Поскольку при создании пула могут возникнуть непредвиденные ошибки, а форматирование дисков является потенциально опасной операцией, команда zpool create имеет дополнительный параметр -n, который позволяет создать пул без фактической записи данных на диск. Этот параметр используется для проверки использования устройства и уровня репликации и выявляет любые ошибки, возникающие в процессе создания пула. При отсутствии ошибок отображается следующий результат:


# zpool create -n tank mirror c1t0d0 c1t1d0
would create 'tank' with the following layout:

        tank
          mirror
            c1t0d0
            c1t1d0

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

Точка монтирования по умолчанию для пулов устройств хранения данных

Точкой монтирования корневого набора данных при создании пула является /имя_пула. Изначально этот каталог должен отсутствовать или быть пустым. Если каталог не существует, он создается автоматически. Если каталог пуст, корневой набор данных монтируется поверх существующего каталога. Для создания пула с другой точкой монтирования по умолчанию используется параметр - m команды zpool create:


# zpool create home c1t0d0
default mountpoint '/home' exists and is not empty
use '-m' option to specify a different default
# zpool create -m /export/zfs home c1t0d0

# zpool create home c1t0d0
default mountpoint '/home' exists and is not empty
use '-m' option to provide a different default
# zpool create -m /export/zfs home c1t0d0

Эта команда создает новый пул home и набор данных home с точкой монтирования /export/zfs.

Для получения дополнительной информации о точках монтирования см. Управление точками монтирования ZFS.

Уничтожение пулов устройств хранения данных ZFS

Для уничтожения пулов используется команда zpool destroy. Эта команда уничтожает пул, даже если он содержит смонтированные наборы данных.


# zpool destroy tank

Внимание – Внимание –

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


Уничтожение пула с неисправными устройствами

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

При создании нового пула об этих устройствах (если они уже исправны) будет сообщено как о потенциально активных, и при поиске пулов для импорта они отобразятся как допустимые. Если пул содержит такое количество неисправных устройств, что получает статус неисправного (это означает неисправность виртуального устройства), выводится соответствующее предупреждение, и выполнить команду без параметра -f невозможно. Этот параметр необходим из-за невозможности открыть пул и того, что неизвестно, хранятся ли в нем данные. Пример:


# zpool destroy tank
cannot destroy 'tank': pool is faulted
use '-f' to force destruction anyway
# zpool destroy -f tank

Для получения дополнительной информации о работоспособности пула и устройств см. Определение статуса работоспособности пулов устройств хранения данных ZFS.

Для получения дополнительной информации об импорте пулов см. Импорт пулов устройств хранения данных ZFS.