Quando desmonto um cartão flash SD em um leitor de cartão USB e puxo o cartão, o sistema de arquivos permanece "sujo".
Sistema:
- RPi ou xubuntu 16.04.3
- O leitor de cartão é um chinês super barato. Eu tentei alguns diferentes
- Eu tentei um monte de cartões SD diferentes.
Como reproduzir:
- conectar leitor de cartão
- insira o cartão SD com vfat na primeira partição
- aguarde o sistema detectar o cartão SD
- aguarde o sistema montar automaticamente o sistema de arquivos ou monte-o manualmente
- atualizar um arquivo aleatório, eu faço:
date >> /media/mogul/2E3E-AE54/d
- desmontar:
sudo umount /dev/sdd1
- (espaço reservado, não faça nada aqui, ainda)
- puxe o cartão SD do leitor de cartão
Agora repita a partir do passo 2. Fique de olho no seu dmesg, ele dirá:
[357207.805594] FAT-fs (sdd1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
(suporte do linux mais recente dmesg -w
)
Agora, se eu adicionar uma ação adicional após oumount
- leia um byte aleatório no cartão SD, como:
dd if=/dev/sdd1 skip=1000000 ibs=1 count=1 of=/dev/null
o sistema de arquivos parece sobreviver.
Isso parece um pouco hackista para mim, estou perdendo algo fundamental?
Você tem soluções mais elegantes?
Prefiro não usar eject
, mas apenas umount, since
ejetar desliga o leitor de cartão também; o sistema não detectará um novo cartão SD antes de eu reconectar o leitor de cartão.
Como sua etapa 7, tente o seguinte:
ou se você estiver executando como root, apenas
Isso sinaliza ao kernel que o dispositivo
/dev/sdd
está prestes a ser removido e deve acionar uma liberação controlada de todos os buffers de gravação restantes no cartão, para evitar a corrupção do sistema de arquivos.Isso pode fazer com que o leitor desligue de maneira semelhante ao
eject
comando; se isso acontecer, uma maneira alternativa seria apenas liberar os buffers sem a implicação de uma remoção iminente do dispositivo. Isso pode ser obtido com oblockdev
comando:Se isso não ajudar, receio que o leitor de cartão não suporte a desconexão a quente do cartão. Isso é possível com leitores baratos. A única maneira segura de usar esse leitor seria primeiro desconectar o leitor da porta USB e só então remover o cartão do leitor.
Emitir o comando
sync
na etapa 7 gravará o cache do buffer no cartão SD e resultará em um sistema de arquivos limpo.