Estoy tratando de ejecutar zerofree
Ubuntu 11.04 para poder compactar la imagen de VirtualBox vdi usando:
VBoxManage modifyhd Ubuntu.vdi --compact
Para ejecutar zerofree
la imagen del disco se ha montado como de solo lectura. Estoy siguiendo estas instrucciones que dicen usar esto para volver a montar como solo lectura desde el modo de recuperación (solicitud de caída al 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?
Seguimiento : Seguir la respuesta de Jari y esta publicación ejecutando estos comandos resuelve el problema.
service rsyslog stop
service network-manager stop
killall dhclient
ubuntu
mount
virtualbox
Cangrejo ondulado
fuente
fuente
telinit 1
y eso resolvió el problema para mí.Respuestas:
Algunos procesos mantienen los archivos abiertos para escritura. Estos podrían ser, por ejemplo, programas que escriben registros, como
rsyslogd
herramientas de red, comodhclient
o algo más. Apagarlos uno por uno e intentar el montaje podría funcionar.Puede encontrar procesos que usan 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 lo que mantiene ocupado el sistema de archivos.fuente
F
en los indicadores de acceso en lafuser
salida.Solo puede volver a montar el sistema de archivos 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 laFD
columna. Puedes filtrarlos conPara filtrar las ID de proceso automáticamente, analice la salida de
lsof -F pa
:fuente
u
) y todavía dice ocupado.Mejorando la respuesta de Peter:
No pude matar los procesos que usan mi punto de montaje. Entonces, hice esto:
/etc/fstab
a comienza en solo lectura en el próximo arranque. Ex:/dev/sda1 / ext2 ro 0 1
Para "recuperar" su sistema:
$ mount -o remount,rw /dev/sda1
/etc/fstab
nuevamente, restaurando su valor originalExtra: si es necesario, abra el modo de recuperación en cualquier paso:
fuente
/dev/sda1 / ext2 ro 0 1
entrada estaba en la parte superior de la lista. Cuando lo puse por primera vez como la última entrada, todavía tenía el error de punto de montaje ocupado.A veces hay tantos procesos que mantienen el montaje ocupado, que podría ser más fácil reiniciar simplemente con el montaje de solo lectura.
Cambie la entrada para el sistema de archivos raíz en
/etc/fstab
, por ejemplo:se convierte en:
Al reiniciar, el sistema de archivos se montará de solo lectura, por lo que puede ejecutarlo
zerofree
.Cuando haya terminado, vuelva a montar el sistema de archivos de lectura / escritura nuevamente (
mount -o remount,rw /
) y deshaga los cambios en/etc/fstab
.Inspirado en https://wiki.debian.org/ReadonlyRoot#Enable_readonly_root
fuente
/dev/sda1 / ext2 ro 0 1
y pude arrancar en modo de solo lectura.Si aún no puede desmontar o volver a montar su dispositivo después de detener todos los servicios y procesos con archivos abiertos, entonces puede haber un archivo de intercambio o una partición de intercambio que mantenga su dispositivo ocupado. Esto no aparecerá con
fuser
olsof
. Desactiva el intercambio con:Puede verificar de antemano y mostrar un resumen de cualquier partición de intercambio o archivos de intercambio con:
o:
Como alternativa al uso del comando
sudo swapoff -a
, también puede desactivar el intercambio deteniendo un servicio o una unidad systemd . Por ejemplo:o:
En mi caso, fue necesario desactivar el intercambio, además de detener cualquier servicio y proceso con archivos abiertos para escritura, de modo que pudiera volver a montar mi partición raíz como de solo lectura para ejecutarla
fsck
en mi partición raíz sin reiniciar. Esto era necesario en un Raspberry Pi con Raspbian Jessie.fuente
Si usa systemd, las escrituras en disco se detienen deteniendo systemd-journald.
fuente
Ok, hay lo que hice
Primero, mi objetivo era reducir mi
/
(ROOT
) partición para agregar otra en mi disco.Desde la sesión en ejecución una vez que todo se limpió y retrocedió:
Mi escritorio desaparece y ahora estoy en la consola de Linux ...
Ahora, intentando montar
/
en modo de solo lectura :Ok, desde ahora estoy dentro teóricamente para un solo usuario , ¡pero
ps ax
muestro muchos otros procesos!Matarlos a todos no es realmente posible, o peligroso ... (
kill 1
está prohibido ... No tengo tiempo para jugar psdoom :-)Lo único que puedo hacer es
System Request
, para esto, conozco dos formas: (verDocumentation/sysrq.txt
archivo en los documentos del kernel):primero usando
magic SysRq key
trampa del núcleo del teclado:Emergency sync
solicitud al núcleo yUmount all
solicitud, volverá a montar todos los sistemas de archivos montados de solo lectura,O por línea de comando:
Entonces ahora, podría
....
...
fuente
fsck
operación se realizó con éxito, he arrancado un Live USB para poder ejecutarresize2fs
... Esta característica aún no está implementada ...fsck
no sabe-f
; ¿Qué haría eso, cero bloques sin referencia?ext2
elfsck
interruptor: forzar-f
la comprobación incluso si el sistema de archivos parece estar limpio.Para cualquier otra persona que solo esté buscando una solución rápida para pegar en su terminal ...
(Antes de seguir los comandos a continuación, asegúrese de haber completado los otros pasos como
telinit 1
).Encontré esto :
Los comandos pueden matar su sesión, pero después de que regrese, su partición está lista para ser montada de nuevo.
fuente
Adjunte el archivo vdi como volumen adicional y no del sistema a otro VirtualBox. Allí puede (re) montarlo según sea necesario y realizar el zerofree.
Digamos que desea compactar el disco VDI de VM1 (Virtual Machine 1). Entonces necesitas una segunda VM2 . Es decir, :
Desde VirtualBox Manager:
"Configuración" -> "Almacenamiento" -> "Añadir disco duro": ,
seleccione el archivo vdi de VM1, que desea compactar. Sugerencia: asegúrese de que el disco duro recién agregado a VM2 quede segundo en orden de arranque después del disco original de VM2.
mount -l
para ver cuál es el_Device_
en el comandosudo mount -o remount,ro _Device_
. En mi caso esto fue / dev / sdb1 . Entonces el comando fue (1)sudo mount -o ro,remount /dev/sdb1
y luego (2)sudo zerofree /dev/sdb1
.En lugar de VM2, uno debería poder arrancar desde un disco de instalación como una imagen .iso y lograr lo mismo, PERO no lo he probado.
fuente
Supongo que intentas ejecutar el
mount
comando en la VM. De todos modos, probablemente tenga una partición raíz diferente a la del autor de la publicación del foro.Tratar:
Lo cual no depende de la opción fs o mount. Si esto no funciona, también puede intentar determinar su raíz fs con
grep " / " /proc/mounts
ocat /proc/cmdline
. Si su sistema de archivos raíz es, por ejemplo, / dev / mapper / system-rootfs, puede usar:fuente
Tuve este problema que me impidió poner mi máquina en modo de solo lectura. Resolver el problema me llevó más tiempo de lo que me gustaría admitir ... Creo que mi problema fue que dejé Apache-Zeppelin ejecutándose y me olvidé de eso. Asegúrese de no hacer lo mismo con otro servicio de alojamiento. Para resolver el problema, solía
fuser -kill /
terminar todos los procesos que podrían estar causando el problema y me permitió volver al modo ro.fuente
La solución para mí fue reiniciar el sistema operativo y elegir "modo de recuperación" en el menú de arranque de GRUB. Desde el "modo de recuperación", hay menos procesos en ejecución, y el montaje de solo lectura funciona bien.
Si el sistema tiene un archivo de intercambio en el sistema de archivos raíz (en lugar de una partición de intercambio), también es necesario desactivar temporalmente el archivo de intercambio con
swapoff -a
.fuente