Sostituzione di un disco con uno più grande in un pool ZFS
Jump to navigation
Jump to search
Stato iniziale
- Abbiamo un pool ZFS composto da un solo disco da 1TB, e vogliamo sostituire questo disco con uno da 2TB, utilizzando tutto lo spazio
- Ecco lo stato del pool iniziale
zpool status
pool: myfirstpool state: ONLINE config:
NAME STATE READ WRITE CKSUM
myfirstpool ONLINE 0 0 0
sda ONLINE 0 0 0
errors: No known data errors
- Ecco lo spazio occupato:
# df -h
Filesystem Size Used Avail Use% Mounted on myfirstpool 976G 277G 700G 29% /myfirstpool
Espansione manuale
- Aggiungiamo il secondo disco al pool, come mirror (specificare il disco esistente, e quello nuovo):
zpool attach myfirstpool /dev/sda /dev/sdb
- Lo stato ora sarà:
zpool status
pool: myfirstpool 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 Wed Mar 15 05:20:06 2016
19.4G scanned out of 276G at 59.6M/s, 17h55m to go
19.4G resilvered, 0.52% done
config:
NAME STATE READ WRITE CKSUM
DISKB ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sda ONLINE 0 0 0
sdb ONLINE 0 0 0 (resilvering)
errors: No known data errors
- Al termine della ricostruzione:
zpool status
pool: myfirstpool state: ONLINE scan: resilvered 276G in 10h0m with 0 errors on Tue Mar 15 09:51:05 2016 config:
NAME STATE READ WRITE CKSUM
myfirstpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sda ONLINE 0 0 0
sdb ONLINE 0 0 0
errors: No known data errors
- Lo spazio, sempre lo stesso:
# df -h
Filesystem Size Used Avail Use% Mounted on myfirstpool 976G 277G 700G 29% /myfirstpool
- Ora rimuoviamo il vecchio disco:
zpool detach myfirstpool /dev/sda
- Ecco l'effetto della rimozione:
zpool status
pool: myfirstpool state: ONLINE config:
NAME STATE READ WRITE CKSUM
myfirstpool ONLINE 0 0 0
sdb ONLINE 0 0 0
errors: No known data errors
- Lo spazio, sempre lo stesso:
# df -h
Filesystem Size Used Avail Use% Mounted on myfirstpool 976G 277G 700G 29% /myfirstpool
- Per utilizzarlo, è necessario espandere il pool sul nuovo disco:
zpool online -e myfirstpool /dev/sdb
- Ora lo spazio è utilizzato:
df -h
Filesystem Size Used Avail Use% Mounted on myfirstpool 2.0T 277G 1.7T 15% /myfirstpool
Espansione automatica
- Dovrebbe essere possibile l'auto espansione, prima di aggiungere il device, impostando la proprietà:
zpool get autoexpand myfirstpool
NAME PROPERTY VALUE SOURCE myfirstpool autoexpand off default
- Impostarla e verificare:
zpool set autoexpand=on myfirstpool
zpool get autoexpand myfirstpool
NAME PROPERTY VALUE SOURCE myfirstpool autoexpand on local
- Se ora si effettua l'aggiunta del nuovo disco, dopo il detach del vecchio, lo spazio sarà espanso automaticamente
- Se non funziona, verificare perchè:
zpool get expandsize myfirstpool
NAME PROPERTY VALUE SOURCE storage expandsize 2.27T -
Divisione di un mirror
- Se invece si vuole conservare la copia del vecchio disco, è possibile spezzare il mirror, lasciando il contenuto su entrambi i dischi, ed esportando il vecchio idsco in un nuovo poll
- Specificare l'operazione split, indicando
- nome del pool originale che conserverà il nuovo disco: myfirstpool
- nome del nuovo pool, che accoglierà il vecchio disco: mysecondpol
- nome del disco che verrà accolto nel nuovo pool (il vecchio disco): sda
zpool split myfirstpool mysecondpool /dev/sda
- Ora il pool originale è composto solo dal nuovo disco:
zpool status
pool: myfirstpool state: ONLINE config:
NAME STATE READ WRITE CKSUM
myfirstpool ONLINE 0 0 0
sdb ONLINE 0 0 0
errors: No known data errors
- Il pool splittato sarà importabile:
zpool import
pool: mysecondpool
id: 3595499847024087738
state: ONLINE
action: The pool can be imported using its name or numeric identifier.
config:
mysecondpool ONLINE
sda ONLINE
- Fare attenzione ad eventuali mountpoint specificati manualmente, ed importare il nuovo pool
zpool import mysecondpool
- Ecco entrambi i polls:
zpool status
pool: myfirstpool state: ONLINE config:
NAME STATE READ WRITE CKSUM
myfirstpool ONLINE 0 0 0
sdb ONLINE 0 0 0
errors: No known data errors
pool: mysecondpool state: ONLINE config:
NAME STATE READ WRITE CKSUM
myfirstpool ONLINE 0 0 0
sda ONLINE 0 0 0
errors: No known data errors
- Vedere i mountpoint impostati:
zfs list
NAME USED AVAIL REFER MOUNTPOINT mysecondpool 900M 890G 96K /mysecondpool myfirstpool 900M 1.8T 96K /myfirstpool
- Vedere i mountpoint ATTIVI:
zfs mount
myfirstpool /myfirstpool mysecondpool /mysecondpool
- Nel caso cambiare i mountpoint con
zfs set mountpoint=/whatever /mysecondpool/mydataset
Riferimenti
- Adding a mirror to a device in a ZFS pool
- Oracle Solaris ZFS Administration Guide - Attaching and Detaching Devices in a Storage Pool
- Growing ZFS pool | Tomasz Korwel
- How to Break the ZFS mirror on Solaris ? - UnixArena
- Oracle Solaris ZFS Administration Guide - Creating a New Pool By Splitting a Mirrored ZFS Storage Pool