Crie um zid raidz2 com 4k discos

4

Eu quero criar um zid raidz2 com 4 discos. Eu sei que isso vai "desperdiçar" pelo menos 50% do espaço, mas viso uma alta tolerância contra falhas de disco. Usando 5 discos para raidz2 não é recomendado e 6 discos é caro e desnecessário para mim. Eu terei 3 discos de TB (ou talvez 4 TB) que todos têm 4k setores com emulação de 512 bytes.

Eu li muitas coisas sobre zfs e raidz2 e estou começando a ficar confuso.

Devo particionar os discos? Eu li que é uma boa idéia criar partições para tornar o SO ciente de que o disco não está vazio. O particionamento também pode ajudar a alinhar setores de 4k.

GPT ou MBR? Tanto quanto eu entendi GPT é uma obrigação para discos de 3 TB (e maiores).

Como devo criar a partição? Isso me fornecerá uma partição corretamente alinhada? sudo parted --align optimal /dev/sdX mklabel gpt mkpart primary 1 0% 3TB

Pergunta de bônus: qual será o tamanho da partição criada por mkpart primary 1 0% 3TB ? Será 3*10^12 - 4096 byte ?

Minha intenção é não usar o tamanho total do disco, mas limitar-me a 3 TB para poder substituir uma unidade com falha por um modelo diferente.

Preciso de ashift=12 se eu alinhei partições? É inútil? Isso me prejudica de alguma forma?

E quanto ao stripsize? Preciso modificá-lo? E se eu usar 5 discos em vez de 4 discos?

Existe mais alguma coisa que eu deveria considerar?

    
por masgo 28.09.2017 / 00:55

2 respostas

2

Você precisa definir o ashift manualmente se o seu disco relatar os valores errados, que é o caso de todos os discos dentro do período de transição (4K internamente, 512 logicamente) - discos anteriores relatam os 512 corretos, discos posteriores relatam os 4k corretos. É claro que você sempre pode especificá-lo, apenas sobrescreve o que o próprio disco informaria / sugeriria ao sistema.

Se não tiver certeza, você também pode criar um pool, anotar o tamanho utilizável, depois destruí-lo, definir o ashift em todos os discos para 12, criá-lo novamente e comparar os tamanhos. Se eles são iguais, seus discos são honestos sobre o conteúdo deles.

O particionamento de discos só deve ser necessário se os discos não forem reconhecidos corretamente ou se você desejar ter tamanhos menores que os possíveis.

    
por 28.09.2017 / 09:14
1

O ZFS no Linux particionará discos automaticamente. Mais cedo, não foi isso. Ficará assim:

Disk /dev/sdb: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 2E55AB8A-8B22-494E-A971-B6D639BA14B1

Device          Start        End    Sectors   Size Type
/dev/sdb1        2048 1953507327 1953505280 931.5G Solaris /usr & Apple ZFS
/dev/sdb9  1953507328 1953523711      16384     8M Solaris reserved 1

Além disso, provavelmente usará o valor correto de ashift automaticamente. Meu SSD tem 13, o HDD acima tem 12, como esperado.

Basta fazer o seguinte:

zpool create tank raidz2 sda sdb sdc sdd

Em seguida, verifique com zdb que ashift parece correto.

    
por 28.09.2017 / 09:53