Jak jsme si řekli minule, vdev typu mirror je jediný, se kterým lze hýbat. Přidávat a odebírat disky, vyměnit za větší. Tentokrát si ukážeme, jak zvětšit vdev mirror přidáním větších disků a odebrání původních.

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
  3. Zvětšení poolu
  4. Diskuse nad typy vdev
  5. Zvětšení vdevu mirror (tento článek)

Nahrazení disku ve vdevu

Disk do vdevu přidáme vlastně stejně, jako jsme v prvním dílu přidávali druhý systémový disk.

Syntaxe příkazu attach je jednoduchá:

zpool attach zpool device new_device

Tedy ke stávajícímu zařízení v konrétním poolu přidáme další zařízení.

Aktuálně jsme tedy ve stavu:

[root@freebsd ~]# zpool status
  pool: zroot
 state: ONLINE
config:

        NAME        STATE     READ WRITE CKSUM
        zroot       ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            da1p3   ONLINE       0     0     0
            da2p3   ONLINE       0     0     0
          mirror-1  ONLINE       0     0     0
            da3p1   ONLINE       0     0     0
            da4p1   ONLINE       0     0     0

Zařízení da3 a da4 chceme vyhodit a nahradit většími. Tedy:

zpool attach zroot da3p1 da5p1
zpool attach zroot da3p1 da6p1

Necháme zesynchronizovat a zkontrolujeme výsledný stav:

[root@freebsd ~]# zpool status
  pool: zroot
 state: ONLINE
config:

        NAME        STATE     READ WRITE CKSUM
        zroot       ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            da1p3   ONLINE       0     0     0
            da2p3   ONLINE       0     0     0
          mirror-1  ONLINE       0     0     0
            da3p1   ONLINE       0     0     0
            da4p1   ONLINE       0     0     0
            da5p1   ONLINE       0     0     0
            da6p1   ONLINE       0     0     0

Vdev mirror-1 má nynní 4 disky. Ty malé dva (da3 a da4) teď můžeme odstranit:

zpool detach zroot  da3p1
zpool detach zroot  da4p1
[root@freebsd ~]# zpool status
  pool: zroot
 state: ONLINE
config:

        NAME        STATE     READ WRITE CKSUM
        zroot       ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            da1p3   ONLINE       0     0     0
            da2p3   ONLINE       0     0     0
          mirror-1  ONLINE       0     0     0
            da5p1   ONLINE       0     0     0
            da6p1   ONLINE       0     0     0

Po tomto kroku by měl být zpool větší. Pokud není, zkusíme vypnout a zapnout autoexpand:

zpool set autoexpand=off zroot
zpool set autoexpand=on zroot

Pokud ani toto nepomůže (u mě to nezabralo), tak ukecáme zfs ještě o něco důkladněji:

zpool online -e zroot da5p1
zpool online -e zroot da6p1

A je to.

Zvětšení vdevů raid-z

U raid-z nelze do vdevu přidat další zařízení. Tam musíme postupovat pomocí replace.

zpool replace [-f] pool device [new_device]

Opět, pokud ani po replace všech disků ZFS nemá větší kapacitu, ukecáme jej pomocí příkazu online:

zpool online [-e] pool device ...

 Brings the specified physical device online.

 This command is not applicable to spares or cache devices.

 -e      Expand the device to use all available space. If the device
         is part of a mirror or raidz then all devices must be
         expanded before the new space will become available to the
         pool.