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

Глава 4 Управление пулами устройств хранения данных ZFS

В этой главе описываются процессы создания и администрирования пулов устройств хранения данных ZFS.

В этой главе содержатся следующие разделы:

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

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

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

Базовым элементом пула устройств хранения данных является физическое устройство. Это может быть любое блочное устройство объемом не менее 128 МБ. Обычно это жесткий диск, который является видимым в системе в каталоге /dev/dsk .

Устройство хранения может быть целым диском (c1t0d0) или отдельным подразделом (c0t0d0s7). Рекомендуется использовать весь диск, так как в этом случае его не потребуется специально форматировать. ZFS форматирует диск с использованием метки EFI, содержащей один большой подраздел. При таком использовании таблица разделов, выводимая с помощью команды format, выглядит следующим образом:


Current partition table (original):
Total disk sectors available: 17672849 + 16384 (reserved sectors)

Part      Tag    Flag     First Sector        Size        Last Sector
  0        usr    wm               256       8.43GB         17672849    
  1 unassigned    wm                 0          0              0    
  2 unassigned    wm                 0          0              0    
  3 unassigned    wm                 0          0              0    
  4 unassigned    wm                 0          0              0    
  5 unassigned    wm                 0          0              0    
  6 unassigned    wm                 0          0              0    
  8   reserved    wm          17672850       8.00MB         17689233 

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

При создании пула устройств хранения данных с целыми дисками системой ZFS используется метка EFI. Для получения дополнительных сведений о метках EFI см. раздел EFI Disk Label в System Administration Guide: Devices and File Systems.

Диск, предназначенный для корневого пула ZFS, должен быть создан с меткой SMI, а не EFI. Пользователь может изменить метку на SMI, используя команду format - e.

Диски можно указать с использованием полного пути, например /dev/dsk/c1t0d0, или краткого имени, состоящего из имени устройства в каталоге /dev/dsk, например c1t0d0. Например, допустимыми являются следующие имена дисков:

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

Дополнительная информация о рекомендациях по организации пула устройств хранения данных приведена на веб-сайте с примерами наиболее успешной практики ZFS:

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

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

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

При создании пула устройств хранения данных с дисковым подразделом диски могут маркироваться с использованием традиционных меток VTOC (SMI) Solaris.

Для загружаемого корневого пула ZFS диски в пуле должны содержать подразделы и иметь метку SMI. В простейшей настройке весь объем диска отдается подразделу 0, который используется как корневой пул.

В системе на основе SPARC на диске размером 72 ГБ доступны для использования 68 ГБ, расположенные в подразделе 0, как показано в следующих выходных данных команды format.


# format
.
.
.
Specify disk (enter its number): 4
selecting c1t1d0
partition> p
Current partition table (original):
Total disk cylinders available: 14087 + 2 (reserved cylinders)

Part      Tag    Flag     Cylinders         Size            Blocks
  0       root    wm       0 - 14086       68.35GB    (14087/0/0) 143349312
  1 unassigned    wm       0                0         (0/0/0)             0
  2     backup    wm       0 - 14086       68.35GB    (14087/0/0) 143349312
  3 unassigned    wm       0                0         (0/0/0)             0
  4 unassigned    wm       0                0         (0/0/0)             0
  5 unassigned    wm       0                0         (0/0/0)             0
  6 unassigned    wm       0                0         (0/0/0)             0
  7 unassigned    wm       0                0         (0/0/0)             0

В системе на основе x86 на диске размером 72 ГБ доступны для использования 68 ГБ, расположенные в подразделе 0, как показано в следующих выходных данных команды format. В подразделе 8 содержатся загрузочные данные в небольшом объеме. Подраздел 8 не нуждается в администрировании; его изменение невозможно.


# format
.
.
.
selecting c1t0d0
partition> p
Current partition table (original):
Total disk cylinders available: 49779 + 2 (reserved cylinders)

Part      Tag    Flag     Cylinders         Size            Blocks
  0       root    wm       1 - 49778       68.36GB    (49778/0/0) 143360640
  1 unassigned    wu       0                0         (0/0/0)             0
  2     backup    wm       0 - 49778       68.36GB    (49779/0/0) 143363520
  3 unassigned    wu       0                0         (0/0/0)             0
  4 unassigned    wu       0                0         (0/0/0)             0
  5 unassigned    wu       0                0         (0/0/0)             0
  6 unassigned    wu       0                0         (0/0/0)             0
  7 unassigned    wu       0                0         (0/0/0)             0
  8       boot    wu       0 -     0        1.41MB    (1/0/0)          2880
  9 unassigned    wu       0                0         (0/0/0)             0

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

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

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

Однако файлы – это удобная возможность ознакомления с ZFS или экспериментирования с более сложными схемами размещения (при отсутствии необходимых физических устройств). Для всех файлов должен быть указан полный путь, и их размер должен составлять не менее 64 МБ. При перемещении или переименовании файла пул необходимо экспортировать и повторно импортировать, поскольку ни один идентификатор устройства не связан с файлами, по которым можно определить местоположение.

Функции репликации пула устройств хранения данных ZFS

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

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

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


mirror c1t0d0 c2t0d0

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


mirror c1t0d0 c2t0d0 c3t0d0 mirror c4t0d0 c5t0d0 c6t0d0

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

Конфигурация пула устройств RAID-Z

Помимо зеркальной конфигурации пула устройств хранения данных, ZFS поддерживает отказоустойчивую конфигурацию RAID-Z с однократным или двойным контролем четности. Конфигурация RAID-Z с однократным контролем четности аналогична RAID-5. Конфигурация RAID-Z с двойным контролем четности аналогична RAID-6.

Все традиционные алгоритмы, подобные RAID-5 (например, RAID-4, RAID-6, RDP и EVEN-ODD), имеют проблему, известную как "дыра записи RAID-5". Если записана только часть чередования полос RAID-5, при потере питания до записи всех блоков на диск информация о четности не будет соответствовать состоянию данных, следовательно, контроль по четности будет бессмысленным (до тех пор, пока не будет произведена перезапись всего чередования полос). В RAID-Z ZFS использует чередование полос RAID переменной ширины и обеспечивает запись на всю полосу. Это возможно исключительно благодаря интеграции в ZFS модели управления файловыми системами и устройствами, при которой метаданные файловой системы содержат достаточно информации о базовой модели избыточности данных для обработки чередования полос RAID переменной ширины. RAID-Z – первое в мире чисто программное решение для эффективного заполнения полос при записи RAID-5.

