¿Cuál es la diferencia entre las opciones directa y fsync de dd?

¿Cuál es la diferencia entre las opciones directa y fsync de dd?

Me gustaría copiar una imagen a una memoria USB. Como me gustaría obtener velocidades "reales" y no quiero esperar mucho tiempo para que el dispositivo se sincronice después de copiar la imagen, me gustaría saber qué opciones usar para eso.

Respuesta1

Leyendo a través delcódigo fuentemuestra que también deberías preguntar sobre la nocacheopción. La directopción debería darte lo que quieres, pero también depende de la versión con la que ddestés jugando. Hacer una copia grande en un sistema Ubuntu 11.04 me mostró tiempos aún más lentos (=¿más cerca de la realidad?) con la dsyncopción que usa E/S sincronizada para datos, lo que probablemente pierde la ventaja de agregación que nos brindan los controladores de disco modernos. Para saber "exactamente" qué está pasando, tendrás que profundizar en el código fuente del kernel particular que estás ejecutando, pero incluso entonces estás a merced de la placa de interfaz de la unidad, que hace su propio almacenamiento en búfer.

Respuesta2

La opción fsync eliminará los datos al final de la copia. La opción dsync eliminará los datos después de cada bloque. La opción directa tendrá resultados similares a dsync, solo que sin contaminar el caché del sistema de archivos con los datos. Esto es bueno para almacenar en caché el resto del sistema y ahorra algo de sobrecarga de la CPU.

Tanto dsync como direct darán un rendimiento más bajo, pero eso se puede compensar en su mayor parte utilizando un tamaño de bloque grande, como 1 MB o más.

información relacionada