O tamanho do setor físico padrão de 512 bytes é apropriado para discos SSD no Linux?

10

GSmartControl e qualquer ferramenta de outra linha de comando (como fdisk, smartctl, cat /sys/block/sd*/queue/hw_sector_size, cat /sys/block/sd*/queue/physical_block_size) eu tinha usado relatório a mesma para ambos os meus discos:

Sector Size: 512 bytes logical/physical

Esta é uma instalação padrão do Ubuntu 18.10 (posteriormente atualizada para 19.04). No entanto, o stat -fcomando nos dois discos informa:

Block size: 4096       Fundamental block size: 4096

Ambos os meus discos são SSDs e os discos AFAIK SSD exigem um tamanho de setor de 4K . Isso está bom ou estou faltando alguma coisa? As informações retornadas por stat(= 4K) garantem que o sistema operacional sempre envie E / S para o disco em múltiplos de 4K e esses blocos nunca cruzem os limites de 4K (os blocos de E / S estarão sempre alinhados com 4K)?

Observe a seguinte saída ( sdb2é minha partição raiz , sdaé meu /homedisco):

# fdisk -l /dev/sd?
Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Disk model: SanDisk SDSSDH35
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdb: 238.5 GiB, 256060514304 bytes, 500118192 sectors
Disk model: ADATA SU800NS38 
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: xxxx....

Device       Start       End   Sectors  Size Type
/dev/sdb1     2048   1050623   1048576  512M EFI System
/dev/sdb2  1050624 500117503 499066880  238G Linux filesystem

# df / /home
Filesystem     1K-blocks      Used Available Use% Mounted on
/dev/sdb2      244568380  17799136 214276188   8% /
/dev/sda       479670976 129685112 325550152  29% /home
FedonKadifeli
fonte
Sim. Ele contém informações úteis. Mas não encontrei uma resposta oficial para a pergunta: as informações retornadas pelo stat (4K) garantem que o sistema operacional sempre envie E / S para o disco em múltiplos de 4K e esses blocos nunca cruzarão os limites de 4K (os blocos de E / S sempre estar alinhado com 4K)?
FedonKadifeli
Não sei o que é "stat (4K)". Mas a maioria dos sistemas operacionais modernos sabe como lidar com transferências nativas de E / S 4K. E não, isso não significa que os blocos nunca cruzarão as fronteiras de 4K no disco, a menos que as partições estejam alinhadas corretamente. Use fdisk -lpara verificar problemas de alinhamento. E, aparentemente, o trabalho da SSD é um pouco diferente, por causa de sua construção física, mas não sou especialista nessa área.
Heynnema # 21/19

Respostas:

7

Antigamente, setores de 512 bytes eram a norma para discos. O sistema costumava ler / gravar setores apenas um setor por vez, e era o melhor que os discos rígidos antigos podiam fazer.

Agora, com as unidades modernas sendo tão densas, rápidas e inteligentes, os setores de leitura / gravação, apenas um setor por vez diminui a produtividade total.

O truque foi ... como você acelera a taxa de transferência total, mas ainda mantém a compatibilidade com os subsistemas de disco antigos / padrão? Você cria um tamanho de bloco 4096 composto por oito setores físicos de 512 bytes. Agora, o 4096 é a transferência mínima de leitura / gravação de / para o disco, mas é entregue em mandris compatíveis de 512 bytes para o sistema operacional.

Isso significa que, mesmo que o sistema precise apenas de um setor de informações de 512 bytes, a unidade lê oito setores de 512 bytes para obtê-lo. Se, no entanto, o sistema precisar dos próximos sete setores, ele já será lido e, portanto, nenhuma E / S de disco precisará ocorrer ... portanto, um aumento de velocidade na taxa de transferência total.

Os sistemas operacionais modernos podem tirar proveito total dos tamanhos de blocos 4K nativos das unidades modernas.

heynnema
fonte
+1, mas 4096/512 = 8, então acho que deveria haver 8 setores (lógicos) de 512 b em um setor físico de 4096 b. Eu uso partedpara mostrar o tamanho do setor lógico e físico.
Sudodus 19/05/19
@sudodus Boa captura. Edição realizada.
Heynnema 19/05/19
É por isso que é importante alinhar suas partições com um limite de 4k, caso contrário, cada carregamento / armazenamento de bloco de 4k realmente toca dois setores de hardware. (Os sistemas de arquivos dentro das partições geralmente usam blocos de 4k alinhados ao início da partição). Algumas ferramentas de formatação alinham a primeira partição por 1MiB, deixando um MiB inteiro sem uso, exceto a tabela de partições. Unidades modernas que relatar seu tamanho do setor físico como 4k, separado de seu tamanho do setor lógico que ainda é 512B.
Peter Cordes
@ PeterCordes, não apenas o setor de inicialização e a tabela de partição (nos primeiros 512 bytes) são armazenados no primeiro Mibibyte. Em uma tabela de partição do MSDOS, grubcoloca código adicional no primeiro Mibibyte para inicializar no modo BIOS. (Em uma GPT, é grubnecessária uma pequena partição com o bios_grubsinalizador para que esse código seja inicializado no modo BIOS).
sudodus 20/05/19
4

