Às vezes, a sincronização fica presa com o dd

0

Às vezes, quando uso dd , em seguida, sync ou use dd com conv=fsync , o processo de sincronização fica preso, mas às vezes não, com exatamente os mesmos destinos de entrada e saída e configuração.

dd if=2016-03-18-raspbian-jessie-lite.img of=/dev/sdg conv=fsyn
sync # freeze here

ou

dd if=2016-03-18-raspbian-jessie-lite.img of=/dev/sdg conv=fsync

Eu experimentei esse comportamento inconsistente em diferentes distros como Ubuntu, Linux Mint (há muito tempo atrás) e agora no Gentoo e em 4 diferentes máquinas diferentes.

    
por atevm 04.05.2016 / 13:56

1 resposta

3

Eu me encontro frequentemente em uma situação quando pv image_file | dd of=/dev/slow_usb_stick mostra que as primeiras centenas de megabytes voam (para o buffer), então a transferência desacelera muito. Quando dd sai, há buffer inteiro para liberar. Eu então sync para remover o bastão e tenho que esperar mais alguns minutos porque o buffer é grande e o dispositivo está lento.

Então talvez seja sobre paciência. Suponho que o tamanho do buffer depende da memória disponível. Às vezes, o buffer pode ser muito grande e sync "fica preso", às vezes não. Isso é um palpite.

Outro fenômeno que observei: o sync libera todos os buffers (ou seja, para todos os dispositivos). Algumas vezes eu queria remover o pendrive USB (depois de dd ), invoquei sync para fazer isso, mas ao mesmo tempo meu HDD estava ocupado com operações massivas de gravação. Os dados do HDD continuavam chegando muito rápido para que o buffer ficasse vazio. Congelado sync não teve nada a ver com dd . Por esse motivo, desejo que sync possa segmentar um dispositivo específico e sair, independentemente de todos os outros dispositivos.

Editar:

Meu desejo se tornou realidade. No Ubuntu 16.04.2 LTS eu tenho sync (GNU coreutils) 8.25 que pode direcionar sistemas de arquivos específicos. Viva!

    
por 06.05.2016 / 22:08