Cuando se utiliza una memoria USB con un sistema operativo persistente, sucede que la partición persistente casper-rw
se 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-rw
partició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-rw
y 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
htop
me muestra que elcp -a
proceso 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 upper
y work
( lost+found
si existe) en la partición casper-rw
de algún directorio en un SSD. Este paso lleva un poco más de 2 minutos. Se puede utilizar cp -a
para 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 -a
tomó 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+found
antes 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-rw
uno 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 sync
para forzar la escritura inmediata en el destino.
Cuando obtiene cp
un 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 sync
después de la copia, por ejemplocp ${QUELLE} ${ZIEL} && sync
Además, considere usar rsync
para copiar solo archivos al destino que hayan sido modificados o que sean nuevos.