De acordo com a Wikipedia "Advanced Format (AF) é qualquer formato de setor de disco usado para armazenar dados em unidades de disco que excedam 512, 520 ou 528 bytes por setor, como os setores de 4096 bytes de uma unidade de formato avançado (AFD)". O Advanced Format (AF) é um formato de disco que usa nativamente um tamanho de setor de 4.096 bytes em vez de 512 bytes. Para manter a compatibilidade com sistemas legados, os discos AF emulam um tamanho de setor de 512 bytes.

Obtive os mesmos resultados que você obteve executando stat -fe smartctlem dois SSDs. Os dois SSDs foram reconhecidos automaticamente pelo sistema operacional quando foram instalados e exigiram configuração zero; portanto, os dados que você obteve são as configurações padrão para o tamanho do bloco e do setor.

karel
fonte
@heynnema Não posso fazer nada sobre "setores de 4096 bytes" porque ele é copiado da Wikipedia, por isso tenho que deixá-lo da mesma forma que na Wikipedia.
1919 karel
2
@ heynnema: O tamanho físico é muito maior. . Do SSD são construídos a partir da memória flash NAND ", que é fisicamente dividido nos chamados 'blocos de apagar' Aqueles pode ser muito maior, 4MB é definitivamente possível.
MSalters
1

O tamanho do setor físico padrão de 512 bytes é apropriado para discos SSD no Linux?

Ambos os meus discos são SSDs e os discos AFAIK SSD exigem um tamanho de setor de 4K. Isso está bom ou estou faltando alguma coisa?

O hardware e os sistemas operacionais antigos usavam setores de 512 bytes, desde 2011 (quase) todo o hardware de armazenamento possui setores de 4096 (ou mais ) bytes; mas algum hardware suporta a emulação de setores de 512 bytes para sistemas legados. Há exceções, o Samsung 840 EVO SSD possui blocos de tamanho 2048 KB .

Um código de correção de erros (ECC) é calculado para cada bloco de 512 bytes e, como você pode imaginar, os dados do ECC também exigem espaço de armazenamento. Não é necessário dizer que um setor de 4096 bytes requer menos informações do ECC do que oito blocos de 512 bytes se os algoritmos do ECC permanecerem inalterados. No final, a capacidade total de armazenamento de um disco rígido aumenta como resultado de menos sobrecarga de dados do ECC.

O uso de setores 4K faz sentido do ponto de vista arquitetural, pois outros índices (como páginas de memória x86 e muitos clusters de sistemas de arquivos) também empregam o tamanho de 4 KB. O formato avançado permite algoritmos ECC mais robustos, o que é importante à luz das capacidades cada vez maiores. Os controladores empregam técnicas adicionais além da correção de erros, através da compreensão das características de erro da memória flash NAND e do comportamento da carga de trabalho.

Advanced Format (AF) é qualquer formato de setor de disco usado para armazenar dados em discos magnéticos em unidades de disco rígido (HDDs) que excedem 512, 520 ou 528 bytes por setor, como os 4096, 4112, 4160 e 4224 bytes ( 4 KB) de uma unidade de formato avançado (AFD). Setores maiores permitem a integração de algoritmos mais fortes de correção de erros para manter a integridade dos dados em densidades de armazenamento mais altas.

Para discos SCSI (SAS), o tamanho do bloco RAID é maior que o tamanho do bloco JBOD devido aos campos de integridade de dados padronizados SCSI T10 , além da verificação lógica de blocos defeituosos armazenados em cada bloco com os dados. Os adaptadores RAID SAS suportam blocos de disco com base em 512 bytes de dados ou 4K bytes de dados. O tamanho do bloco RAID para os 512 discos é de 528 bytes por setor e o tamanho do bloco RAID para os discos de 4K é de 4224 bytes por setor.

Como você está gravando na memória e não o tamanho de um setor físico de disco giratório tem menos efeito do que garantir que suas partições estejam alinhadas com o tamanho do bloco de apagamento . Mesmo assim, é melhor ter software e hardware atualizados e usar o tamanho do setor em 4K.

O tamanho maior do setor é recomendado pela Intel - " Obtenha ótimo desempenho com alterações no tamanho do setor físico do SSD ".

Roubar
fonte