Большая часть информации по устройствам представлена в разделе Компоненты пула устройств хранения данных 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.
Для получения дополнительной информации о проверке действительности виртуальных устройств см. Обнаружение используемых устройств.
В следующем примере еще одно зеркало добавляется в существующую зеркальную конфигурацию 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 |
Аналогичным образом в конфигурацию 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 |
Следующий пример демонстрирует добавление зеркального устройства протоколирования в зеркальный пул устройств хранения данных.Дополнительные сведения об использовании устройств протоколирования в пуле устройств хранения данных приведены в разделе Настройка отдельных устройств протоколирования 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 |
Для создания зеркального устройства протоколирования можно присоединить новое устройство протоколирования к существующему. Эта операция идентична присоединению устройства в незеркалируемом пуле устройств хранения данных.
Пользователь может добавлять и удалять устройства кэширования в пуле устройств хранения 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.
В этом примере 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 |
Если существующее устройство является частью двустороннего зеркала, то при присоединении нового устройства будет создано трехстороннее зеркало, и т.д. В любом случае новое устройство начинает немедленный перенос актуальных данных.
Кроме того, с помощью команды 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 |
При переводе устройства в автономный режим необходимо учитывать следующее:
Перевод в автономный режим пула в точке монтирования, в которой возникает сбой, невозможен. Например, невозможно перевести в автономный режим два устройства из конфигурации RAID-Z, невозможно также перевести в автономный режим виртуальное устройство верхнего уровня.
# zpool offline tank c1t0d0 cannot offline c1t0d0: no valid replicas |
По умолчанию автономный режим сохраняется. Устройство остается в этом режиме при перезагрузке системы.
Для временного перевода устройства в автономный режим используется параметр zpool offline -t. Пример:
# zpool offline -t tank c1t0d0 bringing device 'c1t0d0' offline |
При перезагрузке системы это устройство автоматически возвращается в состояние ONLINE.
При переводе в автономный режим устройство не отсоединяется от пула устройств хранения данных. При попытке использования устройства, переведенного в автономный режим, в другом пуле даже после уничтожения исходного пула будет выдано сообщение, подобное следующему:
device is part of exported or potentially active ZFS pool. Please see zpool(1M) |
Для использования устройства, переведенного в автономный режим, в другом пуле устройств хранения данных после уничтожения исходного пула сначала необходимо перевести это устройство обратно в оперативный режим, а затем уничтожить исходный пул устройств хранения данных.
Другой способ использования устройства из другого пула устройств хранения данных при необходимости сохранения исходного пула заключается в замене существующего устройства в исходном пуле на другое аналогичное устройство. Для получения информации о замене устройств см. Замена устройств в пуле устройств хранения данных.
При запросе состояния пула устройства в автономном режиме имеют статус 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.
Основные действия для замены диска:
Если необходимо, переведите диск в автономный режим командой zpool offline.
Удалите заменяемый диск.
Вставьте диск на замену.
Выполните команду zpool replace. Пример:
# zpool replace tank c1t1d0 |
Верните диск в оперативный режим командой zpool online.
В некоторых системах, например Sun Fire x4500, необходимо удалить диск из конфигурации перед его переводом в автономный режим. Если вы просто заменяете диск в одном гнезде в этой системе, достаточно выполнить команду zpool replace, как описано выше.
Как пример замены диска в этой системе см. Пример 11–1.
При замене устройства в пуле устройств хранения данных ZFS необходимо учитывать следующее:
Если свойство пула autoreplace включено, все новые устройства, обнаруженные в том же самом физическом местоположении, что и устройство, ранее принадлежавшее пулу, автоматически форматируются и заменяются без использования команды zpool replace. Эта функциональная возможность может быть доступной не на всех типах оборудования.
Емкость устройства замены должна быть не меньше минимального размера всех устройств в зеркале или конфигурации RAID-Z.
В противном случае такая замена приводит к увеличению размера пула. В настоящее время для определения расширенной емкости необходимо выполнить экспорт и импорт пула. Пример:
# zpool list tank NAME SIZE USED AVAIL CAP HEALTH ALTROOT tank 16.8G 94K 16.7G 0% ONLINE - # zpool replace tank c0t0d0 c0t4d0 # zpool list tank NAME SIZE USED AVAIL CAP HEALTH ALTROOT tank 16.8G 112K 16.7G 0% ONLINE - # zpool export tank # zpool import tank # zpool list tank NAME SIZE USED AVAIL CAP HEALTH ALTROOT tank 33.9G 114K 33.9G 0% ONLINE - |
Для получения дополнительной информации об экспорте и импорте пулов см. Переход пулов устройств хранения данных ZFS.
Сейчас при увеличении размера существующего LUN, который является частью пула устройств хранения данных, необходимо также выполнить действия по экспорту и импорту, чтобы увидеть увеличение емкости диска.
Замена нескольких дисков в большом пуле требует существенного количества времени вследствие переноса актуальных данных на новые диски. Кроме того, можно выполнить команду zpool scrub между операциями замены дисков для обеспечения работоспособности заменяемых устройств и правильности записанных данных.
Если отказавший диск заменен автоматически в порядке горячего резервирования, может потребоваться отключение резервного диска после замены отказавшего. Для получения информации об отключении устройства горячего резервирования см. Активация и деактивация устройств горячего резерва в пуле устройств хранения данных.
Для получения дополнительной информации о замене устройств см. Восстановление отсутствующего устройства и Замена или восстановление поврежденного устройства.
Функция горячего резерва позволяет идентифицировать диски, которые можно использовать для замены сбойных или неисправных устройств в одном или нескольких пулах устройств хранения данных. Обозначение устройства в качестве горячего резерва означает, что это устройство не является активным устройством, однако в случае сбоя активного устройства в пуле это сбойное устройство автоматически заменяется устройством горячего резерва.
Устройства могут быть назначены в качестве устройств горячего резерва следующими способами:
при создании пула с помощью команды zpool create;
после создания пула с помощью команды zpool add;
устройства горячего резерва могут совместно использоваться несколькими пулами.
При создании пула устройства должны быть обозначены как устройства горячего резерва. Пример:
# 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 remove может использоваться только для удаления устройств горячего резервирования и устройств кэширования.
Емкость добавляемого резервного диска должна быть не меньше размера самого большого диска в пуле. В качестве устройства резерва к пулу можно добавить диск с меньшей емкостью. Однако при автоматической активации резервного диска с меньшей емкостью или при его активации с помощью команды zpool replace операция завершается со следующей ошибкой:
cannot replace disk3 with disk4: device is too small |
Устройства горячего резерва могут совместно использоваться несколькими пулами. Однако невозможно экспортировать пул с используемым общим устройством резерва, за исключением случая использования команды zpool export с параметром -f (force). Это предотвращает возможное повреждение данных при экспорте пула с используемым общим устройством резерва и попытке другого пула использовать общее устройство во время экспорта. Если пул с используемым общим устройством резерва экспортируется с помощью параметра - f, следует помнить, что эта операция может привести к повреждению данных, если другой пул попытается активировать используемое общее устройство резервирования.
Устройства горячего резерва можно активировать следующими способами:
Замена вручную. Замена неисправного устройства в пуле устройств хранения данных устройством горячего резерва с помощью команды zpool replace.
Автоматическая замена. При регистрации сбоя агент FMA проверяет пул на наличие доступных устройств горячего резерва. При их обнаружении осуществляется замена неисправного устройства доступным устройством резерва.
При сбое используемого в настоящее время устройства горячего резерва агент отключает устройство резерва и, таким образом, отменяет замену. Затем агент пытается заменить устройство другим устройством горячего резерва, если оно доступно. В настоящее время эта функция ограничена тем, что механизм диагностики ZFS сообщает об сбоях только в случае исчезновения устройства из системы.
Если выполняется физическая замена сбойного устройства с активным устройством резерва, можно повторно активировать замененное устройство с помощью команды zpool detach, чтобы отсоединить устройство резерва. Если включено свойство пула autoreplace, то устройство резервирования автоматически отсоединяется в пул устройств резерва, когда вставляется новое устройство и завершается операция перевода в оперативный режим.
Для замены устройства на устройство горячего резерва вручную используется команда 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 |