ZFS su Linux supporta spanning partizioni di avvio su più dispositivi?


2

Sto leggendo sull'argomento se ZFS su Linux può essere usato per il root file system stesso e c'è un interessante articolo wiki a disposizione. Ma il layout della partizione nell'esempio non è chiaro per me.

# sgdisk     -n1:0:0      -t1:BF01 /dev/disk/by-id/scsi-SATA_disk1
Run this if you need legacy (BIOS) booting:
# sgdisk -a1 -n2:34:2047  -t2:EF02 /dev/disk/by-id/scsi-SATA_disk1
Run this for UEFI booting (for use now or in the future):
# sgdisk     -n3:1M:+512M -t3:EF00 /dev/disk/by-id/scsi-SATA_disk1
Run this in all cases:
# sgdisk     -n9:-8M:0    -t9:BF07 /dev/disk/by-id/scsi-SATA_disk1

Quello che non capisco in questo esempio è la prima partizione. Leggendo la pagina man di sgdisk non mi è chiaro se la prima partizione è solo di dimensione un blocco o se copre essenzialmente l'intero dispositivo. In quest'ultimo caso ciò significherebbe che tutte le altre partizioni create vengono create all'interno della prima? Ciò che mi fa meravigliare è la seguente frase nella pagina man:

Un valore iniziale o finale pari a 0 specifica il valore predefinito, che è l'inizio del più grande blocco disponibile per il settore iniziale e la fine dello stesso blocco per il settore finale.

"Lo stesso blocco" suona come un blocco del dispositivo fisico, quindi ad es. 512 byte o 4k byte di dati? O significa qualche quantità contigua di spazio di archiviazione, che copre più blocchi logici / fisici alla fine?

È importante capire questo per me a causa della seguente frase nella wiki:

Il pool root non deve essere un singolo disco; può avere una topologia speculare o raidz. In tal caso, ripetere i comandi di partizionamento per tutti i dischi che faranno parte del pool. Quindi, crea il pool usando zpool create ... rpool mirror / dev / disk / id-id / scsi-SATA_disk1-part1 / dev / disk / per-id / scsi-SATA_disk2-part1 (o sostituisci mirror con raidz, raidz2, o raidz3 ed elenca le partizioni da dischi aggiuntivi).

Come puoi leggere, solo la prima partizione viene inserita nel pool, gli altri creati sopra non vengono menzionati affatto. Quello che non sto capendo è se le altre partizioni sono parte di part1 e quindi implicitamente disponibile anche nella piscina o non utilizzato per la piscina. Ad esempio, GRUB è installato in una delle altre partizioni, nessun riferimento al pool ZFS in questo caso:

# mkdosfs -F 32 -n EFI /dev/disk/by-id/scsi-SATA_disk1-part3
[...]
# echo PARTUUID=$(blkid -s PARTUUID -o value \
      /dev/disk/by-id/scsi-SATA_disk1-part3) \
      /boot/efi vfat nofail,x-systemd.device-timeout=1 0 1 >> /etc/fstab

Questo mi dice part3 non fa parte del pool ZFS e pertanto viene utilizzato singolarmente. Ma come si adatta alle dimensioni di part1? Una partizione di un solo blocco non sembra avere molto senso, mentre se part3 è contenuto in part1 in qualche modo, ciò significherebbe che fa parte del pool ZFS, ma è indirizzato anche senza di esso?

Devo capire come viene fornita la ridondanza per le partizioni di avvio in una configurazione con più dispositivi e partizioni come nell'esempio precedente. Rispetto a mdadm, l'obiettivo generale è una configurazione RAID10, in cui vengono sempre copiati due dispositivi e le partizioni di tali dispositivi vengono quindi striate su tutti i mirror. Alla fine, con 6 dischi uno sarebbe uno 3 volte lo spazio di archiviazione per le partizioni di avvio e il pool di root. ZFS è in grado di farlo in generale, non sono sicuro di cosa sia parte del pool e se la ridondanza copre anche le partizioni di avvio.

La mia attuale sensazione è che non è il caso e avrei bisogno mdadm rendere ridondanti le partizioni di avvio. Semplicemente perché l'esempio GRUB sopra accede ad alcuni dischi e partizioni specifici, un dispositivo fisico, non un mirror logico creato da ZFS. Inoltre, quella partizione è formattata con FAT32 anziché ZFS. Questo non sembra che ZFS si prenda cura di nessuna di quelle partizioni.

Quindi, alla fine, ZFS supporta una configurazione RAID10 paragonabile a quella possibile con mdadm incluse tutte le partizioni di avvio, root e simili, davvero tutto?

Risposte:


2

Ogni disco (almeno due, comunque) dovrà avere una partizione di avvio che sia non parte del pool ZFS per fornire ridondanza in caso di guasto dell'hardware.

Nelle istruzioni precedenti sta creando una partizione di avvio EFI come una sorta di misura proattiva contro le modifiche future (le partizioni di avvio EFI sono FAT small-ish file system fat fat che catalizzano i driver, in pratica).

In ogni caso, nessuna di queste prime tre partizioni apparterrà allo zpool, solo l'ultimo (il più grande).

Questo HOWTO per ZFS su Root per FreeBSD lo spiega in modo più dettagliato. (Ma i diversi comandi potrebbero solo renderlo più confuso ...)

Considera quanto segue:

  • Il tuo firmware (BIOS, EFI, qualunque cosa) sa Niente ma come trovarlo uno stivale
  • Non c'è nient'altro che JBOD (Just a Bunch Of Disks)

Non puoi avviare direttamente da ZFS perché il tuo firmware non sa cosa sia ZFS. Quindi è necessario che ci sia una partizione non ZFS da cui il firmware può eseguire l'avvio e, poiché non sarà protetta dalla ridondanza ZFS, ha senso avere copie di esso in molti posti.


Se nessuna delle prime tre partizioni appartiene allo zpool, perché viene aggiunta la parte -part1? Non dovrebbe invece essere -part9 ed è semplicemente un errore? Questo è ciò che mi confonde, altrimenti la tua spiegazione si adatta perfettamente a ciò che ho già pensato. Grazie.
Thorsten Schöning
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.