Cache de gravação do Linux usb-drive

3

Existe alguma maneira de alterar a maneira como o kernel do Linux lida com o armazenamento externo e o cache de armazenamento externo? Toda vez que eu copio algo para ele, o processo de cópia visto do espaço do usuário parece muito rápido. Já vi esse comportamento várias vezes ao copiar arquivos, mas notei que isso também acontece quando copio dados com dd diretamente para a unidade. Então nada é montado aqui!

Copiando uma imagem .iso:

$ sudo dd if=/mnt/mountpoint/Fedora-Live-Workstation-x86_64-23-10.iso of=/dev/sdc
2869248+0 Datensätze ein
2869248+0 Datensätze aus
1469054976 Bytes (1,5 GB) kopiert, 13,8922 s, 106 MB/s
$ sync

O primeiro comando leva 13s, mas o segundo estágio de sincronização leva 90 segundos ou mais.

Por que tantos dados (mais de 1,3 GB) estão armazenados em cache? Existe alguma possibilidade de evitar esse comportamento?

EDITAR:

Se isso for relevante para você. Eu estou usando um kernel padrão genérico do Ubuntu 15.10 4.2.0-34 e é um drive USB 2.0.

    
por flammi88 08.04.2016 / 01:26

1 resposta

3

sudo dd bs=10M oflag=direct conv=fsync if=yourfile of=/dev/sdc

oflag=direct ignora o cache do sistema operacional e conv=fsync certifica-se de que tudo está escrito antes de sair.

Como os dados são gravados diretamente no disco, você precisa gravar muitos dados de uma vez para evitar perder tempo escrevendo byte por byte, que é o comportamento padrão. Você pode controlar esse parâmetro usando bs=yoursize .

Se a sua versão do dd for recente o suficiente, você pode adicionar status=progress para obter uma barra de progresso sofisticada.

    
por 11.05.2017 / 15:24