Como realmente desfragmentar um sistema de arquivos JFFS2

2

Eu pesquisei em toda a Internet, inclusive em vários fóruns do StackExchange, por um método viável para desfragmentar um sistema de arquivos JFFS2 e não consigo encontrar uma resposta.

O sistema em questão tem uma parte flash NAND de 256MB. Está sendo acessado como um dispositivo MTD que é dividido em três partições. A terceira partição é onde o sistema de arquivos raiz está sendo armazenado como um sistema de arquivos JFFS2. O problema é que as gravações no sistema de arquivos raiz têm desempenho não determinístico devido aos problemas comuns do coletor de lixo JFFS2 decidir executar nos piores momentos possíveis. Quando isso acontece, o produto é interrompido por algum tempo desconhecido enquanto o coletor de lixo (e o pdflush) é executado.

A alteração do sistema de arquivos não é uma opção. A solução precisa ser algo que possa ser executado fora do horário comercial e que, após ter sido executado, resulte em um desempenho de gravação mais previsível. No momento, estou trabalhando em um programa que tentará forçar a execução do coletor de lixo e, em seguida, excluir o arquivo com a esperança de que todos os nós liberados fiquem mais prontamente disponíveis e tornem as gravações melhores.

Pensamentos?

    
por Julie in Austin 22.09.2012 / 03:18

1 resposta

1

Tente implementar seu próprio algoritmo de coleta de lixo e tente executá-lo no tempo de montagem e, quando o espaço que falta para executar, inicie novamente um thread de coleta de lixo separadamente.

Será muito mais fácil escrever seus arquivos como fragmentos para que, quando você apagar um bloco ou página com metade de um arquivo, ainda possa gravá-lo em algum lugar e obter a página para uso futuro.

A parte complicada é como abrir um arquivo com vários fragmentos em todo o sistema de arquivos.

    
por 28.09.2012 / 09:09

Tags