Permitindo discos e setores grandes no Windows 8

Um dos serviços mais básicos oferecidos por um sistema operacional é o sistema de arquivos, e o Windows tem um sistema de arquivos mais avançado do que qualquer sistema operacional amplamente utilizado. No Windows 7, aperfeiçoamos, de forma considerável, muitos recursos em termos de confiabilidade, gerenciamento e robustez (por exemplo, automatizamos totalmente o conceito ultrapassado de desfragmentação). No Windows 8, concentramos o nosso trabalho no dimensionamento e na capacidade. Bryan Matthew, autor desta postagem, é gerente de programas da equipe de sistema de arquivos e armazenamento.
--Steven

O aumento das nossas coleções digitais segue a um ritmo cada vez mais acelerado. As fotografias digitais e os filmes caseiros de alta resolução, e as enormes coleções de música contribuem de forma significativa para esse crescimento. Os fornecedores de discos rígidos têm respondido a esse desafio oferecendo unidades de disco rígido com capacidades muito grandes. Um relatório recente de pesquisa de mercado da IDC estima que a capacidade máxima de uma unidade de disco rígido único chegue a 8 TB até 2015.

Em 2010, a capacidade era de 2 TB; em 2011, 3 TB; crescendo gradualmente até 7 TB previstos para 2015

Aumento da capacidade máxima de unidades de disco rígido único ao longo do tempo
(Fonte: Estudo da IDC nº 228266, previsão para unidades de disco rígido entre 2011 e 2015 em todo o mundo:
tempos de transformação,
maio de 2011)

Nesta postagem, abordarei como o Windows 8 evoluiu em conjunto com os produtos oferecidos pelos parceiros do setor para permitir um uso mais eficiente e completo dessas unidades com capacidade realmente grande.

Os desafios das unidades de disco rígido com capacidade muito grande

Para que você tenha um pouco mais de contexto, vamos definir unidades de disco com "capacidade muito grande" sendo aquelas com tamanho superior a 2.2 TB (por unidade de disco). A arquitetura atual do Windows tem alguns limites que tornam o gerenciamento dessas unidades em alguns cenários um pouco difícil.

Os fornecedores de unidade de disco rígido inovaram oferecendo capacidade muito grande, mas dois desafios principais exigiram a nossa atenção:

  • Garantir o endereçamento de toda a capacidade disponível para permitir total utilização
  • Dar suporte aos fornecedores de unidade de disco rígido para ajudá-los a oferecer discos físicos gerenciados de forma mais eficiente, com setores de tamanho 4 K (grandes)

Vamos discutir esses dois desafios de forma mais detalhada.

Endereçando toda a capacidade disponível

Para entender completamente os desafios de se endereçar toda a capacidade disponível em discos muito grandes, precisamos aprofundar estes conceitos:

  • O método de endereçamento
  • O esquema de particionamento de disco
  • A implementação de firmware no PC: BIOS ou UEFI


O método de endereçamento

Inicialmente, os discos eram endereçados pelo método CHS (Cilindro - Cabeçote - Setor) e era possível identificar um determinado bloco de dados no disco, especificando o cilindro, o cabeçote e o setor em que ele se encontrava. Lembro que, em 2001 (eu ainda estava na escola!), nós vimos a introdução do disco de 160 GB, o que marcou o limite do método CHS de endereçamento (em aproximadamente 137 GB) e os sistemas precisaram ser redesenvolvidos para dar suporte a discos maiores. [Nota do editor: o meu primeiro disco rígido tinha 5 MB e era do tamanho de um PC com torre. --Steven]

O novo método de endereçamento era chamado de Endereçamento LBA. Em vez de referenciar setores usando geometria discreta, um número do setor (endereço de bloco lógico) era usado para referenciar um bloco de dados específico no disco. O Windows foi atualizado para utilizar o novo mecanismo de endereçamento da capacidade disponível nas unidades de disco rígido. Com o esquema LBA, cada setor tem um tamanho pré-definido (até recentemente, 512 bytes por setor) e os setores simplesmente são endereçados em ordem crescente, começando pelo setor 0 e indo até o setor n, em que:

n = (capacidade total em bytes)/ (tamanho do setor em bytes)

O esquema de particionamento de disco

Embora o endereçamento LBA teoricamente permita o acesso a capacidades muito grandes, na prática, o maior valor possível de "n" pode ser limitado pelo esquema de particionamento de disco associado.