Конфигурация RAID-Z с N дисками объемом X и с P дисками для контроля четности может содержать около (N-P)*X байт и выдерживать сбой P устройств до нарушения целостности данных. Для конфигурации RAID-Z с однократным контролем четности необходимы по крайней мере два диска, а для конфигурации с двойным контролем четности – по крайней мере три диска. Например, при наличии в конфигурации RAID-Z с однократным контролем четности трех дисков данные для контроля четности занимают пространство, равное одному из этих трех дисков. В других случаях какое-либо специальное оборудование для создания конфигурации RAID-Z не требуется.

Простая конфигурация RAID-Z с тремя дисками выглядит следующим образом:


raidz c1t0d0 c2t0d0 c3t0d0

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


raidz c1t0d0 c2t0d0 c3t0d0 c4t0d0 c5t0d0 c6t0d0 c7t0d0 raidz c8t0d0 c9t0d0 c10t0d0 c11t0d0
c12t0d0 c13t0d0 c14t0d0

При создании конфигурации RAID-Z с несколькими дисками, как в данном примере, конфигурацию RAID-Z с 14 дисками предпочтительно разбить на две группы по 7 дисков. Для повышения производительности рекомендуется создавать конфигурации RAID-Z с количеством дисков от 1 до 9.

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

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

http://blogs.sun.com/roller/page/roch?entry=when_to_and_not_to

Дополнительные рекомендации по пулам устройств хранения данных RAID-Z см. на веб-сайте с примерами наиболее успешной практики ZFS:

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

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

Гибридный пул устройств хранения данных ZFS, доступный в продуктах линейки Sun Storage 7000, представляет собой особый пул устройств хранения данных, объединяющий DRAM, SSD и HDD в целях повышения производительности и увеличения емкости при одновременном снижении энергопотребления. Также можно выбрать настройку избыточности ZFS для пула устройств хранения данных, которая позволяет простым образом управлять остальными параметрами настройки с помощью интерфейса управления данного продукта.

Для получения дополнительных сведениях о данном продукте см. документ Sun Storage Unified Storage System Administration Guide.

Самовосстановление данных в конфигурации с избыточностью

ZFS обеспечивает самовосстановление данных в зеркальной конфигурации или конфигурации RAID-Z.

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

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

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

При добавлении виртуальных устройств в пул ZFS постепенно переносит данные в новое устройство для поддержания производительности и политики распределения пространства. Каждое виртуальное устройство также может представлять собой зеркало или устройство RAID-Z, содержащее другие дисковые устройства или файлы. Эта конфигурация обеспечивает гибкость в управлении характеристиками отказоустойчивости пула. Например, из 4 дисков можно создать следующие конфигурации:

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

Создание и уничтожение пулов устройств хранения данных 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.

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

Большая часть информации по устройствам представлена в разделе Компоненты пула устройств хранения данных ZFS. После создания пула можно выполнить ряд задач по управлению физическими устройствами в пуле.

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

Добавить пространство в пул можно динамически путем добавления нового виртуального устройства верхнего уровня. Это пространство немедленно становится доступным для всех наборов данных в пуле. Для добавления в пул нового виртуального устройства используется команда zpool add. Пример:


# zpool add zeepool mirror c2t1d0 c2t2d0

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


# zpool add -n zeepool mirror c3t1d0 c3t2d0
would update 'zeepool' to the following configuration:
      zeepool
        mirror
            c1t0d0
            c1t1d0
        mirror
            c2t1d0
            c2t2d0
        mirror
            c3t1d0
            c3t2d0

Этот синтаксис позволяет добавить зеркальные устройства c3t1d0 и c3t2d0 в существующую конфигурацию zeepool.

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


Пример 4–1 Добавление дисков в зеркальную конфигурацию ZFS

В следующем примере еще одно зеркало добавляется в существующую зеркальную конфигурацию ZFS в системе Sun Fire x4500.


# 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

errors: No known data errors
# zpool add tank mirror c0t3d0 c1t3d0
# 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

errors: No known data errors


Пример 4–2 Добавление дисков в конфигурацию RAID-Z

Аналогичным образом в конфигурацию RAID-Z добавляются дополнительные диски. Следующий пример демонстрирует преобразование пула устройств хранения данных с одним устройством RAID–Z, содержащего 3 диска, в пул устройств хранения данных RAID-Z, содержащий 3 диска.


# zpool status
  pool: rpool
 state: ONLINE
 scrub: none requested
config:
        NAME         STATE     READ WRITE CKSUM
        rpool        ONLINE       0     0     0
          raidz1     ONLINE       0     0     0
            c1t2d0   ONLINE       0     0     0
            c1t3d0   ONLINE       0     0     0
            c1t4d0   ONLINE       0     0     0

errors: No known data errors
# zpool add rpool raidz c2t2d0 c2t3d0 c2t4d0
# zpool status
  pool: rpool
 state: ONLINE
 scrub: none requested
config:
        NAME         STATE     READ WRITE CKSUM
        rpool        ONLINE       0     0     0
          raidz1     ONLINE       0     0     0
            c1t2d0   ONLINE       0     0     0
            c1t3d0   ONLINE       0     0     0
            c1t4d0   ONLINE       0     0     0
          raidz1     ONLINE       0     0     0
            c2t2d0   ONLINE       0     0     0
            c2t3d0   ONLINE       0     0     0
            c2t4d0   ONLINE       0     0     0

errors: No known data errors


Пример 4–3 Добавление зеркального устройства протоколирования в пул устройств хранения данных ZFS

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


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

        NAME         STATE     READ WRITE CKSUM
        newpool      ONLINE       0     0     0
          mirror     ONLINE       0     0     0
            c1t9d0   ONLINE       0     0     0
            c1t10d0  ONLINE       0     0     0

