Qual é o sentido dos discos rígidos informarem o tamanho do setor físico?

13

Eu tenho um SSD que pode ser configurado para relatar o tamanho do setor físico para um sistema operacional de duas maneiras diferentes:

Opção 1: Lógico = 512 bytes, Físico = 512 bytes

Opção 2: Lógico = 512 bytes, Físico = 4096 bytes (4K)

Qual o benefício que um sistema operacional obtém ao estar ciente do tamanho do setor físico de 4K, considerando:

  • O sistema operacional deve conversar com a unidade em setores de 512 bytes, independentemente

  • Todos os sistemas operacionais modernos se alinham a 4K e utilizam 4K ou múltiplos de E / S 4K, independentemente

A configuração parece inútil, porque os sistemas operacionais modernos já estão otimizados para unidades do setor de 4K. Os sistemas operacionais modernos não precisam "perguntar" a uma unidade se seus setores são 512b ou 4K, porque o sistema operacional faz tudo de uma maneira compatível com 4K por padrão.

Por exemplo, o Windows 7 alinha partições a 1 MB (um múltiplo de 4K), o tamanho do cluster NTFS é 4K ou múltiplo e todas as E / S são feitas em 4K ou múltiplas. O Windows não dá a mínima para o disco rígido que você possui, aplicará o comportamento acima em todos os casos.

Enfim ... meu SSD tem essa configuração de "tamanho do setor físico" e, portanto, deve estar lá por um bom motivo ... é o motivo disso que estou procurando.

BTW, para o que vale a pena, a unidade é um Intel SSD DC S3510 . A folha de dados da unidade diz o seguinte (página 27):

Usando o comando SCT 0xD801 com State = 0, Option = 1, o ID Word 106 pode ser alterado de 0x6003 para 0x4000 (o tamanho do setor físico de 4KB para o tamanho do setor físico de 512B é alterado).

misha256
fonte
1
4096 bytes é o formato avançado discos rígidos Advanced Format pode fazer qualquer um, dependendo do sistema operacional se o disco rígido irá emular 512K
Moab
2
As interfaces de armazenamento são um tesouro de decisões herdadas ... "Tamanho do setor físico de 4 KB" também não é verdadeiro. O Flash possui tamanhos de setor físico que geralmente excedem 256 kB. Todos os tamanhos de setor relatados são lógicos.
MSalters

Respostas:

16

A emulação de 512 bytes destina-se à compatibilidade com sistemas mais antigos. No entanto, gravações envolvendo apenas parte de um setor físico de 4K podem causar desempenho reduzido, pois o setor precisa ser lido e modificado antes de ser realmente gravado.

Quando um sistema operacional herdado tenta gravar em um disco de formato avançado, podem surgir problemas de desempenho porque os setores lógicos gravados podem não corresponder aos setores físicos.

  • Quando apenas parte de um setor físico de 4K é lida, os dados são simplesmente lidos do setor físico e não há redução no desempenho. No entanto, quando o sistema tenta gravar parte de um setor físico (por exemplo, um setor emulado de 512 bytes em vez de todo o setor físico), o disco rígido precisa ler todo o setor físico, modificar a parte alterada no interior do disco rígido. memória e escreva de volta nos pratos. Isso é chamado de leitura-modificação-gravação ( RMW ), uma operação que requer uma rotação extra do disco e, portanto, reduz o desempenho. A Seagate explica isso da seguinte maneira :

[...] o disco rígido deve primeiro ler todo o setor de 4K que contém o local de destino da solicitação de gravação do host, mesclar os dados existentes com os novos dados e depois reescrever todo o setor de 4K:

Ciclo de leitura, modificação e gravação

Nesse caso, o disco rígido deve executar etapas mecânicas extras na forma de ler um setor 4K, modificar o conteúdo e depois gravar os dados. Esse processo é chamado de ciclo de leitura, modificação, gravação, indesejável porque afeta negativamente o desempenho do disco rígido.