A noção de particionamento de disco pode remontar ao início da década de 80. Naquele tempo, os implementadores de sistemas detectaram a necessidade de se dividir uma unidade de disco em várias partições (isto é, subpartes), que poderiam ser formatadas separadamente com um sistema de arquivos e depois usadas para armazenar dados. O esquema de tabela de partição MBR (registro mestre de inicialização) foi inventado naquela época e permitiu que a capacidade máxima do disco fosse representada por até 32 bits de informações. Por meio de um cálculo simples, sabemos que a maior quantidade de bytes que pode ser endereçada por 32 bits é 232 ou 2.2 TB. É claro que, nos anos 80, isso era um limite prático perfeitamente legítimo, considerando que o maior disco disponível aos consumidores era de "colossais" 5 MB e custava mais de US$ 1.500!

No início dos anos 90, os implementadores de sistemas reconheceram a necessidade de permitir um endereçamento superior ao limite de 2.2 TB (entre outros requisitos). Um grupo de empresas trabalhou em conjunto para desenvolver um esquema de particionamento dimensionável chamado de GPT (tabela de partição GUID), como parte da especificação UEFI (Unified Extensible Firmware Interface). A GPT permite que até 64 bits de informações armazenem o número que representa o tamanho máximo de um disco, o que teoricamente permite o número máximo de 9.4 ZettaByte (1 ZB = 1.000.000.000.000.000.000.000 bytes).

A partir do Windows Vista de 64 bits, o Windows permitiu a capacidade de inicialização por uma unidade de disco rígido particionada por GPT com um requisito fundamental: o firmware do sistema deve ser UEFI. Já falamos sobre a UEFI e você já sabe que ela pode ser habilitada como um novo recurso dos PCs com Windows 8. Isso nos leva ao firmware.

Implementação de firmware no PC: BIOS ou UEFI

Os fornecedores de PC incluem o firmware, que é responsável pela inicialização básica do hardware (entre outras coisas) antes de o sistema operacional (Windows) assumir o controle. As respeitadas implementações de firmware do sistema BIOS existem desde que o PC foi inventado, por volta de 1980. Devido à enorme evolução dos PCs ao longo das décadas, a especificação UEFI foi desenvolvida para substituir o BIOS e as implementações existem desde de 1990. A UEFI foi desenvolvida do zero para funcionar com unidades de capacidade muito grande, utilizando a tabela de partição GUID ou GPT, embora algumas implementações do BIOS tenham tentado prolongar sua utilidade e relevância usando soluções alternativas para unidades de capacidade grande (por exemplo, o esquema de particionamento híbrido MBR-GPT). Esses mecanismos podem ser muito frágeis e podem representar risco para os dados. Portanto, o Windows tem exigido de forma consistente que o firmware UEFI seja usado em conjunto com o esquema GPT para discos de inicialização.

A partir do Windows 8, vários recursos novos do Windows precisarão da UEFI. A combinação do firmware UEFI com o particionamento GPT e o LBA permite ao Windows endereçar totalmente e com facilidade discos de capacidade muito grande.

Os nossos parceiros estão trabalhando muito para oferecer sistemas baseados no Windows 8 que usem a UEFI para ajudar a tornar realidade esses cenários e recursos inovadores do Windows 8 (por exemplo, Inicialização segura, Unidade criptografada e Inicialização rápida). Quando o Windows 8 for lançado, novos sistemas darão suporte a sua instalação, e inicialização, em um disco de 3 TB ou maior. Veja uma prévia:

A unidade C é mostrada com 2.71 TB livres de um total de 2.72 TB

Windows 8 inicializado a partir de uma unidade SATA de 3 TB com um sistema UEFI

Tamanhos de setor de 4 KB (grandes)

Todas as unidades de disco rígido incluem alguma forma de lógica e informações de correção de erros internos. Isso permite aos fornecedores de unidades de disco rígido lidar automaticamente com a SNR (relação sinal-ruído) na leitura dos discos. Conforme a capacidade dos discos aumenta, os bits são empacotados cada vez mais próximos e, dessa forma, a SNR da leitura do disco diminui. Para equilibrar a diminuição da SNR, setores separados do disco precisam armazenar mais ECCs (códigos de correção de erros) para ajudar a compensar erros na leitura do setor. O método atual de armazenamento de ECCs dos discos modernos não usa o espaço de forma eficiente. Isto é, muito espaço do setor de 512 bytes atual é usado para armazenar informações de ECC, em vez de armazenar dados do usuário. Isso foi um dos fatores que levou à introdução de tamanhos de setores maiores.

Tamanhos de setores maiores: mídia de "Formato avançado"

