Por que os números não correspondem
O aviso "pelo menos 17 blocos de apagamento" conta os blocos necessários ao próprio sistema de arquivos UBIFS. Desses 17 blocos de apagamento, 14 são a sobrecarga de UBIFS e 3 são utilizáveis no espaço do sistema de arquivos. A camada UBI subjacente abaixo também usa 5 blocos de exclusão de sobrecarga.
Obtendo mais espaço
Não há como uma única partição UBI com um único sistema de arquivos UBIFS usar menos sobrecarga.
No entanto, se você tiver mais de uma partição UBI no mesmo dispositivo MTD, recomendo mesclá-las. Não só liberará 5 blocos de apagamento, mas também melhorará o nivelamento de desgaste e o manuseio de blocos defeituosos, pois o UBI terá mais opções para mapear blocos de apagamento físico para blocos de apagamentos lógicos, conforme necessário.
(Ignorando a sobrecarga, imagine duas partições de dois blocos cada, uma das quais é ruim. Agora uma partição só tem um bloco sobrando, e é impossível usar o nivelamento. Mas se você mesclar os dois, então você tem três bons blocos deixados para compartilhar entre os dois sistemas de arquivos conforme necessário.)
Para mesclar duas partições UBI adjacentes:
- Atualize sua tabela de partições MTD, substituindo as duas partições por uma maior.
- Execute
ubiformat
nessa única partição grande. - Execute
ubimkvol
duas vezes, fornecendo nomes de partições apropriados e especificando os tamanhos manualmente com-s
ou-S
.
Uma contabilização da sobrecarga UBI + UBIFS
Primeiro, a camada UBI leva 5 blocos de exclusão de sobrecarga:
- 2 para a tabela de volumes
- 1 reservado para o algoritmo de nivelamento de desgaste
- 1 reservado para o recurso "mudança de LEB atômica", que permite atualizações in-loco confiáveis de um bloco de apagamento lógico
- 1 (idealmente mais, como você mencionou) reservado para o manuseio de bloqueios físicos incorretos.
Em seguida, a camada UBIFS tem um número mínimo de blocos de apagamento para os metadados do sistema de arquivos:
- 1 para o superbloco do sistema de arquivos, que identifica o volume como um UBIFS válido e armazena os parâmetros do sistema de arquivos
- 2 para a área do nó mestre (cópias redundantes), que são as raízes da árvore usada para pesquisas no sistema de arquivos
- 2 ou mais para a área de registro (que conta para o espaço utilizável)
- 2 para a árvore de propriedades do LEB, que controla como cada bloco de apagamento lógico é usado
- 1 ou mais para a área órfã (para rastrear arquivos excluídos, para que eles sejam limpos corretamente após uma desmontagem não limpa)
- 8 reservados para metadados do sistema de arquivos (coleta de lixo, exclusões, brotos, índice)
- 1 ou mais para dados confirmados que não estão no log (espaço utilizável).
Referências
Para a sobrecarga de UBI, o site linux-mtd tem uma descrição direta .
Para a sobrecarga de UBIFS, eu tive que fazer um pouco mais de escavação. O código-fonte do mtd-utils conta o número mínimo absoluto de blocos de apagamento e menciona para que serve cada bloco. Para entender, o whitepaper da UBIFS é útil.