errors: No known data errors
# zpool add newpool log mirror c1t11d0 c1t12d0
# zpool status newpool
  pool: newpool
 state: ONLINE
 scrub: none requested
config:

        NAME         STATE     READ WRITE CKSUM
        newpool      ONLINE       0     0     0
          mirror     ONLINE       0     0     0
            c1t9d0   ONLINE       0     0     0
            c1t10d0  ONLINE       0     0     0
        logs         ONLINE       0     0     0
          mirror     ONLINE       0     0     0
            c1t11d0  ONLINE       0     0     0
            c1t12d0  ONLINE       0     0     0

errors: No known data errors

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



Пример 4–4 Добавление и удаление устройств кэширования в пуле устройств хранения данных ZFS

Пользователь может добавлять и удалять устройства кэширования в пуле устройств хранения ZFS

Используйте команду zpool add для добавления устройств кэширования. Пример:


# zpool add tank 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

errors: No known data errors

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

Используйте команду·zpool remove для удаления устройств кэширования. Пример:


# zpool remove tank 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

errors: No known data errors

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

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


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

Помимо команды zpool add для добавления нового устройства в существующую зеркальную или незеркальную конфигурацию может использоваться команда zpool attach.

Если выполняется добавление или отключение диска в корневом пуле ZFS в целях замены диска, см. Замена диска в корневом пуле ZFS.


Пример 4–5 Преобразование двустороннего зеркального пула устройств хранения данных в трехсторонний зеркальный пул

В этом примере zeepool представляет собой существующее двустороннее зеркало, преобразуемое в трехстороннее зеркало путем присоединения нового устройства c2t1d0 к существующему устройству c1t1d0.


# zpool status
  pool: zeepool
 state: ONLINE
 scrub: none requested
config:
        NAME        STATE     READ WRITE CKSUM
        zeepool     ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            c0t1d0  ONLINE       0     0     0
            c1t1d0  ONLINE       0     0     0
errors: No known data errors
# zpool attach zeepool c1t1d0 c2t1d0
# zpool status
  pool: zeepool
 state: ONLINE
 scrub: resilver completed after 0h0m with 0 errors on Fri Aug 28 14:11:33 2009
config:

        NAME        STATE     READ WRITE CKSUM
        zeepool     ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            c0t1d0  ONLINE       0     0     0
            c1t1d0  ONLINE       0     0     0
            c2t1d0  ONLINE       0     0     0 73.5K resilvered

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



Пример 4–6 Преобразование пула устройств хранения данных ZFS без избыточности в зеркальный пул

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


# zpool create tank c0t1d0
# zpool status
  pool: tank
 state: ONLINE
 scrub: none requested
config:
        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          c0t1d0    ONLINE       0     0     0

errors: No known data errors
# zpool attach tank c0t1d0 c1t1d0
# zpool status
  pool: tank
 state: ONLINE
 scrub: resilver completed after 0h0m with 0 errors on Fri Aug 28 14:13:12 2009
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 73.5K resilvered

Для отсоединения устройства от зеркального пула устройств хранения данных используется команда zpool detach. Пример:


# zpool detach zeepool c2t1d0

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


# zpool detach newpool c1t2d0
cannot detach c1t2d0: only applicable to mirror and replacing vdevs

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

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


Примечание –

Для замены устройств их перевод в автономный режим не требуется.


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

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

Перевод устройства в автономный режим

Для перевода устройства в автономный режим используется команда zpool offline. Требуемое устройство можно указать при помощи пути или краткого имени (если это устройство является диском). Пример:


# zpool offline tank c1t0d0
bringing device c1t0d0 offline

При переводе устройства в автономный режим необходимо учитывать следующее:

При запросе состояния пула устройства в автономном режиме имеют статус OFFLINE. Для получения информации о запросе состояния пула см. Запрос состояния пула устройств хранения данных ZFS.

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

Перевод устройства в оперативный режим

После перевода устройства в автономный режим его можно восстановить с помощью команды zpool online:


# zpool online tank c1t0d0
bringing device c1t0d0 online

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

При попытке перевода в оперативный режим неисправного устройства выводится сообщение об ошибке, подобное следующему:


# zpool online tank c1t0d0
warning: device 'c1t0d0' onlined, but remains in faulted state
use 'zpool replace' to replace devices that are no longer present

Кроме того, с помощью fmd можно просмотреть сообщение отказавшего диска.


SUNW-MSG-ID: ZFS-8000-D3, TYPE: Fault, VER: 1, SEVERITY: Major
EVENT-TIME: Fri Aug 28 14:08:39 MDT 2009
PLATFORM: SUNW,Sun-Fire-T200, CSN: -, HOSTNAME: neo2
SOURCE: zfs-diagnosis, REV: 1.0
EVENT-ID: 9da778a7-a828-c88a-d679-c9a7873f4808
DESC: A ZFS device failed.  Refer to http://sun.com/msg/ZFS-8000-D3 for more information.
AUTO-RESPONSE: No automated response will occur.
IMPACT: Fault tolerance of the pool may be compromised.
REC-ACTION: Run 'zpool status -x' and replace the bad device.

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

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

При переводе устройства в автономный режим вследствие сбоя, приводящего к отображению списка ошибок в выходных данных команды zpool status, можно сбросить счетчики ошибок с помощью команды zpool clear.

Если аргументы не указаны, команда сбрасывает ошибки всех устройств в пуле. Пример:


# zpool clear tank

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


# zpool clear tank c1t0d0

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

Замена устройств в пуле устройств хранения данных

Можно заменить устройство в пуле устройств хранения данных с помощью команды zpool replace.

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


# zpool replace tank c1t1d0

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


# zpool replace tank c1t1d0 c1t2d0

Если в корневом пуле ZFS выполняется замена диска, см. Замена диска в корневом пуле ZFS.

Основные действия для замены диска:

В некоторых системах, например Sun Fire x4500, необходимо удалить диск из конфигурации перед его переводом в автономный режим. Если вы просто заменяете диск в одном гнезде в этой системе, достаточно выполнить команду zpool replace, как описано выше.

