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?