Todos os HDDs modernos são de " Formato Avançado ", por exemplo, por padrão, eles relatam um tamanho de setor lógico/físico de 512/4096.
Por padrão, a maioria das ferramentas de formatação do Linux usam um tamanho de bloco de 4096 bytes (pelo menos esse é o padrão no Debian/EXT4).
Até hoje, pensei que isso estava meio otimizado: Linux/EXT4 envia pedaços de dados 4K para o HDD, que pode lidar com eles de maneira ideal, mesmo que o tamanho do setor lógico seja 512K.
Mas hoje li este post bastante recente (2021) . O cara fez alguns benchmarks de HDD, para verificar se mudar o tamanho do setor lógico de seu HDD de 512e para 4Kn proporcionaria melhores desempenhos. Sua conclusão:
Lembre-se: minha teoria era que o sistema de arquivos usa blocos de 4k e tudo está devidamente alinhado, portanto não deve haver uma diferença significativa.
Isso se sustenta? Bem não. De jeito nenhum. (...) Usando blocos de 4kb… há uma diferença muito grande aqui. Este é um benchmarking de thread único, mas há consistentemente uma grande vantagem indo para o setor de 4k aqui em transferências de blocos de 4kb. (...)
Conclusões: Use Setores 4k!
No que me diz respeito, as conclusões aqui são bastante claras. Se você possui um sistema operacional moderno que pode lidar com setores de 4k e suas unidades suportam a operação como setores de 512 bytes ou 4k, converta suas unidades em setores nativos de 4k antes de fazer qualquer outra coisa. Então siga seu caminho e deixe o sistema operacional cuidar disso.
Basicamente, sua conclusão foi que houve uma grande melhoria de desempenho ao mudar o tamanho do setor lógico do HDD para 4Kn, em comparação com o 512e pronto para uso:
Agora, uma coisa importante a ser observada: esse benchmark específico era de thread único. Ele também fez um benchmark de 4 threads, que não mostrou diferenças significativas entre 512e e 4Kn.
Assim, minhas perguntas:
- Sua conclusão é válida apenas se você tiver processos de thread único que leem/gravam na unidade. O Linux possui esses processos de thread único?
- E assim, você recomendaria definir o tamanho do setor lógico de um HDD para 4Kn?
Seguindo o conselho do @Tomes, estou tentando responder minha própria pergunta, com base na minha troca de comentários com @user10489.
É claro que não sou especialista neste assunto, por isso não hesite em alterar ou corrigir as minhas declarações, se necessário.
Mas primeiro, um esclarecimento, porque em muitos sites as pessoas confundem tamanho de bloco e tamanho de setor:
e
para emulados en
para nativos)Assim, um HDD pronto para uso apresenta-se com um tamanho de setor lógico de 512 bytes, porque o fabricante do drive deseja que ele seja reconhecido por todos os sistemas operacionais, inclusive os antigos. Mas todos os sistemas operacionais modernos podem lidar com unidades nativas de 4K (o Linux pode fazer isso desde o kernel 2.6.31 em 2010 ). Portanto, uma pergunta legítima é: se você sabe que nunca usará sistemas operacionais anteriores a 2010, não faria sentido, antes de usar um novo HDD, modificar o tamanho do setor lógico de 512 bytes para 4.096 bytes?
Alguém fez um benchmark para descobrir se há benefícios reais nisso e descobriu que havia uma diferença real apenas em um caso: testes R/W de thread único. Em testes multithread, ele não encontrou nenhuma diferença significativa.
Minha pergunta é: esse caso de uso específico se traduz na vida real? Por exemplo, o Linux realiza muitas operações R/W de thread único? Nesse caso, definir o tamanho do setor lógico do HDD para 4.096 resultaria em alguns benefícios reais.
Ainda não tenho a resposta para esta pergunta. Mas acho que outra maneira de ver isso é dizer que, em sistemas operacionais modernos, não faz mal alterar o tamanho do setor lógico padrão de 512 bytes de uma unidade para 4.096 bytes: na melhor das hipóteses, você está obtendo algumas melhorias de desempenho se o sistema operacional o fizer. operações R/W de thread único e, no pior cenário, nada muda.
Novamente, a única razão pela qual uma unidade usa setores lógicos de 512 bytes prontos para uso é para permanecer compatível com sistemas operacionais anteriores a 2010. Em sistemas operacionais modernos, configurá-lo para 4.096 bytes não fará mal.
Uma última coisa a notar é que nem todos os HDDs suportam essa mudança. Pelo que eu sei, aqueles que relatam explicitamente os tamanhos dos setores lógicos suportados :
Ele também pode ser alterado com
hdparm
ou com ferramentas proprietárias do fabricante.[EDITAR]
Mas há uma razão pela qual alterar o tamanho lógico do setor de 512 para 4K pode não ser uma boa ideia. De acordo com a Wikipedia , além do sistema operacional, um aplicativo também é uma área potencial que usa código baseado em 512 bytes:
Então, isso significa que mesmo com um sistema operacional moderno compatível com 4Kn, você pode ter problemas se um aplicativo específico não oferecer suporte?
Nesse caso, provavelmente faz mais sentido manter o tamanho do setor lógico 512e padrão do HDD, a menos que você tenha certeza absoluta de que todos os seus aplicativos podem lidar com 4Kn.
[EDITAR 2]
Pensando bem, provavelmente não há grande risco em mudar para setores 4K em hardware e software modernos. A maioria dos softwares funcionará no nível do sistema de arquivos, e aqueles que têm acesso direto a blocos brutos (ferramentas de formatação, ferramentas de clonagem, ...) provavelmente suportarão setores 4K, a menos que estejam desatualizados. Consulte também Mudando o tamanho do setor do HDD para 4.096 bytes
Não sou proficiente em sistemas de arquivos, mas ao ler seu post imediatamente me pergunto como os benchmarks foram executados e se o diagrama mostrado pode ser a favor do tamanho de bloco maior simplesmente devido ao barramento usado para transferir os dados para o disco.
Talvez você precise de alguns links que coletei na minha lista de "ler mais tarde". Com relação à E/S multithreading: presumo que você precise de barramentos separados para transportar verdadeiramente os dados para o(s) disco(s!) em paralelo.
De qualquer forma, sou verde, mas talvez você goste destas leituras:
Em relação ao benchmarking e carga de trabalho dos discos
Comparando dois sistemas de arquivos. Minha nota foi "bom benchmarking"
Eu também gostaria que você apontasse para páginas de manual simples se você se sentir atraído por sistemas de arquivos específicos. Dentro das páginas man estão as opções descritas e na parte inferior você encontra as versões do kernel necessárias para o suporte de um recurso. Mas lendo sua pergunta, isso já pode ser óbvio para você. Desculpe por não responder.