Как пример замены диска в этой системе см. Пример 11–1.

При замене устройства в пуле устройств хранения данных ZFS необходимо учитывать следующее:

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

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

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

Устройства могут быть назначены в качестве устройств горячего резерва следующими способами:

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


# zpool create zeepool mirror c1t1d0 c2t1d0 spare c1t2d0 c2t2d0
# zpool status zeepool
pool: zeepool
 state: ONLINE
 scrub: none requested
config:

        NAME         STATE     READ WRITE CKSUM
        zeepool      ONLINE       0     0     0
          mirror     ONLINE       0     0     0
            c1t1d0   ONLINE       0     0     0
            c2t1d0   ONLINE       0     0     0
        spares
          c1t2d0     AVAIL   
          c2t2d0     AVAIL   

Устройства горячего резерва необходимо назначать путем их добавления в пул после его создания. Пример:


# zpool add zeepool spare c1t3d0 c2t3d0
# zpool status zeepool
pool: zeepool
 state: ONLINE
 scrub: none requested
config:

        NAME         STATE     READ WRITE CKSUM
        zeepool      ONLINE       0     0     0
          mirror     ONLINE       0     0     0
            c1t1d0   ONLINE       0     0     0
            c2t1d0   ONLINE       0     0     0
        spares
          c1t3d0     AVAIL   
          c2t3d0     AVAIL   

Несколько пулов могут совместно использовать устройства, назначенные в качестве устройств горячего резерва. Пример:


# zpool create zeepool mirror c1t1d0 c2t1d0 spare c1t2d0 c2t2d0
# zpool create tank raidz c3t1d0 c4t1d0 spare c1t2d0 c2t2d0

Для удаления устройств горячего резерва из пула устройств хранения данных используется команда zpool remove. Пример:


# zpool remove zeepool c1t2d0
# zpool status zeepool
pool: zeepool
 state: ONLINE
 scrub: none requested
config:

        NAME         STATE     READ WRITE CKSUM
        zeepool      ONLINE       0     0     0
          mirror     ONLINE       0     0     0
            c1t1d0   ONLINE       0     0     0
            c2t1d0   ONLINE       0     0     0
        spares
          c1t3d0     AVAIL

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

При использовании устройств горячего резерва ZFS необходимо учитывать следующее:

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

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

Для замены устройства на устройство горячего резерва вручную используется команда zpool replace. Пример:


# zpool replace zeepool c2t1d0 c2t3d0
# zpool status zeepool
  pool: zeepool
 state: ONLINE
 scrub: resilver completed after 0h0m with 0 errors on Fri Aug 28 14:16:04 2009
config:

        NAME           STATE     READ WRITE CKSUM
        zeepool        ONLINE       0     0     0
          mirror       ONLINE       0     0     0
            c1t2d0     ONLINE       0     0     0
            spare      ONLINE       0     0     0
              c2t1d0   ONLINE       0     0     0
              c2t3d0   ONLINE       0     0     0  76.5K resilvered
        spares
          c2t3d0      INUSE     currently in use

errors: No known data errors

При доступности устройства горячего резерва неисправное устройство заменяется автоматически. Пример:


# zpool status -x
  pool: zeepool
 state: DEGRADED
status: One or more devices could not be opened.  Sufficient replicas exist for
        the pool to continue functioning in a degraded state.
action: Attach the missing device and online it using 'zpool online'.
   see: http://www.sun.com/msg/ZFS-8000-D3
 scrub: resilver completed after 0h12m with 0 errors on Fri Aug 28 14:18:16 2009
config:

        NAME                 STATE     READ WRITE CKSUM
        zeepool              DEGRADED     0     0     0
          mirror             DEGRADED     0     0     0
            c1t2d0           ONLINE       0     0     0
            spare            DEGRADED     0     0     0
              c2t1d0         UNAVAIL      0     0     0  cannot open
              c2t3d0         ONLINE       0     0     0  58.5K resilvered
        spares
          c2t3d0             INUSE     currently in use

errors: No known data errors

В настоящее время существует три способа деактивации устройств горячего резерва:

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


# zpool detach zeepool c2t3d0
# zpool status zeepool
  pool: zeepool
 state: ONLINE
 scrub: resilver completed with 0 errors on Fri Aug 28 14:21:02 2009
config:

        NAME               STATE     READ WRITE CKSUM
        zeepool            ONLINE       0     0     0
          mirror           ONLINE       0     0     0
            c1t2d0         ONLINE       0     0     0
            c2t1d0         ONLINE       0     0     0
        spares
          c2t3d0           AVAIL

errors: No known data errors

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

Для отображения информации о свойствах пула можно использовать команду zpool get. Пример:


# zpool get all mpool
NAME   PROPERTY       VALUE                 SOURCE
mpool  size           33.8G                 -
mpool  used           5.91G                 -
mpool  available      27.8G                 -
mpool  capacity       17%                   -
mpool  altroot        -                     default
mpool  health         ONLINE                -
mpool  guid           17361998391267837263  -
mpool  version        10                    default
mpool  bootfs         mpool/ROOT/zfs2BE     local
mpool  delegation     on                    default
mpool  autoreplace    on                    local
mpool  cachefile      -                     default
mpool  failmode       continue              local
mpool  listsnapshots  on                    default

Свойства пула устройств хранения данных можно указывать с помощью команды zpool set. Пример:


# zpool set autoreplace=on mpool
# zpool get autoreplace mpool
NAME  PROPERTY     VALUE    SOURCE
mpool autoreplace  on       default
Таблица 4–1 Описание свойств пула ZFS

Имя свойства 

Тип 

Значение по умолчанию 

Описание 

altroot

Строка 

off 

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

available

Число 

нет 

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

На это свойство можно также ссылаться с помощью сокращенного имени столбца avail.

autoreplace

Логическое значение 

off

Управляет автоматической заменой устройств. Если свойство отключено, замена устройства должна инициироваться администратором с помощью команды zpool replace. Если свойство включено, все новые устройства, обнаруженные в том же физическом расположении, что и устройство, ранее принадлежавшее пулу, автоматически форматируются и заменяются. Настройка по умолчанию – off. На это свойство можно также ссылаться с помощью сокращенного имени столбца replace.

