Table of Contents

Cambiare un disco rotto in ZFS

Situazione di partenza

Attenzione: versioni diverse di PVE hanno metodi abbastanza diversi fra loro. Se si usa UEFI e non BIOS ci sono differenze. Se si usa systemd-bootloader o come cavolo si chiama e non GRUB ci sono differenze. Questa procedura funzione SOLO con le condizioni sotto indicate

Questa procedura è stata usata in questa configurazione:

La condizione iniziale è un failure del mirror, che si presenta cosi`:

#zpool status
  pool: rpool
 state: DEGRADED
status: One or more devices has been removed by the administrator.
	Sufficient replicas exist for the pool to continue functioning in a
	degraded state.
action: Online the device using 'zpool online' or replace the device with
	'zpool replace'.
  scan: scrub repaired 0B in 0 days 02:57:11 with 0 errors on Sun Sep 11 03:21:12 2022
config:

	NAME                                             STATE     READ WRITE CKSUM
	rpool                                            DEGRADED     0     0     0
	  mirror-0                                       DEGRADED     0     0     0
	    ata-HGST_HUS722T2TALA604_WMC6N0P2VZD7-part3  REMOVED      0     0     0
	    ata-HGST_HUS722T2TALA604_WMC6N0P3WHRV-part3  ONLINE       0     0     0

I dischi sono partizionati (default dell'installer di PVE) in questo modo:

La caratteristica peculiare di questa installazione (default di PVE prima di 6.4) è che usa GRUB con il supporto per ZFS, ergo boota caricando il kernel dalla partizione ZFS (sda3 / sdb3) e non dalla partizione EFI, nella quale comunque si trova una copia del kernel e (credo) del bootloader di systemd, che non viene usato. Ricordo che il PC boota in modalità BIOS e non UEFI. Ogni versione di PVE ha piccole differenze, e la documentazione purtroppo non è dettagliatissima, specie per le versioni piu` vecchie.

Procedura

zpool offline rpool ata-HGST_HUS722T2TALA604_WMC6N0P2VZD7-part3
sgdisk /dev/sdb -R /dev/sda
sgdisk -G /dev/sda
# zpool replace rpool ata-HGST_HUS722T2TALA604_WMC6N0P2VZD7-part3 ata-HGST_HUS722T2TALA604_WMC6N0R544H5-part3
zpool status
 pve-efiboot-tool format /dev/sda2
 pve-efiboot-tool init   /dev/sda2
 mount /dev/sda2 /mnt
 cp -a /boot/grub /mnt
 umount /mnt
grub-install /dev/sda

Riferimento dal quale ho preso parte della procedura: https://pve.proxmox.com/wiki/ZFS_on_Linux#sysadmin_zfs_change_failed_dev