Partições de disco que não estão alinhadas com um limite de 4K também podem causar desempenho degradado.

  • Tradicionalmente, a primeira partição do disco rígido começa no setor 63. Windows XP e sistemas operacionais mais antigos particionavam discos dessa maneira. As versões mais recentes do Windows criarão partições em um limite de 1 MB, garantindo o alinhamento adequado aos setores físicos. Isso é chamado Alinhamento 0 .

  • Como o LBA 63 não é um múltiplo de 8 (oito setores herdados de 512 bytes se encaixam em um setor 4K), um disco de formato avançado formatado da maneira antiga terá clusters (a menor unidade de alocação de dados do sistema de arquivos, geralmente com tamanho 4K ) que não estão alinhados aos setores físicos em um disco 4K, uma condição chamada Alinhamento 1 . Como resultado, uma operação de E / S que envolve 4K de dados agora abrange dois setores, levando a uma operação de leitura-modificação-gravação que reduz o desempenho.

Embora as informações sobre o tamanho do setor físico sejam desnecessárias se o sistema operacional sempre grava dados em um limite de 4K, essas informações ainda podem ser necessárias para aplicativos que executam E / S de baixo nível.

  • Quando uma unidade informa que seu tamanho de setor físico é 4K, o sistema operacional ou o aplicativo pode dizer que é uma unidade de formato avançado e, portanto, deve evitar executar operações de E / S que não abranjam setores físicos completos. Uma unidade que relata setores nativos de 512 bytes não impõe essa restrição. Embora os sistemas operacionais mais recentes geralmente tentem ler ou gravar dados em unidades 4K sempre que possível (tornando essas informações irrelevantes), os aplicativos que executam E / S de baixo nível podem precisar conhecer o tamanho do setor físico para que possam se ajustar adequadamente e evitar desalinhados. ou gravações de setor parcial que causam ciclos lentos de RMW.

Seu SSD oferece a capacidade de alterar o tamanho do setor físico relatado porque é necessário para compatibilidade com determinadas matrizes de armazenamento.

  • Os datacenters geralmente têm matrizes de armazenamento que consistem em unidades 512n herdadas. As unidades de 4K, mesmo aquelas que simulam setores de 512 bytes, podem não ser compatíveis com essas matrizes, portanto, esse recurso é necessário para garantir a compatibilidade. Veja este tópico do fórum :

    Não podemos simplesmente colar uma unidade 4K em uma matriz formatada com discos 512b. Muitas matrizes (principalmente o armazenamento baseado em ZFS, que é cada vez mais popular à medida que o armazenamento definido por software gera ondas) não aceitarão uma unidade de substituição com um formato de setor físico diferente.

    Observe que será alcançado melhor desempenho em sistemas modernos se a unidade estiver configurada para usar setores de 4K.

bwDraco
fonte
A ironia é que os SOs que não sabem como se alinhar corretamente também não serão capazes de consultar um disco rígido em busca de "tamanho do setor físico". Os SOs que sabem alinhar corretamente não precisam consultar o "tamanho do setor físico" do disco rígido, porque alinham corretamente por padrão. Por exemplo, o Windows se alinha a 1 MB.
misha256
1
Eu tenho que dizer ... Estou irritado. Nunca vi uma unidade que permita alterar a configuração de relatório "tamanho do setor físico". Não consigo entender por que essa configuração precisa existir, considerando que as únicas opções são 512b e 4K e considerando que os sistemas operacionais modernos fazem tudo da maneira 4K, independentemente do tipo de unidade que você usa.
misha256
Esta é provavelmente a melhor resposta do lote, mas ainda assim, acho que é hora de procurar um engenheiro da Intel e obter uma resposta autorizada. Parece ser uma coisa altamente esotérica.
misha256
3
Embora relevante para discos rígidos, essa resposta é irrelevante para SSDs. Os tamanhos de bloco de gravação / apagamento de SSDs são de vários megabytes, portanto, mesmo o 4K "físico" não se aproxima do tamanho real do setor físico.
Qsdfdsaq
1
@qasdfdsaq tamanho de gravação não é necessariamente o mesmo que apagar tamanho. 4K será a granularidade do rastreamento "em uso" do bloco. Enquanto isso agora estou convencido de que a última parte desta resposta sobre ZFS é o correto: utcc.utoronto.ca/~cks/space/blog/tech/...
pjc50
5

Qual o benefício que um sistema operacional obtém ao estar ciente do tamanho do setor físico quando, independentemente disso, o sistema operacional precisa conversar com a unidade em setores de 512 bytes.

