quarta-feira, 2 de dezembro de 2015

XFSv5: nota para as distribuições (II)

Mais uma variável na salada de opções de criação do sistema de arquivos, causadora de incompatibilidade. Um ponto de corte preciso, como era planejado pelos desenvolvedores do XFS, acabou não saindo exatamente como previsto. Repete-se parte da sina do EXT4.

Durante muito tempo, o XFS não armazenou na estrutura dos diretórios o tipo de cada entrada para readdir() retornar d_type de acordo com cada uma (diretório, arquivo regular, link simbólico, etc), que permite aos programas não precisarem recorrer a stat(). É uma otimização que faz, por exemplo, find -type <tipo> ser muito mais ágil. Trata-se de recurso mandatório no formato V5 (-n ftype=1 é implícito com -m crc=1). O problema, porém, fica por conta do formato V4. Nele, ftype passou a ser suportado a partir do kernel 3.13.

Depois da mudança de padrão para -m crc=1,finobt=1 (V5), que aconteceu no mkfs.xfs 3.2.3, -n ftype=1 passou a ser recentemente padrão também em sistemas V4 no mkfs.xfs 4.2.0! Daí complicou tudo, pois um volume criado com -m crc=0 (finobt=0 não precisa ser especificado nesse caso, pois depende de crc=1) não será montado num kernel inferior ao 3.13.

Resumo das opções necessárias de acordo com o kernel onde o volume será montado, considerando mkfs.xfs 3.2.1 ou superior. Pode ser redundante especificá-las dependendo da versão da suíte xfsprogs em uso, mas deixa claro quais recursos precisam ser desabilitados:

Kernel mkfs.xfs
≥ 2.6.23 e ≤ 3.12 -m crc=0 -n ftype=0
3.13 e 3.14 -m crc=0 -n ftype=1
3.15 -m crc=1,finobt=0
≥ 3.16 -m crc=1,finobt=1

No mínimo 2.6.23 por causa de -l lazy-count=1, habilitado desde o mkfs.xfs 3.1.0. Eu acho melhor adotar para qualquer kernel inferior ao 3.15 -m crc=0 -n ftype=0, que garante compatibilidade com uma ampla gama de versões anteriores.

Para colocar mais entropia na confusão, o GRUB, até a versão 2.02-beta2, não suporta XFSv4 com -n ftype=1 (a partir da 2.02-beta3, quando suporte ao XFSv5 foi adicionado, passou a funcionar).

Teria sido menos problemático deixar o formato V4 em paz com -n ftype=0 por padrão no mkfs.xfs. Quem quisesse ftype que habilitasse por conta no V4 ou migrasse para o V5.

[Atualização - 04/12/2015] Para o 3.13 e 3.14, adicionar -n ftype=1 na tabela, afinal é suportado.
[Atualização - 23/07/2016] GRUB 2.02-beta3+ suporta XFSv4 com -n ftype=1.
[Atualização - 26/07/2016] Ver XFSv5: nota para as distribuições (III).

Nenhum comentário:

Postar um comentário