Помимо команды 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 |