J'ai copié un fichier volumineux sur un disque USB monté sur un système Linux asynchrone. Cela retourne à une invite de commande assez rapidement, mais lorsque je tape sync
, bien sûr, tout doit aller sur le disque, ce qui prend beaucoup de temps.
Je comprends que ça va être lent, mais y a-t-il un endroit où je peux regarder un compteur baisser à zéro? Regarder buffers
dans top
n'aide pas.
linux
filesystems
io
async
mattdm
la source
la source
Réponses:
En regardant, vous
/proc/meminfo
verrez que leDirty
nombre diminue avec le temps, à mesure que toutes les données sont envoyées. une partie peut également se répandreWriteback
. Ce sera un résumé de tous les périphériques, mais dans les cas où un périphérique sur le système est beaucoup plus lent que les autres, vous vous retrouverez généralement là où tout le contenu de cette file d'attente est associé. Vous constaterez probablement que leDirty
nombre est grand lorsque vous commencez et sesync
termine à peu près au même moment où il approche 0. Essayez ceci pour obtenir un affichage interactif:Avec les disques classiques, je peux normalement les ignorer
Writeback
, mais je ne suis pas sûr qu’ils soient impliqués plus souvent dans le chemin de transfert USB. Si elle ne fait que rebondir sans tendance claire, vous pouvez probablement regarder leDirty
nombre.la source
Vous pouvez consulter le
/sys/block/<device>/stat
fichier du périphérique approprié pendant la synchronisation. La 9 e colonne indiquera le nombre de demandes en vol sur l'appareil, qui devrait descendre à zéro lorsque la synchronisation est effectuée.Je ne connais pas un moyen de traduire cela en un nombre d'octets, mais cela devrait vous donner une idée approximative de combien de "choses" sont encore en attente.
Consultez le fichier stat.txt dans la documentation du noyau pour un peu plus d’informations. (Il y a également un
inflight
fichier dans ce répertoire sur mon système qui pourrait contenir des requêtes de lecture et d'écriture en vol, mais je ne trouve pas de documentation pour cela.)la source
watch -t -n1 'awk "{ print \$9 }" /sys/block/sdd/stat'
sync
après. Il va à 0, mais seulement à la toute fin. Cela rend l’autre réponse plus utile pour observer les progrès avec impatience.du
pour calculer les données réelles synchronisées sur le lecteur.En utilisant la réponse de Greg, vous pouvez simplement vous
sync
lancer en arrière-plan tout en affichant l'état du bloc Sale en mémoire.Pour ce faire, exécutez simplement cette commande:
Cela appellera
sync
en arrière-plan lors de l'exécutionwatch
à l'avant. Lorsque lasync
commande sera terminée (environ lorsque la taille du bloc sale aura atteint 0), vous obtiendrez une sortie ressemblant à ceci:Cela signifie que la commande est terminée et que vous pouvez supprimer la
watch
commande avec Ctrl+ C.la source