[Das sollte genauso gehen, wie du es beschreibst. Du entfernst ja die alte Platte aus dem Pool und fügst die neue, größere hinzu. ZFS sollte von alleine merken, dass alle Platten nun groß genug sind, um den Pool als Ganzes zu vergrößern.
Also ich finde die Prozeduren diesbezüglich ziemlich mühsam. Z.B. ist nicht dokumentiert, wie man eine Disk normal entfernen kann und dann den Mirror mit einer neu eingebauten Disk vergrössern. Es klappt nur, wenn das neue Device schon sichtbar ist:
# ls -l /testpool01
total 6134684
-rw------T 1 root root 1048576000 Apr 4 08:33 zfs1000m_1.zfs
-rw------T 1 root root 1048576000 Apr 4 08:33 zfs1000m_2.zfs
-rw------T 1 root root 524288000 Apr 4 08:31 zfs500m_1.zfs
-rw------T 1 root root 524288000 Apr 4 08:32 zfs500m_2.zfs
# zpool create sizetest mirror /testpool01/zfs500m_1.zfs /testpool01/zfs500m_2.zfs
# zpool status sizetest
pool: sizetest
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
sizetest ONLINE 0 0 0
mirror ONLINE 0 0 0
/testpool01/zfs500m_1.zfs ONLINE 0 0 0
/testpool01/zfs500m_2.zfs ONLINE 0 0 0
errors: No known data errors
# df -h /sizetest
Filesystem size used avail capacity Mounted on
sizetest 460M 1K 460M 1% /sizetest
# zpool replace sizetest /testpool01/zfs500m_1.zfs /testpool01/zfs1000m_1.zfs
# zpool status sizetest
pool: sizetest
state: ONLINE
scrub: resilver completed with 0 errors on Fri Apr 4 08:36:52 2008
config:
NAME STATE READ WRITE CKSUM
sizetest ONLINE 0 0 0
mirror ONLINE 0 0 0
/testpool01/zfs1000m_1.zfs ONLINE 0 0 0
/testpool01/zfs500m_2.zfs ONLINE 0 0 0
errors: No known data errors
# df -h /sizetest
Filesystem size used avail capacity Mounted on
sizetest 460M 24K 460M 1% /sizetest
# zpool replace sizetest /testpool01/zfs500m_2.zfs /testpool01/zfs1000m_2.zfs
# zpool status sizetest
pool: sizetest
state: ONLINE
scrub: resilver completed with 0 errors on Fri Apr 4 08:37:34 2008
config:
NAME STATE READ WRITE CKSUM
sizetest ONLINE 0 0 0
mirror ONLINE 0 0 0
/testpool01/zfs1000m_1.zfs ONLINE 0 0 0
/testpool01/zfs1000m_2.zfs ONLINE 0 0 0
errors: No known data errors
# df -h /sizetest
Filesystem size used avail capacity Mounted on
sizetest 960M 24K 960M 1% /sizetest
Das Entfernen einer Disk mit 'zpool detach' ist geht leider gar nicht, da man die neue Disk (egal ob gleich gross oder grösser) nicht mehr in den bestehenden Mirror einhängen kann. Und da die Daten ja weiterhin auf der verbleibenden Disk im Mirror liegen, kann diese Disk auch nicht entfernt werden.
Meine Schlussfolgerung: ZFS ist extrem nett in Umgebungen mit statischer Diskanzahl. Vergrössern eines Pools durch Hinzufügen klappt problemlos solange die alten Disks auch weiterhin verwendet werden. Für den Hobbyisten mit seinem kleinen 2 Disk RAID1 welches er vergrössern möchte ist es aber nichts.
Gruss
Dominik