Stavo provando PROXMOX, il mio intento era di riutilizzare per la prova due vecchi dischi (256Gb e 320Gb) da mettere in raid1 (copia) con filesystem ZFS.
L’installer permette di creare un raid1 ZFS ma NON con due dischi di diverse dimensioni e questo e’ stato un problema. Per ovviare ho installato il sistema su un disco solo (il piu’ piccolo) con filesystem ZFS e successivamente ho creato il raid.
Ecco come installare un secondo disco.
Supponiamo questo scenario
- Disco origine: /dev/sda (256GB)
- Disco destinazione: /dev/sdb (320GB)
Cancella il Disco di Destinazione (se non gia’ vuoto o nuovo):
Utilizza wipefs per rimuovere tutte le firme delle partizioni dal disco di destinazione (/dev/sdb):
wipefs -a /dev/sdb
Copia le Partizioni dal Disco di Origine:
Usa sgdisk per copiare le partizioni dal disco di origine (/dev/sda) al disco di destinazione (/dev/sdb):
sgdisk /dev/sda -R /dev/sdb
Cambia l’ID del Disco di Destinazione:
Cambia l’ID del disco di destinazione per assicurarti che sia unico:
sgdisk -G /dev/sdb
Formatta la Partizione di Avvio:
La prima cosa da fare e’ identificare quale e’ la giusta partizione:
fdisk -l /dev/sda
Questo restituira’ la tabella delle partizioni del disco di origine che dopo i comandi appena eseguiti deve essere uguale sul disco di destinazione (fdisk -l /dev/sdb per controllare)
root@proxmox:~# fdisk -l /dev/sdb
Disk /dev/sdb: 298.09 GiB, 320072933376 bytes, 625142448 sectors
Disk model: WDC WD3200AAJS-2
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: FC9BC34B-C37B-435A-BE68-2B06E6F80D3C
Device Start End Sectors Size Type
/dev/sdb1 34 2047 2014 1007K BIOS boot
/dev/sdb2 2048 2099199 2097152 1G EFI System
/dev/sdb3 2099200 488397134 486297935 231.9G Solaris /usr & Apple ZFS
Da qui si vede che la partizione di avvio e’ sdb2, e quindi si utilizza proxmox-boot-tool per formattare la partizione di avvio sul disco di destinazione (/dev/sdb2):
proxmox-boot-tool format /dev/sdb2
Inizializza la Partizione di Avvio:
Inizializza la partizione di avvio sul disco di destinazione:
proxmox-boot-tool init /dev/sdb2
Aggiungi il Disco al Pool ZFS:
A questo punto devi identificare il nome del primo “disco” nel raid, per farlo basta il comando:
zpool status
Che restituira’ qualcosa tipo:
root@proxmox:~# zpool status -v
pool: rpool
state: ONLINE
config:
NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
ata-Hitachi_HTS543225L9A300_081112FB0F00LLJLE3DB-part3 ONLINE 0 0 0
errors: No known data errors
Aggiungi il disco di destinazione (/dev/sdb3) al pool ZFS esistente (rpool), unendo i due dischi:
zpool attach rpool ata-Hitachi_HTS543225L9A300_081112FB0F00LLJLE3DB-part3 /dev/sdb3
Verifica lo Stato del Pool ZFS:
Controlla lo stato del pool ZFS per assicurarti che il processo di resilvering sia iniziato e che il pool sia in stato ONLINE:
zpool status
Ed ecco fatto, ora i due disch sono in raid1 e sono uno la copia dell’altro.
E se uno dei due dischi si rompe?
Se uno dei due dischi si dovesse rompere l’altro e’ in grado di fare il boot del sistema e far funzionare i servizi regolarmente. Questo ti dara’ inoltre il tempo e gli strumenti per sostituirlo.
il comando zpool status dovrebbe restituire qualcosa tipo:
root@proxmox:~# zpool status
pool: rpool
state: DEGRADED
status: One or more devices could not be used because the label is missing or
invalid. Sufficient replicas exist for the pool to continue
functioning in a degraded state.
action: Replace the device using 'zpool replace'.
see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-4J
scan: resilvered 59.8G in 00:30:10 with 0 errors on Wed Jul 3 19:39:59 2024
config:
NAME STATE READ WRITE CKSUM
rpool DEGRADED 0 0 0
mirror-0 DEGRADED 0 0 0
505977634126597088 UNAVAIL 0 0 0 was /dev/disk/by-id/ata-Hitachi_HTS543225L9A300_081112FB0F00LLJLE3DB-part3
sda3 ONLINE 0 0 0
errors: No known data errors
anche nella interfaccia web di proxmox si vede il degrado

Il disco che prima era di origine ora non e’ piu’ disponibile. Se seguissimo il sistema del “zpool replace” che viene suggerito recupereremo il raid1 dei dati ma il nuovo disco non farebbe il boot perché mancante delle prime due partizioni. Quindi consiglio un bel:
zpool detach rpool /dev/DISCODARIMUOVERE
e rifare la procedura piu’ o meno dall’inizio 🙂