Qual é a diferença entre as opções direta e fsync do dd?

3

Eu gostaria de copiar uma imagem para um pen drive USB. Como gostaria de obter velocidades "reais" e não querer esperar que o dispositivo sincronize depois de copiar a imagem, gostaria de saber quais opções usar para isso.

niklasfi
fonte

Respostas:

2

Lendo através do Código fonte mostra que você também deve estar perguntando sobre o nocache opção também. o direct opção deve obter o que você quer, mas também depende de qual versão do dd você está brincando com. Fazendo uma grande cópia de um sistema Ubuntu 11,04 mostrou-me ainda mais lento (= mais próximo da realidade?) Vezes com o dsync opção usa E / S sincronizada para dados, o que provavelmente perde a vantagem de agregação que os controladores de disco modernos nos fornecem. Para saber "exatamente" o que está acontecendo, você vai ter que cavar o código fonte para o kernel específico que está rodando, mas mesmo assim você está à mercê da placa de interface na unidade, que faz o seu próprio buffering.

Andrew Beals
fonte
Você não está à mercê da unidade; quando o fsync () ou gravação direta () conclui, os dados estão no prato.
psusi
psusi não, alguns discos mentem
behrooz
3

A opção fsync irá liberar os dados no final da cópia. A opção dsync irá liberar os dados após cada bloco. A opção direta terá resultados semelhantes aos do dsync, apenas sem poluir o cache do sistema de arquivos com os dados. Isso é bom para armazenar em cache o restante do sistema e economiza alguma sobrecarga da CPU.

O dsync ou o direto fornecerão uma taxa de transferência menor, mas isso pode ser compensado em grande parte usando um tamanho de bloco grande, como 1 MB ou mais.

psusi
fonte
O que acontece quando oflag = direct torna as gravações mais rápidas? Eu tenho uma pergunta extensa sobre apenas isso em serverfault.com/questions/751752/…
Michael Graff