bootfs

Логическое значение 

нет 

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

CAPACITY

Число 

нет 

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

На это свойство можно также ссылаться с помощью сокращенного имени столбца cap.

delegation

Логическое значение 

on

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

failmode

Строка 

wait

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

  • wait – блокирует весь доступ на ввод-вывод до восстановления подключения устройства и сброса ошибок с помощью команды zpool clear. Это поведение по умолчанию.

  • continue – возвращает EIO во все новые запросы ввода/вывода, но позволяет чтение всех остающихся работоспособных устройств. Любые запросы на операции записи, которые еще не записаны на диск, будут блокированы. После переподключения или замены устройства необходимо сбросить ошибки с помощью команды zpool clear.

  • panic – выводит на консоль сообщение и выполняет аварийный дамп системы.

guid

Строка 

нет 

Доступное только для чтения свойство, которое определяет уникальный идентификатор пула.

HEALTH

Строка 

нет 

Доступное только для чтения свойство, которое определяет текущую работоспособность пула с помощью значений ONLINE, DEGRADED, FAULTED, OFFLINE, REMOVED или UNAVAIL..

listsnapshots

Строка 

off 

Определяет, должна ли ассоциированная с данным пулом информация снимка отображаться с помощью команды zfs list. Если это свойство отключено, для вывода данных о снимках можно воспользоваться командой zfs list -t snapshot. Значением по умолчанию является on.

size

Число 

нет 

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

used

Число 

нет 

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

version

Число 

нет 

Определяет текущую версию пула на диске. Это значение может увеличиваться, но не может уменьшаться. Лучшим средством обновления пула является команда zpool upgrade, хотя это свойство можно использовать, если для совместимости с предыдущими версиями требуется конкретная версия пула. Значением этого свойства может быть любое число от 1 до текущей версии, которую возвращает команда zpool upgrade - v. Значение current представляет псевдоним для последней поддерживаемой версии.

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

Команда zpool list обеспечивает ряд способов для запроса информации о состоянии пула. Как правило, доступная информация подразделяется на три категории: базовая информация об использовании, статистика ввода/вывода и статус работоспособности. В этом разделе рассматриваются все три типа информации о пулах устройств хранения данных.

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

Для просмотра базовой информации о пулах используется команда zpool list.

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

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


# zpool list
NAME                    SIZE    USED   AVAIL    CAP  HEALTH     ALTROOT
tank                   80.0G   22.3G   47.7G    28%  ONLINE     -
dozer                   1.2T    384G    816G    32%  ONLINE     -

В этих выходных данных содержится следующая информация:

NAME

Имя пула.

SIZE

Общая емкость пула, равная сумме емкостей всех виртуальных устройств верхнего уровня.

USED

Объем пространства, распределяемый между всеми наборами данных и внутренними метаданными. Следует отметить, что этот объем отличается от объема пространства на уровне файловой системы.

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

AVAILABLE

Объем нераспределенного пространства в пуле.

CAPACITY (CAP)

Объем используемого пространства, выраженный как процент от общего пространства.

HEALTH

Текущий статус работоспособности пула.

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

ALTROOT

Альтернативный корень пула, если таковой имеется.

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

Также можно получить статистику по определенному пулу, указав имя пула. Пример:


# zpool list tank
NAME                    SIZE    USED   AVAIL    CAP  HEALTH     ALTROOT
tank                   80.0G   22.3G   47.7G    28%  ONLINE     -

Вывод определенной статистики по пулу устройств хранения данных

Для запроса определенной статистики используется параметр -o. Этот параметр позволяет выполнять пользовательские отчеты или быстро получить требуемые данные. Например, для вывода списка имен и емкостей каждого пула используется следующий синтаксис:


# zpool list -o name,size
NAME                    SIZE
tank                   80.0G
dozer                   1.2T

Имена столбцов соответствуют свойствам, перечисленным в разделе Вывод информации обо всех пулах устройств хранения данных.

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

Стандартные выходные данные команды zpool list в первую очередь удобочитаемы, однако их сложно использовать в сценариях интерпретатора команд. Для упрощения использования этой команды в сценариях имеется параметр -H для подавления вывода заголовков столбцов и разделения поля символами табуляции вместо пробелов. Например, для запроса простого списка всех имен пулов в системе можно ввести следующую команду:


# zpool list -Ho name
tank
dozer

Ниже приведен еще один пример:


# zpool list -H -o name,size
tank   80.0G
dozer  1.2T

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

ZFS автоматически регистрирует успешные команды zfs и zpool, изменяющие информацию о состоянии пула. Для просмотра этой информации используется команда zpool history.

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


# zpool history
History for 'rpool':
2009-05-07.13:51:00 zpool create -f -o failmode=continue -R /a -m legacy -o cachefile=
/tmp/root/etc/zfs/zpool.cache rpool c1t0d0s0
2009-05-07.13:51:01 zfs set canmount=noauto rpool
2009-05-07.13:51:02 zfs set mountpoint=/rpool rpool
2009-05-07.13:51:02 zfs create -o mountpoint=legacy rpool/ROOT
2009-05-07.13:51:03 zfs create -b 8192 -V 2048m rpool/swap
2009-05-07.13:51:04 zfs create -b 131072 -V 1024m rpool/dump
2009-05-07.13:51:09 zfs create -o canmount=noauto rpool/ROOT/snv_114
2009-05-07.13:51:10 zpool set bootfs=rpool/ROOT/snv_114 rpool
2009-05-07.13:51:10 zfs set mountpoint=/ rpool/ROOT/snv_114
2009-05-07.13:51:11 zfs set canmount=on rpool
2009-05-07.13:51:12 zfs create -o mountpoint=/export rpool/export
2009-05-07.13:51:12 zfs create rpool/export/home

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

Протокол журнала имеет следующие характеристики:

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


# zpool history mypool
History for 'mypool':
2009-06-02.10:56:54 zpool create mypool mirror c0t4d0 c0t5d0
2009-06-02.10:57:31 zpool add mypool spare c0t6d0
2009-06-02.10:57:54 zpool offline mypool c0t5d0
2009-06-02.10:58:02 zpool online mypool c0t5d0

