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 buffersen topno ayuda.
linux
filesystems
io
async
mattdm
fuente
fuente

Respuestas:
Al mirar,
/proc/meminfose mostrará que elDirtynúmero se reduce con el tiempo a medida que todos los datos se ponen en cola; algunos de ellos pueden derramarseWritebacktambié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á elDirtynúmero grande cuando comience ysyncfinalice 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 elDirtynúmero.fuente
Puedes mirar el
/sys/block/<device>/statarchivo 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
inflightarchivo 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'syncdespués. Va a 0, pero solo al final. Eso hace que la otra respuesta sea más útil para observar el progreso con impaciencia.dupara calcular los datos reales que se sincronizan en la unidad.Al usar la respuesta de Greg, simplemente puede haber
synccorrido en segundo plano mientras muestra el estado del bloque sucio en la memoria.Para lograr esto, simplemente ejecute este comando:
Esto llamará
syncen segundo plano mientras se ejecutawatchen el frente. Cuando elsynccomando 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
watchcomando con Ctrl+ C.fuente