web-dev-qa-db-fra.com

La fonction DD semble geler lorsqu'il est fait

J'essaie de copier un ISO sur un bâton USB avec cette commande:

Sudo dd bs=4M if=lubuntu-17.04-desktop-AMD64.iso of=/dev/sdc status=progress 

Ce qui est assez simple. L'ISO est de 912m de grande taille. Pourquoi le texte de sortie gèle-t-il ici au lieu de mettre fin au programme?

956301312 bytes (956 MB, 912 MiB) copied, 11.216 s, 85.3 MB/s

Je ne peux même pas arrêter le programme de courir avec ctr-c.

11
Natjo

Le comportement que vous voyez est uniquement dd synchronisation des données sur disque après l'opération. Afin d'optimiser IO Operations, Linux lit souvent des données dans des morceaux plus importants que les écritures requises (lecture-avance) et des écritures de retard afin de pouvoir être combinées (cache sale). À la fin de l'opération, Soit dd synchronise le fichier sur disque ou le noyau le fait implicitement et le processus reste actif jusqu'à la fin des écritures.

S'il n'y a pas d'autre autre fichier IO Opérations sur la machine, vous devriez être capable d'estimer la quantité de données à écrire en regardant la valeur "sale:" dans /proc/meminfo - Il s'agit de la quantité totale de données en attente d'être écrite sur le disque.

La quantité de données que le système peut laisser une mémoire non écrite à une heure peut être contrôlée avec les boutons de syntonisation SYSCTL suivants. Par défaut, seuls les ratios sont utilisés. Vous pouvez définir la valeur en pourcentage (ratio) ou octets.

vm.dirty_background_ratio
vm.dirty_ratio
vm.dirty_background_bytes
vm.dirty_bytes

Vous trouverez la documentation officielle pour ces paramètres ici:

https://www.kernel.org/doc/documentation/sysctl/vm.txt

16
Thomas Guyot-Sionnest