Параметр -l позволяет отображать длинный формат с указанием имени пользователя, имени узла и зоны, в которой выполняется операция. Пример:


# zpool history -l mypool
History for 'mypool':
2009-06-02.10:56:54 zpool create mypool mirror c0t4d0 c0t5d0 [user root on neo:global]
2009-06-02.10:57:31 zpool add mypool spare c0t6d0 [user root on neo:global]
2009-06-02.10:57:54 zpool offline mypool c0t5d0 [user root on neo:global]
2009-06-02.10:58:02 zpool online mypool c0t5d0 [user root on neo:global]

Параметр -i позволяет отображать сведения о внутренних событиях, которые можно использовать для диагностики. Пример:


# zpool history -i mypool
History for 'mypool':
2009-06-02.10:56:54 zpool create mypool mirror c0t4d0 c0t5d0
2009-06-02.10:57:31 zpool add mypool spare c0t6d0
2009-06-02.10:57:54 zpool offline mypool c0t5d0
2009-06-02.10:58:02 zpool online mypool c0t5d0
2009-06-02.11:02:20 [internal create txg:23] dataset = 24
2009-06-02.11:02:20 [internal property set txg:24] mountpoint=/data dataset = 24
2009-06-02.11:02:20 zfs create -o mountpoint=/data mypool/data
2009-06-02.11:02:34 [internal create txg:26] dataset = 30
2009-06-02.11:02:34 zfs create mypool/data/datab

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

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

USED CAPACITY

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

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

AVAILABLE CAPACITY

Объем пространства, доступного в пуле или устройстве. Как и в статистике по показателю used, этот объем незначительно отличается от объема пространства, доступного для наборов данных.

READ OPERATIONS

Количество операций чтения для пула или устройства, включая запросы метаданных.

WRITE OPERATIONS

Количество операций записи для пула или устройства.

READ BANDWIDTH

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

WRITE BANDWIDTH

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

Вывод статистики по всему пулу

Если параметры не указаны, команда zpool iostat выводит полную статистику с момента начальной загрузки для всех пулов в системе. Пример:


# zpool iostat
               capacity     operations    bandwidth
pool         used  avail   read  write   read  write
----------  -----  -----  -----  -----  -----  -----
tank         100G  20.0G   1.2M   102K   1.2M  3.45K
dozer       12.3G  67.7G   132K  15.2K  32.1K  1.20K

Поскольку эта статистика суммируется с момента начальной загрузки, при низком уровне активности пула полоса пропускания может быть определена как относительно свободная. Указание конкретного интервала позволяет получить более точные данные по текущему использованию полосы пропускания. Пример:


# zpool iostat tank 2
               capacity     operations    bandwidth
pool         used  avail   read  write   read  write
----------  -----  -----  -----  -----  -----  -----
tank         100G  20.0G   1.2M   102K   1.2M  3.45K
tank         100G  20.0G    134      0  1.34K      0
tank         100G  20.0G     94    342  1.06K   4.1M

В этом примере отображается статистика использования только для пула tank, обновляемая каждые две секунды до нажатия Ctrl+C. Также можно указать дополнительный параметр count, завершающий выполнение команды после определенного количества итераций. Например, команда zpool iostat 2 3 выводит сводку через каждые две секунды в рамках трех итераций, в общей сложности в течение шести секунд. При наличии только одного пула статистика отображается в последовательных строках. При наличии нескольких пулов каждая итерация визуально выделяется дополнительной пунктирной линией.

Вывод статистики по виртуальному устройству

Помимо статистики ввода/вывода по всему пулу, команда zpool iostat позволяет просмотреть статистику по определенным виртуальным устройствам. Эта команда может использоваться для выявления медленно работающих устройств или просто для контроля данных ввода/вывода, генерируемых ZFS. Для запроса полной структуры виртуального устройства с полной статистикой ввода/вывода используется команда zpool iostat -v. Пример:


# zpool iostat -v
               capacity     operations    bandwidth
tank         used  avail   read  write   read  write
----------  -----  -----  -----  -----  -----  -----
mirror      20.4G  59.6G      0     22      0  6.00K
  c1t0d0        -      -      1    295  11.2K   148K
  c1t1d0        -      -      1    299  11.2K   148K
----------  -----  -----  -----  -----  -----  -----
total       24.5K   149M      0     22      0  6.00K

При просмотре статистики ввода/вывода по отдельным виртуальным устройствам обратите внимание на две важных особенности:

Тот же набор параметров (интервал и количество) используется при исследовании статистики виртуальных устройств.

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

В ZFS предусмотрены методы проверки работоспособности устройства и пула. Работоспособность пула определяется на основе состояния всех его устройств. Эта информация о состоянии отображается с помощью команды zpool status. Кроме того, для выявления потенциальных сбоев пула и устройств используется команда fmd, и они отображаются в системной консоли и в файле /var/adm/messages. В этом разделе описывается процедура определения работоспособности пула и устройства. Способы устранения сбоев или восстановления неработоспособных пулов здесь не рассматриваются. Дополнительно об устранении неполадок и восстановлении данных см. Глава 11Поиск и устранение сбоев и восстановление данных в ZFS.

Каждое устройство может находиться в одном из следующих состояний:

ONLINE

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

DEGRADED

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

FAULTED

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

OFFLINE

Виртуальное устройство было явно переведено администратором в автономный режим.

UNAVAILABLE

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

REMOVED

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

Работоспособность пула определяется на основе работоспособности всех виртуальных устройств верхнего уровня. Если все виртуальные устройства находятся в состоянии ONLINE, то пул также находится в состоянии ONLINE. Если какое-либо из виртуальных устройств находится в состоянии DEGRADED или UNAVAILABLE, то пул также находится в состоянии DEGRADED. Если виртуальное устройство верхнего уровня находится в состоянии FAULTED или OFFLINE, то пул также находится в состоянии FAULTED. Пул в состоянии FAULTED полностью недоступен. Восстановление данных без подключения или исправления требуемых устройств невозможно. Пул в состоянии DEGRADED продолжает функционировать, но обеспечение того же уровня избыточности данных или пропускной способности, что и при состоянии ONLINE, невозможно.

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