O tamanho lógico é um tamanho mínimo para transferir dados. Como este é um dispositivo de bloco, qualquer transferência de dados entre o computador host e a unidade será em múltiplos desse tamanho de bloco lógico.

O tamanho físico é o tamanho ideal para transferir dados e reflete o tamanho das operações reais de leitura e gravação no nível do controlador / inversor.

Quando o computador host solicita uma leitura de um setor lógico, o controlador / unidade executará uma operação de leitura do setor físico que contém o setor lógico.
Quando o tamanho do setor lógico é igual ao tamanho do setor físico, a operação é simples. Quando o tamanho do setor lógico é menor que o tamanho do setor físico, o setor lógico deve ser extraído do setor físico pelo controlador para transferência para o computador host.

Quando o computador host solicita uma gravação de um setor lógico, o tamanho do setor físico é importante.
Quando o tamanho do setor lógico é igual ao tamanho do setor físico, a operação de gravação é simples e pode prosseguir diretamente. A condição do conteúdo anterior do setor não afetará a operação de gravação.

Quando o tamanho do setor lógico é menor que o tamanho do setor físico, o controlador deve primeiro executar uma operação de leitura do setor físico que contém o setor lógico.
Se a leitura for bem-sucedida, o setor lógico será inserido no setor físico e o setor físico será totalmente escrito.
Se a leitura não for bem-sucedida (mesmo após novas tentativas), a operação de gravação não poderá ser concluída.

Se o SO executar as operações de leitura e gravação com o tamanho do setor físico (utilizando as operações multissetoriais disponíveis no conjunto de comandos ATAPI), as operações de gravação serão executadas com mais eficiência (e sem chance desnecessária de incompletude).

O tamanho do setor LÓGICO define inteiramente como um sistema operacional pode conversar com uma unidade. Sem exceções. De que serve saber o tamanho do setor físico, quando você só pode se comunicar no tamanho lógico do setor?

Sua contenção de "sem exceções" está incorreta.
O conjunto de comandos ATAPI, que foi introduzido no IDE HDD, sempre teve a capacidade de executar operações de leitura e gravação com um sector countparâmetro. Isso é apenas uma extensão das interfaces de controlador de disco e disquete existentes que também eram capazes de operações de leitura / gravação em vários setores (desde que os setores estivessem na mesma trilha).

serragem
fonte
Esta pode ser a resposta correta ... mas ainda não estou convencido. O SO moderno opera com sistemas de arquivos e tamanhos de bloco de E / S de 4K e múltiplos de 4K. Eles estão otimizados para uso com discos rígidos com setores físicos em 4K. Além disso, os tamanhos de bloco de E / S empregados ainda são 4K e múltiplos de 4K, mesmo em um disco rígido físico de 512b. O que da?!
misha256
Bingo! O sector countparâmetro do qual você fala ... até o antigo Windows XP lê / grava no tamanho de bloco de E / S de 8setores ou múltiplos deles. Já está totalmente otimizado! É por isso que o XP executa extremamente bem com SSDs, desde que a partição esteja alinhada. É extremamente amigável em 4K. Portanto, a pergunta ainda não foi respondida. O que mais um sistema operacional pode fazer sabendo o tamanho do setor físico é 4K. Lembre-se, o sistema operacional está otimizado para E / S 4K.
misha256
1
"Eles já estão otimizados ..." - Não necessariamente. O setor "inicial" deveria estar sempre alinhado com um setor físico. Isso não é garantido quando o sistema operacional não conhecia os setores físicos e lógicos, mas apenas tentava ser mais eficiente usando operações multissetoriais.
sawdust
2
@ misha256 Não, não é assim tão simples. "O Windows XP, o Windows Server 2003 e o Windows Server 2003 R2 não suportam mídia 512e ou 4Kn. Embora o sistema possa inicializar e poder operar minimamente, pode haver cenários desconhecidos de problemas de funcionalidade, perda de dados ou subótimo. Portanto, a Microsoft adverte fortemente contra o uso de mídia 512e com o Windows XP ... " msdn.microsoft.com/en-us/library/windows/desktop/…
Ross Ridge
2
@ misha256 - Você escolhe as condições e proclama que, em todas as circunstâncias, essas informações são inúteis. Nem todo mundo vai usar um SSD com Windows e NTFS e clusters> 4k. "O NTFS nem suporta menos de 4K I / O" - Não é verdade. Tamanhos de cluster de 512, 1024 e 2048 bytes ainda são opções na minha cópia (atualizada) do Win7 para NTFS. . .
Serragem #
3

