Estou lendo sobre o tópico se o ZFS no Linux puder ser usado para o próprio sistema de arquivos raiz e houver um interessante artigo wiki disponível. Mas o layout da partição no exemplo é não está claro para mim.
# 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
O que não entendo neste exemplo é a primeira partição. Lendo através da página man do sgdisk não está claro para mim se a primeira partição é apenas do tamanho um bloco ou se Abrange essencialmente todo o dispositivo. No último caso, isso significaria que todas as outras partições criadas são criadas dentro da primeira? O que me faz pensar é a seguinte frase na man page:
A start or end value of 0 specifies the default value, which is the start of the largest available block for the start sector and the end of the same block for the end sector.
"O mesmo bloco" soa como um bloco do dispositivo físico, então, por exemplo, 512 Byte ou 4k Byte de dados? Ou significa alguma quantidade contígua de armazenamento, abrangendo vários blocos lógicos / físicos no final?
É importante entender isso para mim por causa da seguinte frase no wiki:
The root pool does not have to be a single disk; it can have a mirror or raidz topology. In that case, repeat the partitioning commands for all the disks which will be part of the pool. Then, create the pool using zpool create ... rpool mirror /dev/disk/by-id/scsi-SATA_disk1-part1 /dev/disk/by-id/scsi-SATA_disk2-part1 (or replace mirror with raidz, raidz2, or raidz3 and list the partitions from additional disks).
Como você pode ler, somente a primeira partição é colocada no pool, as outras criadas acima não são mencionadas. O que não estou entendendo é se as outras partições são parte de part1
e, portanto, estão implicitamente disponíveis no conjunto ou não são usadas para o conjunto. Por exemplo, o GRUB é instalado em uma das outras partições, sem referência ao pool do ZFS neste 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
Isso me diz que part3
não faz parte do pool do ZFS e, portanto, é usado individualmente. Mas como isso se ajusta ao tamanho de part1
? Uma partição de apenas um bloco não parece fazer muito sentido, enquanto se part3
estiver contido em part1
de alguma forma, isso significaria que é parte do pool do ZFS, mas endereçado sem ele também?
Eu preciso entender como a redundância é fornecida para as partições de inicialização em uma configuração com vários dispositivos e partições, como no exemplo acima. Em comparação com mdadm
, o objetivo geral é uma configuração RAID10, em que sempre dois dispositivos são espelhados e as partições desses dispositivos são distribuídas em todos os espelhos. No final, com 6 discos, um seria 3 vezes o armazenamento das partições de inicialização e do pool raiz. O ZFS é capaz de fazer isso em geral, eu não tenho certeza do que é parte do pool e se a redundância cobre também as partições de inicialização.
Meu sentimento atual é que não é o caso e eu precisaria de mdadm
para tornar as partições de inicialização redundantes. Simplesmente porque o exemplo do GRUB acima acessa algum disco e partição específicos, um dispositivo físico, e não algum espelho lógico criado pelo ZFS. Além disso, essa partição é formatada com FAT32 em vez de ZFS. Isso não parece que o ZFS esteja se importando com qualquer uma dessas partições.
Então, no final, o ZFS suporta uma configuração RAID10 comparável a essa possível com mdadm
incluindo todas as partições de inicialização, raiz e tal, realmente tudo?