Estoy intentando ejecutar zerofree
Ubuntu 11.04 para poder compactar la imagen vdi de VirtualBox usando:
VBoxManage modifyhd Ubuntu.vdi --compact
Para poder ejecutar zerofree
la imagen del disco, se debe montar como de solo lectura. estoy siguiendoestas instruccionesque dice usar esto para volver a montar como de solo lectura desde el modo de recuperación (soltar al indicador del shell raíz):
mount -n -o remount,ro -t ext2 /dev/sda1 /
Pero cuando hago esto me sale el error:
mount: / is busy
¿Alguna idea sobre cómo hacer esto?
Hacer un seguimiento: Siguiendo la respuesta de Jari yesta publicaciónal ejecutar estos comandos se resuelve el problema.
service rsyslog stop
service network-manager stop
killall dhclient
Respuesta1
Algunos procesos mantienen archivos abiertos para escribir. Estos podrían ser, por ejemplo, programas que escriben registros, como rsyslogd
herramientas de red, como dhclient
o algo más. Apagarlos uno por uno e intentar volver a montarlos podría funcionar.
Puede encontrar procesos que utilizan ciertos archivos usando el programa fuser
. Por ejemplo, fuser -v -m /
devolverá una lista de procesos. Sin embargo, no estoy seguro de si es uno de estos los que mantienen ocupado el sistema de archivos.
Respuesta2
Mejorando la respuesta de Peter:
No pude eliminar procesos que usan mi punto de montaje. Entonces, hice esto:
- Edite
/etc/fstab
para que comience en solo lectura en el próximo inicio. Ex:/dev/sda1 / ext2 ro 0 1
- Reinicie y abra un shell (tecla de host + F2, por ejemplo)
- Ejecutar cero libre
Para "recuperar" su sistema:
- Montaje con opción de lectura-escritura:
$ mount -o remount,rw /dev/sda1
- Edite
/etc/fstab
nuevamente, restaurando su valor original.
Extra: si es necesario abrirmodo de recuperaciónen cualquier paso:
- Reiniciar
- Mantenga presionada la tecla Mayús mientras se carga la VM
- Opciones avanzadas > Opción de kernel con modo de recuperación > Drop to Root Shell Prompt
Respuesta3
Solo puede volver a montar el sistema de archivos como de solo lectura si no hay ningún proceso que tenga un archivo abierto para escritura. Ejecute lsof /
para ver qué procesos tienen archivos abiertos en el sistema de archivos raíz. Los archivos abiertos para escritura se indicarán en la FD
columna. Puedes filtrarlos con
lsof / | awk '$4 ~ /[0-9].*w/'
Para filtrar los ID de proceso automáticamente, analice el resultado de lsof -F pa
:
lsof -F pa /home | awk '/^p/ {pid = substr($0, 2)} /^a.*w/ {print pid}'
Respuesta4
A veces hay tantos procesos que mantienen ocupado el montaje, que podría ser más fácil simplemente reiniciar con el montaje de solo lectura.
Cambie la entrada para el sistema de archivos raíz en /etc/fstab
, por ejemplo:
/dev/sda1 / ext2 relatime,rw,errors=remount-ro 0 1
se convierte en:
/dev/sda1 / ext2 noatime,ro 0 1
Al reiniciar, el sistema de archivos se montará como de solo lectura, para que pueda ejecutarlo zerofree
.
Cuando haya terminado, vuelva a montar el sistema de archivos de lectura/escritura ( mount -o remount,rw /
) y deshaga los cambios en /etc/fstab
.
Inspirado porhttps://wiki.debian.org/ReadonlyRoot#Enable_readonly_root