Se o sistema operacional souber o tamanho do setor físico subjacente, poderá otimizar suas consultas para exigir o menor número possível de operações físicas. Particularmente com SSDs, o limite de operação física (limite de IOPS de 4KB) costuma ser o limite máximo de velocidade do dispositivo, por isso é importante poder fazer o melhor uso dessa capacidade.

David Schwartz
fonte
Argh, isso não pode estar certo. OS modernos 'são inerentemente otimizados. Todos eles usam sistemas de arquivos com tamanhos de "bloco" (também conhecidos como clusters) com 2 ^ n bytes, começando em 2 ^ 12 (ou seja, 4K, acho que o NTFS é o padrão). Depois disso, todas as operações de E / S acabam sendo um múltiplo de 4K. Se um disco é fisicamente 512 bytes ou 4K não deve fazer diferença. Você não pode otimizar mais do que isso, certamente?
misha256
E se o sistema operacional não acertar o alinhamento e uma operação de E / S terminar em dois setores físicos? Você obteria desempenho degradado.
bwDraco
1
@ misha256 Não há incompatibilidade entre o que você disse e o que eu disse. É verdade que, além de alinhar corretamente, a maioria dos sistemas de arquivos não se beneficia muito de saber o tamanho do setor físico. Alguns bancos de dados fazem.
David Schwartz
@DavidSchwartz Certo, ok, então isso pode ser para o benefício de alguns sistemas operacionais de arquivos esotéricos ou sistemas de arquivos usados ​​em data centers ou similares? Algumas matrizes RAID chiques talvez?
misha256
Parece ser sobre controladores de SO e RAID sem Windows ("esotéricos").
Pjc50
1

Existem duas maneiras diferentes de acessar um local dentro de uma unidade, uma é o esquema CHS e a outra é o esquema LBA.

CHS significa Cilindro, Cabeça, Setor e é o método de nível mais baixo para determinar onde ler ou gravar a partir do inversor. Você deve usar o cilindro x, a cabeça ye o setor z e ler ou gravar o conteúdo desse local para ou de um endereço na memória (um buffer). É derivado dos componentes físicos reais de um disco rígido (tradicional, oxidação em rotação), onde você tem cilindros físicos e cabeças de leitura. O setor é a menor unidade endereçável e era tradicionalmente fixado em 512 bytes.

O LBA é o endereçamento de bytes lógicos no qual a unidade lê e grava em um endereço do setor por seu deslocamento, por exemplo, leia o 123837 ° setor no disco ou grave-o no 123734 ° setor no disco (começando do zero).

O problema? Cada um desses valores tem alcance limitado. De fato, devido à gravidade do CHS, o LBA teve que ser introduzido. Para CHS, os valores possíveis para C (o cilindro) são 1023, enquanto H (cabeçotes) pode ter no máximo 255 e S (setor) pode subir até 63, o que significa que você pode ter no máximo 1024 cilindros x 255 cabeçotes x 64 setores x 512 bytes mapeados no formato CHS tradicional, oferecendo um total geral de menos de 8 GiB! Usando o CHS, simplesmente não é possível acessar um disco maior que 8 GiB!

Portanto, o LBA foi introduzido com um limite de 32 bits, fornecendo um limite de 2 ^ 32 x 512 bytes ou 2 TiB no tamanho do disco - esse é o motivo pelo qual um disco MBR não pode exceder 2TiB porque usa CHS e LBA para especificar tamanhos de partição, e nem suporta qualquer coisa acima de 2TiB.

Opções novas e melhores foram introduzidas, como o esquema de particionamento GPT, que estende o LBA para 64 bits, oferecendo muito mais do que você precisará em 2 ^ 64 x 512 bytes - mas há um problema: muito legado sistemas operacionais de hardware e legado e implementações de BIOS e drivers herdados não suportam UEFI ou GPT, e muitas pessoas gostariam de ter algo que possa ser atualizado com mais facilidade para ultrapassar o limite de 2TiB sem precisar reescrever a pilha inteira do princípio. E, finalmente, chegamos ao tamanho do setor 4096.

