XFS e SSDs (e HDs com setores físicos de 4 KiB)

Quando escrevi Complemento sobre o suporte a SSDs (e HDs com setores físicos de 4KiB) no Linux, Carlos Maiolino havia ficado de adaptar o mkfs.xfs da suíte xfsprogs para automaticamente configurar o tamanho do setor do sistema de arquivos de acordo com o tamanho do setor físico do disco. Seguir o que faz o mke2fs (e o Windows 8 fará com o NTFS). Porém os patches não apareceram e a ideia ficou em hibernação.

Até Eric Sandeen assumir o bastão — provocado por este bug report do Debian — e fazer as modificações necessárias. Com o commit mkfs.xfs: properly handle physical sector size, o mkfs.xfs passa a usar a libblkid (parte da suíte util-linux) para obter o tamanho do setor físico e automaticamente configurar a opção -s size=xxxx de acordo.

Beleza pura! Todas as distribuições que usarem um mkfs.xfs atualizado (xfsprogs 3.1.8 ou superior) terão sistemas de arquivos XFS tunados out-of-box para HDDs com setores físicos de 4 KiB e SSDs (sobre os últimos, ver abaixo). A outra questão importante, o alinhamento (1, 2), não é mais problema faz tempo para os instaladores das distribuições maiores, que usam os serviços da libparted, que faz tudo certinho nos bastidores.

Entretanto, o uso da opção de montagem discard (SSDs) continua não recomendada para o XFS, como debatido mais uma vez na lista de discussão: Poor performance using discard.

Ahh, um aviso para usuários do Arch Linux: o cfdisk, o particionador usado pelo seu instalador, não alinha as partições corretamente e causará, portanto, péssimo desempenho com qualquer sistema de arquivos ao usar SSDs e HDDs com setores físicos de 4 KiB. O time do Arch deveria colocar alguma outra coisa no lugar — só não sei o quê. As duas outras ferramentas para o trabalho (fdisk e parted) alinham corretamente usando a topologia do disco, mas existe um probleminha: são ferramentas de linha de comando. O princípio KISS ficaria um pouco comprometido...

É necessária uma correção a respeito do que venho escrevendo sobre SSDs. Vários (todos?) SSDs informam o tamanho do setor lógico/físico como 512B/512B (incluindo meu OCZ Agility 3). Assim, o mke2fs e o mkfs.xfs criam sistemas de arquivos com setores (minimum unit size) de 512 bytes neles. Curioso é que internamente as células de memória flash NAND geralmente são organizadas em páginas de 4 KiB ou mais (8 KiB, 16 KiB, etc). Por que o firmware não informa esse tamanho como setor físico eu não sei.

Comentários