Inizialmente il mio MicroServer doveva essere semplicemente una macchina di test, ma poi è diventato un application server a tutti gli effetti; purtroppo ho avuto l’infelice idea di usare quattro dischi SATA Maxtor da 500GB per creare il pool ZFS… Vista la scarsa qualità di questi dischi, uno si è già schiantato, quindi è stato necessario sostituire l’unità guasta e ricostruire il pool (operazione che non causa perdita di dati fortunatamente).
Prima di tutto occorre identificare il codice GUID del disco guasto:
mauro@srvweb:~$ sudo zpool status
Tipicamente il GUID si vede già dall’output di questo comando; se così non fosse basta prendere nota del device in errore e recuperare il GUID con questo altro comando:
mauro@srvweb:~$ sudo zdb
Ottenuto il GUID, spegnere il server, sostituire il disco guasto, riavviare il server e prendere nota del nuovo dispositivo:
mauro@srvweb:~$ sudo ls -la /dev/disk/by-id
Prima di proseguire è opportuno verificare il valore del parametro ashift del pool con il seguente comando:
mauro@srvweb:~$ sudo zdb -C -U /etc/zfs/zpool.cache
quadpool:
version: 5000
name: 'quadpool'
state: 0
txg: 4548916
pool_guid: 7254239101276235173
errata: 0
hostid: 3428888297
hostname: 'srvweb'
com.delphix:has_per_vdev_zaps
vdev_children: 1
vdev_tree:
type: 'root'
id: 0
guid: 7254239101276235173
create_txg: 4
children[0]:
type: 'raidz'
id: 0
guid: 9371557754708492781
nparity: 1
metaslab_array: 70
metaslab_shift: 34
ashift: 9 <<< questo è il valore che interessa
asize: 2000374726656
is_log: 0
create_txg: 4
com.delphix:vdev_zap_top: 65
...
Ora siamo pronti per il resilvering del pool:
mauro@srvweb:~$ sudo zpool replace -o ashift=9 nome_del_pool GUID_disco_guasto /dev/disk/by-id/nome_disco_nuovo
L’operazione durerà un po’, in funzione dello spazio occupato sul volume logico; alla fine il pool sarà tornato di nuovo OK con tutti i dischi ONLINE (e soprattutto senza perdita di dati!)
mauro@srvweb:~$ sudo zpool status
pool: quadpool
state: ONLINE
scan: scrub repaired 0B in 0 days 00:47:00 with 0 errors
config:
NAME STATE READ WRITE CKSUM
quadpool ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
ata-MAXTOR_STM3500320AS_9QM1337M ONLINE 0 0 0
ata-MAXTOR_STM3500320AS_9QM0GMYA ONLINE 0 0 0
ata-ST3500820AS_9QM230KD ONLINE 0 0 0
ata-MAXTOR_STM3500320AS_5QM0KMHC ONLINE 0 0 0
errors: No known data errors