Alterar o local do diário padrão

1

Estou executando o ext4 em uma variante do Ubuntu. Em um esforço para conservar gravações em disco em um ssd limitado, estou gravando dados em um cartão microsd montado. Alguém pode explicar como o journaling funcionaria nessa situação?

O meu sistema de arquivos local manteria um diário ao gravar em um microsd de formato indefinido (fat32, ntfs, ext4)? Os arquivos de diário existiriam no microsd ou no meu ssd local? Você pode alterar dinamicamente onde um diário é armazenado? Em caso afirmativo, como? Existe uma maneira de alterá-lo no momento da montagem?

    
por Shenanigans 08.08.2016 / 16:13

1 resposta

1

Acontece que a revista é, na verdade, um dos padrões de escrita mais amigáveis ao flash que existe. É apenas uma gravação seqüencial contínua. O problema com alguns dispositivos flash é que eles têm um FTL muito barato, ou Camada de Tradução Flash. Esse é o sistema que faz leituras e gravações em disco em um determinado LBA (endereço de bloco lógico ou número de setor de HDD) e o mapeia para um local específico em um determinado chip flash dentro do dispositivo flash.

A maioria dos SSDs tem um FTL decente o suficiente para que a revista não seja um problema. O problema vem com dispositivos eMMC em telefones, ou cartões microsd, em que os fabricantes se preocupam em depilar até o último milésimo de custo de seus materiais. (Se você está fazendo milhões de telefones ou cartões SD, poupar frações de um centavo faz uma enorme diferença no seu lucro.) Portanto, os FTL realmente simples têm limitações reais de quantas partes do disco você pode gravar de uma só vez, e os dispositivos flash realmente baratos podem estar usando os chips flash baratos para começar, que é onde você realmente se mete em problemas.

Como um aparte, acontece que eu estou orientando um estudante de pós-graduação na CMU que está trabalhando em um "SMR friendly journalling para ext4", que também será ideal para o ext4. Isso suprime o write-back final das gravações aleatórias de 4k para atualizar os bitmaps de alocação e os blocos de tabela de inode e usa a cópia do bloco de metadados no diário como a cópia autoritativa. Isso realmente só vai fazer a diferença para o que chamo de "dispositivos flash baratos" - embora isso faça uma enorme diferença.

Em resposta à sua pergunta, o Linux não usará o sdcard para qualquer coisa automaticamente. Você pode montá-lo em um diretório específico, e nesse caso, as gravações nesse diretório irão para o sdcard, usando qualquer sistema de arquivos originalmente no sdcard (a menos que você o reformate). Por padrão, a maioria dos sdcards atualmente tem FAT32 ou NTFS, e a distribuição provavelmente lidou com isso automaticamente. Nesse caso, ele não estará usando o journalling, e não afetará como o sistema grava no resto do sistema.

É possível usar um dispositivo de bloco externo, incluindo um sdcard, como um diário externo. Se você fizer isso, você não poderá usar o sdcard para mais nada, e o sdcard deve estar presente após uma reinicialização impura para ajudar a recuperar seu sistema de arquivos primário. Afinal de contas, esse é o objetivo do diário: minimizar a corrupção do sistema de arquivos e a perda de dados após uma falha ou falta de energia. Mas é difícil de configurar e, dependendo do seu SSD, pode não fazer muita diferença. Eu não sei o que você quer dizer com "SSD limitado", mas se é um SSD em tudo (em vez de um eMMC ou micro sdcard) provavelmente tem uma melhor FTL do que o micro sdcard. Claro, o diário escreve padrões realmente fáceis até mesmo para os mais ruins dos FTL ruins, então não é insano usar um cartão micro como um jornal. Mas se o FTL do SSD é de todo competente, pode não ajudar o SSD. E a criação de um diário externo é bem complicada e não é amigável, já que é um tópico avançado que geralmente só faz sentido em configurações muito especializadas.

Em resposta à sua pergunta, você pode alterar onde o diário está armazenado, mas isso exige fazer alterações no sistema de arquivos para que ele saiba onde encontrar o dispositivo de diário externo. Portanto, é muito mais complicado do que apenas algumas opções de montagem que você pode alterar no momento da montagem. Isso porque a parte complicada é certificar-se de que você pode encontrar o dispositivo de diário externo após uma falha ou queda de energia, durante a seqüência de inicialização, para que você possa recuperar o sistema de arquivos. Dependendo da sua distribuição, e se ela usa um ramdisk inicial, e se precisa carregar módulos para suportar o leitor de micro sdcard, pode ser necessário fazer alterações em como o sistema é inicializado.

Além disso, lembre-se de que, se você soltar o dispositivo e o micro sdcard sair voando da máquina, com um diário ausente, o dispositivo colapsará imediatamente e você precisará localizar e substituir o sdcard para recuperá-lo o sistema depois. Então, eu realmente não recomendaria usar um dispositivo de armazenamento removível externo para um diário, a menos que você realmente, realmente, realmente saiba o que está fazendo e esteja ciente de todas as conseqüências.

É como andar por aí com uma garrafa de vidro cheia de nitroglicerina. Claro, isso pode ser feito. Pode até haver razões pelas quais os especialistas precisariam fazer isso. Mas pode não ser algo que eu recomendaria a um recém-chegado a um laboratório de química ...

    
por 09.08.2016 / 14:59