Tenho discos de 4x2 TB e quero criar um array RAID5 de bom desempenho (o servidor é um microsservidor HP N40L com 8 GB de RAM, inicializando a partir de um SSHD de 64 GB). O sistema operacional é Centos 6.3, x86_64.
Eu criei o array raid com este comando:
mdadm --create --verbose /dev/md0 --level=5 --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1
Quando eu faço:
mdadm --examine /dev/sda1
...Disseram-me que meu "Tamanho do pedaço" é 512K (aparentemente este é o novo valor padrão do mdadm).
Agora quero formatar o array com XFS. Disseram-me (emhttp://www.mythtv.org/wiki/Optimizing_Performance#Optimizing_XFS_on_RAID_Arrays) que "sunit" é igual ao tamanho do meu pedaço, expresso como um número de blocos de 512 bytes - portanto, no meu caso, 512 KB = 1.024 blocos de 512 bytes. Da mesma forma, "largura" é o número de discos efetivos em meu array vezes sunit. No meu caso, tenho 4 discos no raid 5, portanto 3 discos efetivos e 3x1024=3072. Portanto, formatei meu novo array com o comando:
mkfs.xfs -b size=4096 -d sunit=1024,swidth=3072 /dev/md0
Agora tenho duas perguntas. O comando acima me deu este erro:
mkfs.xfs -b size=4096 -d sunit=1024,swidth=3072 /dev/md0
log stripe unit (524288 bytes) is too large (maximum is 256KiB)
log stripe unit adjusted to 32KiB [...]
... e quero saber se isso significa que fiz algo errado ou se acabarei com um sistema de arquivos abaixo do ideal de alguma forma, ou se posso simplesmente ignorar esse erro por algum motivo.
A segunda questão é simplesmente se calculei os parâmetros XFS corretamente ou se estou latindo para a árvore completamente errada (se ajudar, o array armazenará grandes arquivos de música e vídeo, em sua maior parte). Eu entendi "tamanho do pedaço" e "tamanho da faixa", por exemplo? O tamanho do bloco 4096 no meu comando mkfs é ideal? E assim por diante.
Eu apreciaria qualquer conselho sobre isso.
Responder1
O XFS não suporta unidades de distribuição maiores que 256k, então apenas refaça sua matriz RAID com uma faixa de 256k. Este é o --chunk
parâmetro de mdadm
.
Um tamanho de bloco de 4k pode ser muito pequeno para o uso pretendido. Se você estivesse armazenando muitos arquivos pequenos, 4k provavelmente seria o ideal. O XFS pode ir até 64 mil blocos. É mais rápido ler e escrever blocos contíguos, mas você perde algum espaço devido à sobrecarga de blocos maiores.
Você só pode alocar em blocos, então selecione o tamanho do bloco com base no tamanho dos arquivos com os quais você espera lidar. Com um tamanho de bloco de 4k, um arquivo de 1kb ocupa 4kb de espaço (1 bloco) e um arquivo de 65kb ocupa 68kb de espaço (17 blocos). Com um tamanho de bloco de 64 KB, um arquivo de 1 KB ocupa 64 KB (um bloco) e um arquivo de 65 KB ocupa 128 KB (2 blocos).
Se você estiver lidando com arquivos pequenos, desperdiçará muito espaço com um tamanho de bloco grande. Se você está lidando com arquivos de vídeo de centenas de gigabytes, provavelmente não se importa com 64 KB aqui ou ali, e a vantagem de desempenho do tamanho de bloco maior faz mais diferença.
Outra coisa a entender são os grupos de alocação. Cada AG obtém um thread de IO separado. O alocador XFS tenta colocar cada diretório em um AG diferente. Uma teoria básica é um AG por dispositivo físico.
Leia a documentação do XFS e entenda como o sistema de arquivos é construído:
Faça algumas suposições fundamentadas e decida quais fatores são mais importantes para você. Obtenha alguns arquivos que representem seus dados de produção (ou uma cópia dos dados reais de produção) e execute alguns benchmarks sobre o que é importante para você. Escolha uma métrica como a rapidez com que seu software de vídeo ou áudio lê e grava arquivos com base em diferentes tamanhos de bloco? Como o fato de vários engenheiros de áudio/vídeo acessarem arquivos simultaneamente afeta o rendimento com diferentes AGs?
O XFS foi projetado para sistemas de arquivos enormes de centenas de terabytes, vivendo em SANs que valem mais do que uma casa, armazenando enormes arquivos de mídia não compactados como os estúdios de cinema profissionais precisariam. Se você estiver usando isso para armazenar suas músicas e programas de TV piratas em uma caixa Linux barata, basta usar o ext4, será muito mais fácil solucionar e corrigir se você tiver problemas.