Com um setor de tamanho maior, um esquema diferente pode ser usado para codificar o ECC; possibilitando maior eficiência na correção de erros e menor uso do espaço geral. Essa eficiência ajuda a permitir capacidades ainda maiores no futuro. Os fabricantes de discos rígidos concordaram em usar um tamanho de setor de 4 KB, o que chamaram de AF (Formato avançado), e lançaram a primeira unidade AF no mercado no final de 2009. Desde então, eles têm migrado rapidamente suas linhas de produtos para a mídia AF, com a expectativa de que todos os dispositivos de armazenamento futuros usem esse formato.

Ler-Modificar-Gravar

Com um disco AF, o layout de dados na mídia é organizado fisicamente em blocos de 4 KB. As atualizações na mídia apenas podem ocorrer nessa granularidade, portanto, para permitir o endereçamento de blocos lógicos em unidades menores, o disco precisa realizar alguns trabalhos especiais. Gravações feitas em unidades do tamanho do setor físico não precisam desse trabalho especial, portanto, podemos pensar no tamanho do setor físico como a unidade de atomicidade da mídia.

Como ilustrado abaixo, um setor físico de 4 KB pode ser endereçado de forma lógica com setores lógicos de 512 bytes. Para gravar em um único setor lógico, o disco não pode simplesmente mover o cabeçote para a seção do setor físico e iniciar a gravação. Ele precisa ler o setor físico de 4 KB inteiro em um cache, modificar o setor lógico de 512 bytes no cache e gravar o setor físico de 4 KB inteiro de volta na mídia (substituindo o bloco antigo). Isso é chamado de Ler-Modificar-Gravar.

Os discos com essa camada de emulação para dar suporte a gravações não alinhadas são chamados de 4 K com emulação de 512 bytes ou "512e". Os discos sem essa camada de emulação são chamados de "4 K nativos".

Setor físico de 4 K com 8 blocos de 512 cada. Etapa 1: Leitura do setor de 4 K da mídia para o cache. Seta. Etapa 2: Atualização do setor lógico de 512 bytes no cache (com um dos blocos de 512 realçado). Etapa 3: Substituição do setor físico de 4 K anterior na mídia.

Em consequência do processo de Ler-Modificar-Gravar, o desempenho pode ser prejudicado em aplicativos e cargas de trabalho com grandes quantidades de gravações não alinhadas. Para dar suporte a esse tipo de mídia, o Windows precisa garantir que os aplicativos possam recuperar o tamanho do setor físico do dispositivo, e os aplicativos (tanto os aplicativos do Windows quanto aplicativos de terceiros) precisam garantir o alinhamento de E/S do tamanho do setor físico reportado.

Criando para discos de setor grande

Com o aprendizado adquirido a partir de alguns erros identificados em versões anteriores do Windows, os discos AF têm sido um ponto de design fundamental para novos recursos e tecnologias do Windows 8; como resultado, o Windows 8 é o primeiro sistema operacional com total suporte para os dois tipos de discos AF: 512e e 4 K nativos.

Para tornar isso possível, identificamos quais recursos e áreas de tecnologia foram mais vulneráveis aos problemas descritos acima, e entramos em contato com as equipes que desenvolvem esses recursos para orientar e ajudá-las a testar hardware para esses cenários.

Estes foram alguns dos problemas solucionados:

  • Introdução de nova API e aperfeiçoamento da existente para melhor permitir a consulta do tamanho de setor físico de um disco por parte de aplicativos
  • Aperfeiçoamento do reconhecimento de setor grande dentro do sistema de arquivos NTFS, incluindo o preenchimento apropriado do setor em gravações estendidas (gravação no final do arquivo)
  • Incorporação do reconhecimento de setor grande no novo formato de arquivo VHDx usado pelo Hyper-V para dar total suporte aos dois tipos de discos AF
  • Aperfeiçoamento do código de inicialização do Windows para que funcionasse corretamente na inicialização a partir de discos 4 K nativos

Isso é apenas uma pequena amostra do trabalho feito para permitir o suporte total aos dois tipos de discos AF no Windows 8. Também estamos trabalhando com equipes de outros produtos dentro da Microsoft e em todo o setor (por exemplo, desenvolvedores de aplicativos de bancos de dados) para garantir um comportamento correto e eficiente com os discos AF.

Em resumo

O NTFS no Windows 8 aproveita totalmente os recursos oferecidos pelos nossos parceiros do setor para dar suporte, de forma eficiente, a discos com capacidade muito grande. Esteja certo de que as suas necessidades de armazenamento em discos de grande capacidade serão bem administradas com o Windows 8 e o NTFS!

/Bryan