Copié un archivo grande en un disco USB montado en un sistema Linux con asíncrono. Esto vuelve a un símbolo del sistema relativamente rápido, pero cuando escribo sync
, por supuesto, todo tiene que ir al disco, y eso lleva mucho tiempo.
Entiendo que va a ser lento, pero ¿hay algún lugar donde pueda ver cómo un contador baja a cero? Viendo buffers
en top
no ayuda.
linux
filesystems
io
async
mattdm
fuente
fuente
Respuestas:
Al mirar,
/proc/meminfo
se mostrará que elDirty
número se reduce con el tiempo a medida que todos los datos se ponen en cola; algunos de ellos pueden derramarseWriteback
también. Eso será un resumen de todos los dispositivos, pero en los casos en que un dispositivo en el sistema es mucho más lento que el resto, generalmente terminará donde todo en esa cola está relacionado con él. Probablemente encontrará elDirty
número grande cuando comience ysync
finalice aproximadamente al mismo tiempo que se acerca a 0. Pruebe esto para obtener una pantalla interactiva:Con los discos normales
Writeback
, normalmente puedo ignorar , pero no estoy seguro de si está involucrado con más frecuencia en la ruta de transferencia USB. Si solo rebota hacia arriba y hacia abajo sin una tendencia clara, probablemente solo pueda mirar elDirty
número.fuente
Puedes mirar el
/sys/block/<device>/stat
archivo para el dispositivo apropiado mientras estás sincronizando. La 9 ª columna indicará el número de solicitudes de a bordo en el dispositivo, que debe bajar a cero cuando se realiza la sincronización.No conozco una manera de traducir eso a una cantidad de bytes, pero debería darle una idea aproximada de cuánto "material" aún está pendiente.
Consulte el archivo stat.txt en la documentación del kernel para obtener un poco más de información. (También hay un
inflight
archivo en ese directorio en mi sistema que parece que podría contener solicitudes de lectura y escritura en vuelo, pero no puedo encontrar documentos para eso).fuente
watch -t -n1 'awk "{ print \$9 }" /sys/block/sdd/stat'
sync
después. Va a 0, pero solo al final. Eso hace que la otra respuesta sea más útil para observar el progreso con impaciencia.du
para calcular los datos reales que se sincronizan en la unidad.Al usar la respuesta de Greg, simplemente puede haber
sync
corrido en segundo plano mientras muestra el estado del bloque sucio en la memoria.Para lograr esto, simplemente ejecute este comando:
Esto llamará
sync
en segundo plano mientras se ejecutawatch
en el frente. Cuando elsync
comando haya terminado (alrededor de cuando el tamaño del bloque sucio ha alcanzado 0), tendrá una salida similar a esta:Esto significa que el comando ha finalizado y puede matar el
watch
comando con Ctrl+ C.fuente