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

  1. Přidání disku
  2. Řešení vadného disku (tento článek)
  3. Zvětšení poolu
  4. Diskuse nad typy vdev
  5. 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.