Quero criar um zfs raidz2 com 4 discos. Sei que isso irá "desperdiçar" pelo menos 50% do espaço, mas pretendo uma alta tolerância contra falhas de disco. Usar 5 discos para raidz2 não é recomendado e 6 discos são muito caros e desnecessários para mim. Terei discos de 3 TB (ou talvez 4 TB), todos com setores de 4k 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? Li que é uma boa ideia criar partições para alertar o sistema operacional de que o disco não está vazio. O particionamento também pode ajudar a alinhar setores de 4k.
GPT ou MBR?Pelo que entendi, o GPT é obrigatório para discos de 3 TB (e maiores).
Como devo criar a partição?Isso me dará partições alinhadas corretamente?
sudo parted --align optimal /dev/sdX mklabel gpt mkpart primary 1 0% 3TB
Pergunta 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 ashift=12
se tiver partições alinhadas?É inútil? Isso me prejudica de alguma forma?
E o tamanho da tira?Preciso modificá-lo? E se eu usar 5 discos em vez de 4 discos?
Há mais alguma coisa que devo considerar?
Responder1
Você precisa definir o ashift manualmente se o seu disco relatar os valores errados, o que é o caso de todos os discos dentro do período de transição (4K internamente, 512 logicamente) - os discos anteriores relatam o 512 correto, os discos posteriores relatam o 4k correto. É claro que você sempre pode especificá-lo, apenas sobrescreve o que o próprio disco reportaria/sugeriria ao sistema.
Se não tiver certeza, você também pode criar um pool, anotar o tamanho utilizável, destruí-lo, definir um shift em todos os discos para 12, criá-lo novamente e comparar os tamanhos. Se forem iguais, seus discos serão honestos quanto ao conteúdo.
O particionamento de discos só deve ser necessário se seus discos não forem reconhecidos corretamente ou se você quiser ter tamanhos menores que o possível.
Responder2
O ZFS no Linux particionará os discos automaticamente. Anteriormente, isso não acontecia. Será 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 ashift
valor correto 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 zdb
se ashift
parece correto.