
Quando meu sistema inicializa, enquanto investiga o disco rígido externo conectado por USB, recebo a mensagem Assuming drive cache: write through
na saída dmesg, marcada com o nome do dispositivo da unidade externa.
Como uso esta unidade para armazenar backups, prefiroo sistema não faça suposições sobre as características da unidade.Estou disposto a negociar desempenho de gravaçãopara conhecimento seguro de que quando algo foi gravado em um sistema de arquivos na unidade em questão,realmente foi comprometido com armazenamento permanentee não está em um cache em algum lugar (de preferência nem mesmo na própria unidade, pois uma falha de energia fará com que o computador e a unidade percam energia imediatamente).
Um fator possivelmente complicador é que a unidade contém uma única partição, que é criptografada por LUKS. O sistema de arquivos existe apenas dentro desse contêiner LUKS, assim:
+- physical drive ------------------------+
| |
| +- partition -----------------------+ |
| | | |
| | +- LUKS encryption -----------+ | |
| | | | | |
| | | +- file system ---------+ | | |
| | | | | | | |
| | | | actual data | | | |
| | | | | | | |
| | | +-----------------------+ | | |
| | | | | |
| | +-----------------------------+ | |
| | | |
| +-----------------------------------+ |
| |
+-----------------------------------------+
Daí a minha pergunta: como posso ter certeza de que todas as gravações serão confirmadas no armazenamento físico antes de serem relatadas ao aplicativo do espaço do usuário como concluídas?
Responder1
Existem duas partes constituintes aqui: o cache de gravação do disco e o cache do sistema de arquivos.
O cache de gravação em disco pode ser desabilitado usando hdparm -W 0 [device]
. Você pode desabilitar o cache de gravação do sistema de arquivos montando/remontando-o com a sync
opção. Observe que essas alterações degradarão bastante o desempenho.