Veja, em todas as limitações discutidas acima, uma coisa foi uma suposição fixa: o tamanho do setor. Desde o primeiro dia, ele tem 512 bytes e permanece assim desde então. Porém, recentemente, os fabricantes de discos rígidos perceberam que há uma oportunidade de trabalhar um pouco de mágica: pegue o CHS tradicional ou o LBA de 32 bits e simplesmente substitua o tamanho do setor por 4096 (4k) em vez de 512 bytes. Quando um sistema operacional diz "me dê o segundo setor no disco" solicitando o LBA 1 (porque o LBA 0 é o primeiro), não forneceremos os bytes 512 a 1023, mas os bytes 4096 a 8191.

De repente, nosso limite de 2TiB é atualizado para 2 ^ 32 x 4096 bytes, ou 16 TiB, sem ter que abandonar o MBR, mudar para UEFI ou GPT, ou qualquer outra coisa!

O único problema é que, se o sistema operacional não estiver ciente de que este é um disco mágico que usa 4096 setores em vez de setores de 512 bytes, haverá uma incompatibilidade. Cada vez que o sistema operacional diz "ei, você, disco, escreva-me esses 512 bytes para compensar xxx", o disco usará 4096 bytes para armazenar esses 512 bytes (o restante são zeros ou dados indesejados, supondo que você não termine com memória insuficiente) porque não se comunicam em bytes, se comunicam em setores.

Portanto, os BIOS agora (às vezes) incluem uma opção para permitir que você especifique manualmente que um tamanho de setor de 512 bytes deve ser usado em vez do tamanho de setor nativo de 4096 bytes que os discos mais novos estão usando - com a ressalva de que você não pode usá-lo para acessar mais de 2TiB do disco em um sistema MBR, exatamente como nos "bons e velhos tempos". Mas os sistemas operacionais modernos com reconhecimento de 4K podem tirar proveito de tudo isso para usar essa mágica para ler e escrever em pedaços de 4096 bytes e pronto!

(Uma vantagem adicional é que as coisas são muito mais rápidas porque, se você está lendo e escrevendo 4096 bytes de cada vez, são menos operações para ler ou gravar, digamos, 4GiB de dados.)

Mahmoud Al-Qudsi
fonte
2
Isso realmente não responde à pergunta. Explicar CHS e LBT é irrelevante. Isso parece um despejo cerebral do que você sabe sobre "setores". "Desde o primeiro dia, foram 512 bytes ..." - Isso é verdade apenas para o PC IBM.
sawdust
1
@sawdust Eu discordo - Mesmo ignorando o histórico (imho important) sobre CHS e LBA, a resposta sucinta à sua pergunta está no segundo parágrafo "Mas os sistemas operacionais modernos com conhecimento em 4k podem tirar proveito de tudo isso para usar essa mágica para leia e escreva em pedaços de 4096 bytes e pronto! " - ou seja, a suposição na pergunta - que um sistema operacional precisa falar em blocos de 512 bytes - está errada.
Davidgo 6/10
@davidgo No nível do driver, o sistema operacional conversa com a unidade em npedaços de 512 bytes. O né um número que, a partir do Windows XP, NUNCA é inferior a 8 e sempre é múltiplo de 8. O que significa que todos os sistemas operacionais a partir do XP e acredito que todas as distribuições modernas do Linux também já estão otimizados para unidades 4K. A menor E / S é 4K e todos os outros tamanhos de E / S são múltiplos disso.
misha256
Acho que deixo bem claro que, mesmo que você agrupe n setores em uma operação, você ainda estará dizendo ao disco para procurar em pedaços de 512 bytes, o que significa que você está limitado em quanto pode procurar. 4096 setores resolvem o problema de busca. Também esclareci que o conhecimento do sistema operacional sobre o tamanho do bloco é imperativo; caso contrário, 512 bytes serão armazenados em 4096 pedaços!
Mahmoud Al-Qudsi
Além disso, acho que você está confuso sobre lógico e físico. O físico é sempre 512 ou 4096. Se o tamanho lógico for 4096, mas o sistema operacional assumir cegamente que é 512, você encontrará os problemas que descrevi. Eles devem combinar.
Mahmoud Al-Qudsi
1

512/4096 = SO responsável pelo alinhamento / otimização,

