zpool attach pool old-disk new-disk
Cela convertira l'ancien disque en un miroir avec à la fois l'ancien disque et le nouveau disque et commencera la réargenture après quoi vous pourrez détacher l'ancien disque.
zpool detach pool old-disk
Testé avec des appareils en boucle :
# truncate -s 1G a b
# truncate -s 1200M c
# losetup /dev/loop0 a
# losetup /dev/loop1 b
# losetup /dev/loop2 c
# zpool create test loop{0,1}
# zpool attach test loop1 loop2
# zpool status
pool: test
state: ONLINE
scan: resilvered 62K in 0h0m with 0 errors on Wed Jul 31 13:43:19 2013
config:
NAME STATE READ WRITE CKSUM
test ONLINE 0 0 0
loop0 ONLINE 0 0 0
mirror-1 ONLINE 0 0 0
loop1 ONLINE 0 0 0
loop2 ONLINE 0 0 0
# zpool detach test loop1
# zpool status
pool: test
state: ONLINE
scan: resilvered 62K in 0h0m with 0 errors on Wed Jul 31 13:43:19 2013
config:
NAME STATE READ WRITE CKSUM
test ONLINE 0 0 0
loop0 ONLINE 0 0 0
loop2 ONLINE 0 0 0
Je ne sais pas si les choses étaient si différentes dans `13 mais 'zfs replace' fonctionne sur des pools non redondants. Vous exécutez simplement la commande 1 au lieu de vous détacher en premier.
d1 est 1G, d2 est 2G, les deux sont des fichiers vides dans /tmp :
/t/test #> zpool create test /tmp/test/d1
/t/test #> zpool set autoexpand=on test
/t/test #> zpool status
pool: test
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
test ONLINE 0 0 0
/tmp/test/d1 ONLINE 0 0 0
errors: No known data errors
/t/test #> zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
test 1008M 258K 1008M - 0% 0% 1.00x ONLINE -
/t/test #> zpool replace test /tmp/test/d1 /tmp/test/d2
/t/test #> zpool status
pool: test
state: ONLINE
scan: resilvered 61K in 0h0m with 0 errors on Sun Sep 18 18:55:32 2016
config:
NAME STATE READ WRITE CKSUM
test ONLINE 0 0 0
/tmp/test/d2 ONLINE 0 0 0
errors: No known data errors
/t/test #> zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
test 1.98G 408K 1.98G - 0% 0% 1.00x ONLINE -