Manera de acelerar cp -a (usar cp -a dentro de una memoria USB es muy lento)

Manera de acelerar cp -a (usar cp -a dentro de una memoria USB es muy lento)

Cuando se utiliza una memoria USB con un sistema operativo persistente, sucede que la partición persistente casper-rwse corrompe si se extrae la memoria USB demasiado pronto después de apagar el sistema operativo.

Desafortunadamente, con ubuntustudio-20.04.2 experimenté períodos de hasta un minuto después de hacer clic en el botón de apagado cuando la pantalla está en negro, pero ocurren operaciones pesadas de escritura en la casper-rwpartición. Por lo tanto, es muy fácil que se estropee tirando de la palanca demasiado pronto.

Para recuperarme de tal percance, creo una partición de respaldo casper-rwy uso comandos (después de convertirme en superusuario) después de configurar correctamente las variables QUELLE y ZIEL:

time cp -a "${QUELLE}/upper" "${ZIEL}"

time cp -a "${QUELLE}/work" "${ZIEL}"

time cp -a "${QUELLE}/lost+found" "${ZIEL}"

Cuando se ejecuta mi script, veo

  • actividad de CPU muy baja
  • muy poco uso de RAM
  • htopme muestra que el cp -aproceso dura mucho tiempo en el estado D.

Si lo hice bien (corríjame), esto significa que la computadora tiene que esperar muy a menudo porque el controlador de la memoria USB no puede manejar tantas operaciones de lectura y escritura de manera efectiva (¡aunque es un dispositivo USB3 en un conector USB3!) .

¿Hay alguna manera de dejar cp -a ¿Utiliza buffers más grandes para acelerar las cosas, idealmente escribiendo archivos completos de forma secuencial?

Respuesta1

Parece que se puede acelerar significativamente la copia copiando primero los directorios uppery work( lost+foundsi existe) en la partición casper-rwde algún directorio en un SSD. Este paso lleva un poco más de 2 minutos. Se puede utilizar cp -apara ese propósito.

Si desea la copia de seguridad en el mismo dispositivo en una partición separada, copiarla del SSD al dispositivo USB cp -atomó alrededor de 31 minutos (para 4,1 GiB de datos en unos 66500 archivos, dispositivo USB3 en un conector USB3) . El contenido anterior de la partición se borró rm -rf "${ZIEL}/upper"; rm -rf "${ZIEL}/work"; rm -rf "${ZIEL}/lost+foundantes de que el contenido actual se copiara en la partición de respaldo).

¿Alguien sabe si hay alguna diferencia si una partición se borra de esta manera antes de volver a usarla o si se aceleraría aún más si se formateara antes de colocar el contenido neto allí? En caso de que casper-rwuno se estropee, hay que formatearlo antes de restaurar su contenido desde la copia de seguridad.

Por supuesto, se podría mejorar aún más haciendo una copia de seguridad como backup.tar.gz. Esto reduce la cantidad de datos a escribir y especialmente el segundo paso se beneficiaría de ello.

Respuesta2

Úselo syncpara forzar la escritura inmediata en el destino.

Cuando obtiene cpun archivo y aparece en el sistema de archivos de destino, no se garantiza que el archivo esté todavía en el medio de almacenamiento.

La razón de esto es que los datos primero se recuperan entre varios buffers internos, lo cual es más rápido y fácil de usar, hasta que realmente están en el dispositivo de almacenamiento de destino. La escritura de datos en el dispositivo de destino se realiza en segundo plano y no consume muchos ciclos de CPU, por lo que puede resultar difícil verlo en los monitores de actividad.

Siempre puede intentar forzar una escritura inmediata desde los buffers al dispositivo de almacenamiento de destino usando syncdespués de la copia, por ejemplocp ${QUELLE} ${ZIEL} && sync

Además, considere usar rsyncpara copiar solo archivos al destino que hayan sido modificados o que sean nuevos.

información relacionada