512/512 = Unidade responsável por isso

Consulte também: http://support.microsoft.com/en-us/kb/2510009

Joe
fonte
Cite as partes essenciais da resposta nos links de referência, pois a resposta pode se tornar inválida se as páginas vinculadas forem alteradas.
DavidPostill
0

Só queria que você soubesse de uma situação em que os setores de 4K são um problema para os sistemas operacionais modernos.

O gravador VSS da Microsoft (Shadow Copy) não funciona bem com setores 4K. Para fazer backup de uma pasta de compartilhamento do DFS Replication, nosso software de backup "Backup Exec" precisa fazer uma cópia de sombra da pasta DFS Replicated. O trabalho falhará se a pasta Replicação DFS estiver em uma unidade com setores 4K devido ao VSS não funcionar corretamente com setores 4K.

Jim

Jim
fonte
3
Não tenho certeza absoluta de que isso responda à pergunta proposta, mas sim à pergunta do autor.
Ramhound 22/08
Esta é uma informação muito interessante, mas parece ser uma resposta a uma pergunta um pouco diferente. Depois de ter reputação suficiente, você poderá comentar em qualquer lugar. Para uma introdução ao nosso site, consulte o tour .
Ben N
-3

Físico significa o da própria unidade real, enquanto Lógico é o das divisões definidas dentro dela. Do PC Mag's Logical vs Physical:

Em um PC com Windows, um único disco rígido físico é a unidade 0; no entanto, ele pode ser particionado em várias unidades lógicas, como C :, D: e E :.

Para explicar isso de forma digerível, imagine uma maçã com a largura da sua mão. Esse é o tamanho físico real da maçã. Naturalmente, uma maçã inteira não cabe na sua boca, então você decide dividi-la em fatias iguais, sendo cada fatia a largura do seu dedo. Esse é o tamanho lógico ou o tamanho que o seu computador utilizará.

Vários motivos para isso são cálculos de capacidade de valor real e mapeamento e correção de erros, conforme explicado pela Wikipedia:

As unidades de disco rígido típicas tentam "remapear" os dados em um setor físico que está falhando em um setor físico sobressalente fornecido pelo "pool de setor sobressalente" da unidade (também chamado de "pool de reserva"), [41] enquanto conta com o ECC para recuperar dados armazenados enquanto a quantidade de erros em um setor defeituoso ainda é baixa o suficiente. O recurso SMART (Tecnologia de automonitoramento, análise e geração de relatórios) conta o número total de erros em todo o disco rígido corrigido pelo ECC (embora não em todos os discos rígidos, pois os atributos SMART relacionados "Hardware ECC Recovered" e "Soft ECC Correction" são não é consistentemente suportado) e o número total de remapeamentos de setor executados, pois a ocorrência de muitos desses erros pode prever uma falha no disco rígido.

Assim como você não pode ter fatias da maçã sem a própria maçã, também não pode ter o Logical sem o servir físico como base.

xCare
fonte
1
Mas por que um sistema operacional precisa saber o tamanho do setor físico e o que fará de diferente, considerando que, de qualquer maneira, precisa conversar com a unidade em setores lógicos? Parece informações absolutamente inúteis para um sistema operacional saber.
misha256
"por que um sistema operacional precisa saber ..." - O tamanho lógico é o tamanho mínimo para transferir dados. O tamanho físico é um tamanho ideal para transferir dados e reflete o tamanho da operação real de leitura / gravação no nível da unidade. "Parece informações absolutamente inúteis ..." - Talvez pareça "inútil" para você, porque você não está desenvolvendo ou está envolvido em um sistema operacional?
sawdust
1
@sawdust Mas o sistema operacional não pode usar o tamanho ideal de transferência de que você está falando, porque a unidade está conectada a setores lógicos de 512 bytes. As unidades 4K nativas são diferentes, possuem setores lógicos em 4K e um sistema operacional de suporte (por exemplo, Win 8.1) é forçado a ler e gravar em setores lógicos em 4K. Mas minha unidade não é uma unidade lógica de 4K. É uma unidade lógica de 512 bytes.
misha256
@ misha256 - Eu postei minha própria resposta.
sawdust
Confundir unidades físicas / lógicas com tamanhos de setores físicos / lógicos.
MSalters