Diferença entre “blockdev --flushbufs” e “sync” no Linux?

5

Existe uma diferença na prática entre a execução de blockdev --flushbufs e sync(1) no Linux? (além de blockdev de liberação para um dispositivo específico e sync sendo de todo o sistema).

sync(1) manpage diz que libera os buffers sistema de arquivos (somente?). Se a E / S em uma unidade (com, digamos, dd ) sem passar por uma camada de sistema de arquivos, será sync realmente ineficaz?

Quando devo usar um em vez do outro?

    
por Totor 02.11.2013 / 16:31

1 resposta

1

If do I/O to a drive (with say, dd) without going through a file-system layer, is sync really inefficient?

Isso levanta a questão de que escrever em um nó de dispositivo ignora "a camada do sistema de arquivos". Eu suponho que, em certo sentido, obviamente, faz ...

De qualquer forma, isso não importa. Se o que você está fazendo não envolve o armazenamento em cache, executar sync (ou algum equivalente) não seria "ineficiente": se não há nada para sincronizar, é uma chamada trivial.

When should one use one instead of the other?

Eu acho que quando você deseja segmentar uma partição específica, blockdev faz sentido. Não consigo ver como isso teria uma vantagem específica sobre sync (e vice-versa).

    
por 02.11.2013 / 16:47