Наиболее простым способом получения краткого обзора статуса работоспособности пула является команда zpool status:


# zpool status -x
all pools are healthy

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

Подробная информация о работоспособности

Для запроса более подробных данных по работоспособности используется параметр -v. Пример:


# zpool status -v tank
  pool: tank
 state: DEGRADED
status: One or more devices could not be opened.  Sufficient replicas exist 
        for the pool to continue functioning in a degraded state.
action: Attach the missing device and online it using 'zpool online'.
   see: http://www.sun.com/msg/ZFS-8000-2Q
 scrub: none requested
config:

        NAME                STATE     READ WRITE CKSUM
        tank                DEGRADED     0     0     0
          mirror            DEGRADED     0     0     0
            c1t0d0          FAULTED      0     0     0  cannot open
            c1t1d0          ONLINE       0     0     0
errors: No known data errors

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

В приведенном выше примере неисправное устройство требуется заменить. После замены устройства для его перевода обратно в оперативный режим используется команда zpool online. Пример:


# zpool online tank c1t0d0
Bringing device c1t0d0 online
# zpool status -x
all pools are healthy

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


# zpool status -x
  pool: tank
 state: DEGRADED
status: One or more devices has been taken offline by the adminstrator.
        Sufficient replicas exist for the pool to continue functioning in a
        degraded state.
action: Online the device using 'zpool online' or replace the device with
        'zpool replace'.
 scrub: none requested
config:

        NAME         STATE     READ WRITE CKSUM
        tank         DEGRADED     0     0     0
          mirror     DEGRADED     0     0     0
             c1t0d0  ONLINE       0     0     0
             c1t1d0  OFFLINE      0     0     0

errors: No known data errors

Столбцы READ и WRITE содержат количество ошибок ввода/вывода, зарегистрированных для устройства, тогда как столбец CKSUM содержит количество неисправимых ошибок контрольной суммы, возникших в устройстве. Оба эти счетчика ошибок определяют вероятность сбоя устройства и необходимость корректировочных действий. При обнаружении ненулевых счетчиков ошибок для виртуального устройства верхнего уровня часть данных может оказаться недоступной. Счетчик ошибок учитывает все известные ошибки в данных.

В приведенном выше примере выходных данных устройство в автономном режиме не приводит к возникновению ошибок в данных.

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

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

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

Подготовка к переходу пула устройств хранения данных ZFS

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

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

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

Для экспорта пула используется команда zpool export. Пример:


# zpool export tank

После выполнения этой команды пул tank больше не отображается в системе. Перед продолжением предпринимается попытка размонтирования всех смонтированных файловых систем в пуле. Если размонтировать какую-либо из файловых систем не удается, ее можно размонтировать принудительно с помощью параметра -f. Пример:


# zpool export tank
cannot unmount '/export/home/eschrock': Device busy
# zpool export -f tank

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

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

Определение доступных пулов устройств хранения данных для импорта

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


# zpool import
  pool: tank
    id: 3778921145927357706
 state: ONLINE
action: The pool can be imported using its name or numeric identifier.
config:

        tank        ONLINE
          mirror    ONLINE
            c1t0d0  ONLINE
            c1t1d0  ONLINE

В этом примере пул tank доступен для импорта в целевую систему. Каждый пул идентифицируется по имени, а также по уникальному числовому идентификатору. Если несколько пулов, доступных для импорта, имеют совпадающие имена, то для их различия можно использовать цифровой идентификатор.

Подобно команде zpool status, команда zpool import содержит ссылку на статью базы знаний в Интернете с наиболее актуальной информацией о процедурах восстановления после устранения проблемы, возникшей при импорте пула. В этом случае пользователь может принудительно импортировать пул. Однако импорт пула, который в настоящее время используется другой системой в сети хранения данных, может привести к повреждению данных и возникновению фатальной ошибки, поскольку обе системы будут предпринимать попытки записи в одну и ту же область. Если определенные устройства в пуле недоступны, но для пула обеспечена достаточная избыточность, пул отображается в состоянии DEGRADED. Пример:


# zpool import
  pool: tank
    id: 3778921145927357706
 state: DEGRADED
status: One or more devices are missing from the system.
action: The pool can be imported despite missing or damaged devices.  The
        fault tolerance of the pool may be compromised if imported.
   see: http://www.sun.com/msg/ZFS-8000-2Q
config:

        tank         DEGRADED
          mirror     DEGRADED
            c1t0d0   UNAVAIL   cannot open
            c1t1d0   ONLINE

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


# zpool import
  pool: dozer
    id: 12090808386336829175
 state: FAULTED
action: The pool cannot be imported. Attach the missing
        devices and try again.
   see: http://www.sun.com/msg/ZFS-8000-6X
config:
        raidz               FAULTED
          c1t0d0    ONLINE
          c1t1d0    FAULTED
          c1t2d0    ONLINE
          c1t3d0    FAULTED

В этом примере в виртуальном устройстве RAID-Z отсутствуют два диска. Это означает, что избыточные данные, необходимые для восстановления пула, недоступны. В некоторых случаях отсутствует ряд устройств, необходимых для определения полной конфигурации. Поэтому ZFS не может определить, какие другие устройства входили в пул, несмотря на доступность максимального объема информации. Пример:


# zpool import
pool: dozer
    id: 12090808386336829175
 state: FAULTED
status: One or more devices are missing from the system.
action: The pool cannot be imported. Attach the missing
        devices and try again.
   see: http://www.sun.com/msg/ZFS-8000-6X
config:
        dozer          FAULTED   missing device
          raidz       ONLINE
            c1t0d0    ONLINE
            c1t1d0    ONLINE
            c1t2d0    ONLINE
            c1t3d0    ONLINE
        Additional devices are known to be part of this pool, though their
        exact configuration cannot be determined.

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

По умолчанию команда zpool import позволяет выполнить поиск устройств только в каталоге /dev/dsk. При наличии устройств в другом каталоге или файловых пулов для их поиска следует использовать параметр -d. Пример:


