Řešení vadného disku v ZFS
Minule jsme si ukázali, jak si zabezpečit systémový disk proti výpadku. Tentokrát se podíváme na to, co dělat v případě, že k výpadku disku skutečně dojde.
Seriál o ZFS v FreeBSD
Tento článek je součástí krátkého seriálu o ZFS v FreeBSD
- Přidání disku
- Řešení vadného disku (tento článek)
- Zvětšení poolu
- Diskuse nad typy vdev
- Zvětšení vdevu mirror
Vadný systémový disk
Pokud nám systémový disk selhal, dostali jsme se do stavu:
[root@freebsd ~]# zpool status
pool: zroot
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: resilvered 1.43G in 0h2m with 0 errors on Sat May 6 10:17:27 2017
config:
NAME STATE READ WRITE CKSUM
zroot DEGRADED 0 0 0
mirror-0 DEGRADED 0 0 0
1641461575222343225 UNAVAIL 0 0 0 was /dev/da0p3
da0p3 ONLINE 0 0 0
errors: No known data errors
Pokud původní disk už nemáme, nic se neděje, přidáme disk nový. Postup je úplně stejný jako minule při pridání nového disku. Disk potřebujeme rozdělit, potřebujeme na něj nahrát bootloader a potřebujeme jej přidat do zfs. Takže v rychlosti:
sysctl vfs.zfs.min_auto_ashift=12
gpart backup da0 | gpart restore -F da1
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da1
zpool attach zroot da0p3 da1p3
Bleskově jsme se dostali do stavu:
[root@freebsd ~]# zpool status
pool: zroot
state: DEGRADED
status: One or more devices is currently being resilvered. The pool will
continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
scan: resilver in progress since Sat May 6 10:27:56 2017
31.5M scanned out of 1.43G at 5.25M/s, 0h4m to go
31.3M resilvered, 2.15% done
config:
NAME STATE READ WRITE CKSUM
zroot DEGRADED 0 0 0
mirror-0 DEGRADED 0 0 0
1641461575222343225 UNAVAIL 0 0 0 was /dev/da0p3
da0p3 ONLINE 0 0 0
da1p3 ONLINE 0 0 0 (resilvering)
errors: No known data errors
ZFS ještě zná starý disk, ten odstraníme pomocí:
zpool detach zroot 1641461575222343225
a je to:
[root@freebsd ~]# zpool status
pool: zroot
state: ONLINE
status: One or more devices is currently being resilvered. The pool will
continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
scan: resilver in progress since Sat May 6 10:27:56 2017
1.21G scanned out of 1.43G at 10.1M/s, 0h0m to go
1.20G resilvered, 84.22% done
config:
NAME STATE READ WRITE CKSUM
zroot ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
da0p3 ONLINE 0 0 0
da1p3 ONLINE 0 0 0 (resilvering)
errors: No known data errors
Po doběhnutí resilveringu máme opět funkční mirror na systémovém disku.