AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 761398
Accepted
ChennyStar
ChennyStar
Asked: 2023-11-14 01:16:16 +0800 CST2023-11-14 01:16:16 +0800 CST 2023-11-14 01:16:16 +0800 CST

Há algum benefício em definir o tamanho do setor lógico de um HDD para 4Kn?

  • 772

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:

insira a descrição da imagem aqui

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?
hard-disk
  • 2 2 respostas
  • 199 Views

2 respostas

  • Voted
  1. Best Answer
    ChennyStar
    2023-11-17T17:08:00+08:002023-11-17T17:08:00+08:00

    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:

    • Um bloco é a menor quantidade de dados que um sistema de arquivos pode manipular (muitas vezes 4.096 bytes por padrão, por exemplo para EXT4, mas pode ser alterado durante a formatação). Eu acredito no mundo Windows que é chamado de cluster.
    • Um setor é a menor quantidade de dados que uma unidade pode manipular. Desde cerca de 2010, todos os HDDs usam setores de 4.096 bytes (por exemplo, o tamanho do setor físico é de 4.096 bytes). Mas para permanecerem compatíveis com sistemas operacionais mais antigos, que só podem lidar com HDDs com setores de 512 bytes, os drives modernos ainda se apresentam como HDDs com 512 bytes (por exemplo, seu tamanho de setor lógico é de 512 bytes). A conversão dos 512 bytes lógicos, vistos pelo SO, e dos 4.096 bytes físicos do HDD, é feita pelo firmware do HDD. Isso é chamado de HDDs de formato avançado (também conhecidos como HDDs 512e/4Kn, epara emulados e npara 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 :

    # hdparm -I /dev/sdX | grep 'Sector size:'
     Logical  Sector size:                   512 bytes [ Supported: 512 4096 ]
     Physical Sector size:                  4096 bytes
    

    Ele também pode ser alterado com hdparmou 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:

    insira a descrição da imagem aqui

    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

    • 3
  2. Tomes
    2023-11-14T02:13:52+08:002023-11-14T02:13:52+08:00

    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.

    • 0

relate perguntas

  • Configurações inativas do HDD usando hdparm (APM, Suspend)

  • qual é a versão do ntfs quando um disco externo é particionado no MS-Windows 7

  • Posso saber remotamente se tenho uma porta SATA livre

  • montar lan hdd no linux fedora

  • snap /dev/loop em 100% de utilização -- sem espaço livre

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve