Ou você tem sorte de nunca ter corrompido dados ou tem azar de nunca ter notado que seus dados estavam corrompidos.
Quando você executa uma ação que deve gravar em um disco, a maioria dos sistemas operacionais coloca a operação de gravação em uma fila. De tempos em tempos, eles limpam a fila. (Estou chamando de fila aqui, mas, na verdade, as operações podem ser executadas fora de ordem, os sistemas operacionais fazem isso quando é mais rápido e dão o mesmo resultado final.) Isso pode tornar as operações de gravação muito mais rápidas, porque o sistema tenta executá-los quando não tem nada melhor para fazer e porque pode agrupá-los de maneira inteligente.
Se você desconectar o dispositivo antes que tudo tenha sido escrito, poderá perder os dados mais recentes. Pior ainda, se o sistema operacional estiver executando operações fora de ordem, você poderá colocar seu dispositivo em um estado inconsistente e perder mais do que os dados mais recentes.
Alguns sistemas operacionais entram em um modo mais conservador (mas mais lento) para dispositivos removíveis, para reduzir os riscos associados à desconexão do dispositivo antes que ele seja desmontado.
ADICIONADO :
Fazer operações fora de ordem às vezes não é apenas uma questão de velocidade. Mídia flash barata (que não faz a realocação do setor no nível do hardware) tem uma limitação no número de vezes que você pode escrever em qualquer setor. Se você gravar ingenuamente todas as alterações à medida que elas acontecerem, isso poderá matar os setores que contêm a tabela de alocação de arquivos em um sistema de arquivos (V) FAT (o caso mais comum para unidades removíveis) ou o diário em um sistema de arquivos moderno típico. (Veja, por exemplo, esta discussão sync
na lista de discussão do Linux Kernel .) Aqui, não atualizar o FAT ou o diário toda vez que um arquivo é gravado não é apenas um grande ganho de desempenho, mas também é bom para a vida útil do hardware.
Até recentemente, o Linux só dava uma escolha entre sync
(escreva todas as alterações à medida que elas acontecem) e async
(escreva sempre que for conveniente). Versões recentes introduzem a flush
opção para sistemas de arquivos FAT, que estão no meio (limpe todas as gravações atrasadas assim que o disco ficar inativo); está ativado por padrão no Ubuntu 10.04.
Em uma observação diferente, desmontar uma unidade removível garante que nenhum aplicativo tenha um arquivo aberto. Se você não desmontar antes de desconectar, não notará se possui dados não salvos até que seja tarde demais. A desmontagem enquanto um arquivo está aberto também aumenta a chance de corrupção, tanto no nível do sistema de arquivos (o sistema operacional pode ter colocado em fila algumas operações até o fechamento do arquivo) quanto no nível do aplicativo (por exemplo, se o aplicativo colocar um arquivo de bloqueio, ele ganhará ' ser removido).