Gravar no disco usando 'pv' parece ser rápido no início e lento no final

0

Eu estava escrevendo uma imagem do kubuntu no meu pendrive usando este comando

pv /home/manuel/Downloads/torrents/kubuntu-16.10-desktop-amd64.iso > /dev/sdb

No entanto, a barra de progresso de saída de pv estava parcialmente preenchida desde o início. Por isso, parecia que a transmissão teria começado com uma velocidade incrível e desacelerado substancialmente.

1,49GiB 0:03:03 [8,31MiB/s] [===============// //===============>] 100%

Isso torna o uso do comando pv inútil.

Como posso desativar essa funcionalidade de cache que parece ter sido ativada?

    
por Multisync 08.04.2017 / 11:09

1 resposta

3

Encontrei sua postagem enquanto investigava um problema semelhante ao tentar gravar uma imagem em um cartão SD (via leitor / gravador USB). Usando pv, ele mostrará 100% quase imediatamente, mas levará alguns minutos depois para ser concluído.

Eu encontrei uma solução para o meu problema usando dd, pv e pipes, e definindo o write dd para o modo direto. Isso também teve o efeito de melhorar bastante a velocidade de gravação. Eu não sei se há algum lado negativo de usar este método (eu li a imagem de volta e executei uma soma de verificação - e tudo parece ok).

Meu exemplo é usar uma imagem de raspbian (2017-09-07-raspbian-stretch-lite.img), que tem 1854590976 bytes (1.8GB) de tamanho. Mostrei alguns outros métodos e você pode ver as diferenças de tempo.

Então, usando dd | pv | dd com o modo direto, levou apenas 2 minutos e 57 segundos:

dd if=2017-09-07-raspbian-stretch-lite.img ibs=1M status=none | pv -s 1854590976 | dd of=/dev/sdX obs=1M oflag=direct status=none

(a configuração do status para nenhum interrompe o funcionamento da exibição pv)

Usar o pv por si só mostra 100% imediatamente, mas levou 8 minutos e 28 segundos para ser concluído:

pv 2017-09-07-raspbian-stretch-lite.img > /dev/sdX

Usando dd por si só, sem qualquer visualização de progresso, demorou 8 minutos e 15 segundos:

dd if=2017-09-07-raspbian-stretch-lite.img of=/dev/sdX bs=1M

Usando o mesmo dd acima, mas adicionando oflag = direct faz com que seja 2 minutos 54:

dd if=2017-09-07-raspbian-stretch-lite.img of=/dev/sdX bs=1M oflag=direct

Eu tentei várias combinações diferentes, que são muito mais lentas (algumas demoram até 12 minutos!) ou mostram 100% imediatamente.

Uma ressalva de usar pv desta forma é que você precisa descobrir o tamanho da imagem primeiro e especificá-la com a opção -s. Se você está escrevendo coisas como eu, é fácil determinar o tamanho do arquivo ao mesmo tempo.

Espero que ajude alguém.

    
por Nick 03.10.2017 / 17:10