# zpool create dozer mirror /file/a /file/b
# zpool export dozer
# zpool import -d /file
  pool: dozer
    id: 10952414725867935582
 state: ONLINE
action: The pool can be imported using its name or numeric identifier.
config:

        dozer        ONLINE
          mirror     ONLINE
            /file/a  ONLINE
            /file/b  ONLINE
# zpool import -d /file dozer

Если устройства существуют в нескольких каталогах, можно указать несколько параметров - d.

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

После определения пула для импорта его можно импортировать, указав имя пула или его числовой идентификатор в качестве аргумента команды zpool import. Пример:


# zpool import tank

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


# zpool import
  pool: dozer
    id: 2704475622193776801
 state: ONLINE
action: The pool can be imported using its name or numeric identifier.
config:

        dozer       ONLINE
          c1t9d0    ONLINE

  pool: dozer
    id: 6223921996155991199
 state: ONLINE
action: The pool can be imported using its name or numeric identifier.
config:

        dozer       ONLINE
          c1t8d0    ONLINE
# zpool import dozer
cannot import 'dozer': more than one matching pool
import by numeric ID instead
# zpool import 6223921996155991199

В случае конфликта имени пула с именем существующего пула этот пул можно импортировать под другим именем. Пример:


# zpool import dozer zeepool

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


# zpool import dozer
cannot import 'dozer': pool may be in use on another system
use '-f' to import anyway
# zpool import -f dozer

Пулы также можно импортировать с альтернативным корнем, указываемым при помощи параметра -R. Дополнительно о пулах с альтернативными корнями см. Использование пулов ZFS с альтернативным корнем.

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

Для восстановления уничтоженного пула устройств хранения данных используется команда zpool import -D. Пример:


# zpool destroy tank
# zpool import -D
pool: tank
    id: 3778921145927357706
 state: ONLINE (DESTROYED)
action: The pool can be imported using its name or numeric identifier.  The
        pool was destroyed, but can be imported using the '-Df' flags.
config:

        tank        ONLINE
          mirror    ONLINE
            c1t0d0  ONLINE
            c1t1d0  ONLINE

В приведенных выше выходных данных команды zpool import пул можно идентифицировать как уничтоженный на основе следующей информации о состоянии:


state: ONLINE (DESTROYED)

Для восстановления уничтоженного пула повторите команду zpool import -D для пула, который требуется восстановить. Пример:


# zpool import -D tank
# 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
            c1t0d0  ONLINE       0     0     0
            c1t1d0  ONLINE       0     0     0

errors: No known data errors

Если одно из устройств в уничтоженном пуле неисправно или недоступно, уничтоженный пул тем не менее можно восстановить, используя параметр -f. В этом случае импортируется неисправный пул, а затем предпринимается попытка исправления ошибки устройства. Пример:


# zpool destroy dozer
# zpool import -D
pool: dozer
    id: 
 state: DEGRADED (DESTROYED)
status: One or more devices could not be opened.  Sufficient replicas exist for
        the pool to continue functioning in a degraded state.
action: Attach the missing device and online it using 'zpool online'.
   see: http://www.sun.com/msg/ZFS-8000-2Q
 scrub: resilver completed after 0h0m with 0 errors on Fri Aug 28 09:33:56 2009
config:

        NAME         STATE     READ WRITE CKSUM
        dozer        DEGRADED     0     0     0
          raidz2     DEGRADED     0     0     0
            c2t8d0   ONLINE       0     0     0
            c2t9d0   ONLINE       0     0     0
            c2t10d0  ONLINE       0     0     0
            c2t11d0  UNAVAIL      0    35     1  cannot open
            c2t12d0  ONLINE       0     0     0

errors: No known data errors
# zpool import -Df dozer
# zpool status -x
 pool: dozer
 state: DEGRADED
status: One or more devices could not be opened.  Sufficient replicas exist for
        the pool to continue functioning in a degraded state.
action: Attach the missing device and online it using 'zpool online'.
   see: http://www.sun.com/msg/ZFS-8000-2Q
 scrub: resilver completed after 0h0m with 0 errors on Fri Aug 28 09:33:56 2009
config:

        NAME         STATE     READ WRITE CKSUM
        dozer        DEGRADED     0     0     0
          raidz2     DEGRADED     0     0     0
            c2t8d0   ONLINE       0     0     0
            c2t9d0   ONLINE       0     0     0
            c2t10d0  ONLINE       0     0     0
            c2t11d0  UNAVAIL      0    37     0  cannot open
            c2t12d0  ONLINE       0     0     0

errors: No known data errors
# zpool online dozer c2t11d0
Bringing device c2t11d0 online
# zpool status -x
all pools are healthy

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

При использовании пулов устройств хранения данных ZFS предыдущего выпуска Solaris, например выпуска Solaris 10 6/06, воспользоваться преимуществом функций обновления пула Solaris 10 11/06 можно с помощью команды zpool upgrade. Кроме того, измененная команда zpool status может проинформировать пользователя об использовании в пулах старых версий. Пример:


# zpool status
  pool: test
 state: ONLINE
status: The pool is formatted using an older on-disk format.  The pool can
        still be used, but some features are unavailable.
action: Upgrade the pool using 'zpool upgrade'.  Once this is done, the
        pool will no longer be accessible on older software versions.
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        test        ONLINE       0     0     0
          c1t27d0   ONLINE       0     0     0

errors: No known data errors

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


# zpool upgrade -v
This system is currently running ZFS version 3.

The following versions are supported:

VER  DESCRIPTION
---  --------------------------------------------------------
 1   Initial ZFS version
 2   Ditto blocks (replicated metadata)
 3   Hot spares and double parity RAID-Z

For more information on a particular version, including supported releases, see:

http://www.opensolaris.org/os/community/zfs/version/N

Where 'N' is the version number.

Затем для обновления пулов можно выполнить команду zpool upgrade. Пример:


# zpool upgrade -a

Примечание –

При обновлении пула до новой версии ZFS пул будет недоступен в системе, использующей более старую версию ZFS.