Функция горячего резерва позволяет идентифицировать диски, которые можно использовать для замены сбойных или неисправных устройств в одном или нескольких пулах устройств хранения данных. Обозначение устройства в качестве горячего резерва означает, что это устройство не является активным устройством, однако в случае сбоя активного устройства в пуле это сбойное устройство автоматически заменяется устройством горячего резерва.
Устройства могут быть назначены в качестве устройств горячего резерва следующими способами:
при создании пула с помощью команды 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 |