FreeBSD – ZFS Raid reparieren nach Festplattentausch
Eine defekte Festplatte wurde ausgetauscht und du möchtest die Neue wieder dem ZFS Raid hinzufügen? Kein Problem, ich beschreibe hier in kurzen Schritten wie du vorgehen kannst.
Punkt 1: Raid Status prüfen
Zuerst prüfen wir den Status und stellen fest das /dev/ada1p3 fehlt (getauscht wurde).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | root@localhost:~ # zpool status pool: tank 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://illumos.org/msg/ZFS-8000-2Q scan: none requested config: NAME STATE READ WRITE CKSUM tank DEGRADED 0 0 0 mirror-0 DEGRADED 0 0 0 14161449623808796130 UNAVAIL 0 0 0 was /dev/ada1p3 ada0p3 ONLINE 0 0 0 errors: No known data errors |
Punkt 2: Partitionstabelle kopieren
Wir schauen uns die Partitionstabelle vom ersten Device /dev/ada0 an.
1 2 3 4 5 | root@localhost:~ # gpart show ada0 => 34 976773101 ada0 GPT (466G) 34 128 1 freebsd-boot (64K) 162 8388608 2 freebsd-swap (4.0G) 8388770 968384365 3 freebsd-zfs (462G) |
Kopieren diese auf die neue Festplatte /dev/ada1 und prüfen dies nach.
1 2 3 4 5 6 7 | root@localhost:~ # gpart backup ada0 | gpart restore ada1 root@localhost:~ # gpart show ada1 => 34 976773101 ada1 GPT (466G) 34 128 1 freebsd-boot (64K) 162 8388608 2 freebsd-swap (4.0G) 8388770 968384365 3 freebsd-zfs (462G) |
Punkt 3: Neue Festplatte dem ZFS Raid hinzufügen
Wir tauschen die alte Partition mit der Bezeichnung 14161449623808796130 gegen die Neue /dev/ada1p3 aus.
Syntax: zpool replace <pool> <altes_devices> <neues_device>
1 2 3 4 5 6 7 8 9 10 | root@localhost:~ # zpool replace tank 14161449623808796130 /dev/ada1p3 Make sure to wait until resilver is done before rebooting. If you boot from pool 'tank', you may need to update boot code on newly attached disk '/dev/ada1p3'. Assuming you use GPT partitioning and 'da0' is your new boot disk you may use the following command: gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da0 |
Der Bootloader kann bei Bedarf geschrieben werden. (wichtig beim Austausch von /dev/ada0)
1 2 | root@localhost:~ # gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada1 bootcode written to ada1 |
Punkt 4: Resilvering beobachten
Wie folgt beobachtet ihr den Fortschritt.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | root@localhost:~ # zpool status pool: tank state: ONLINE status: Some supported features are not enabled on the pool. The pool can still be used, but some features are unavailable. action: Enable all features using 'zpool upgrade'. Once this is done, the pool may no longer be accessible by software that does not support the features. See zpool-features(7) for details. scan: resilvered 912M in 0h0m with 0 errors on Wed Jul 30 08:12:47 2014 config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 ada1p3 ONLINE 0 0 0 ada0p3 ONLINE 0 0 0 errors: No known data errors |
0