¿Cómo desmontar un sistema de archivos anteriormente chroot'd?


17

Estoy usando un sistema de rescate en vivo (similar a un live-cd) para solucionar algunos problemas con mi servidor Debian, así:

# mkdir -p /mnt/rescue
# mount /dev/md2 /mnt/rescue
# mount --bind /dev /mnt/rescue/dev/
# mount --bind /proc /mnt/rescue/proc/
# mount --bind /sys /mnt/rescue/sys/

Ahora puedo hacer chroot /mnt/rescue, pero después de terminar, ¿cómo desmontar el sistema de archivos nuevamente?

umount: /mnt/rescue: target is busy.
    (In some cases useful info about processes that use
     the device is found by lsof(8) or fuser(1))

Supongo que es porque dev, procy sysestán vinculados al sistema de archivos montado. Pero tampoco es posible desmontarlos ...


¿Qué sucede cuando intentas desmontar /mnt/rescue/proc? ¿Estás seguro de que todavía no tienes procesos en ejecución chroot?
Mat

Intenta lsof /mnt/rescuever qué proceso está usando esa carpeta.
Martín Canaval

Debe dejar el caparazón chroot antes de apagarlo.
vonbrand

Respuestas:


14
  1. Primero debe salir de la sesión de chroot, por lo general, un simple exithará:

    exit
    
  2. Luego desmonte TODOS los directorios enlazados:

    umount /mnt/rescue/dev/
    umount /mnt/rescue/proc/
    umount /mnt/rescue/sys/
    
  3. Luego:

    umount /mnt/rescue
    

En caso de que le preocupara que syncno se usara aquí, tenga en cuenta que no influye en si es posible desmontarlo. El desmontaje borra las escrituras pendientes de todos modos (tiene que hacerlo, porque no habría a dónde ir después del desmontaje). La presencia de un proceso fragmentado es irrelevante (excepto en que evita el desmontaje). En el funcionamiento normal del sistema, la sincronización no tiene ningún efecto observable. La sincronización solo hace la diferencia si un dispositivo se desconecta físicamente sin haber sido desmontado o si el sistema se bloquea mientras el dispositivo está montado.


1
gracias, eso es todo ... mi error fue tratar de desmontar / sys / en lugar de / mnt / rescue / sys / ...
Después del

2
El synces totalmente inútil.
Gilles 'SO- deja de ser malvado'

@Gilles ¿Puedes elaborar un poco más por qué synces inútil? ¿Se vuelve inútil en el núcleo actual? ¿O solo en este caso (modo de rescate)? Lo puse allí en caso de que haya una gran escritura pendiente en el disco que evitará el montaje después de salir de chroot.
John Siu

44
@JohnSiu syncno tiene influencia sobre si es posible desmontar. El desmontaje borra las escrituras pendientes de todos modos (tiene que hacerlo, porque no habría a dónde ir después del desmontaje). La presencia de un proceso fragmentado es irrelevante (excepto en que evita el desmontaje). En funcionamiento normal del sistema, syncno tiene efecto observable. syncsolo hace la diferencia si un dispositivo se desconecta físicamente sin haber sido desmontado o si el sistema se bloquea mientras el dispositivo está montado.
Gilles 'SO- deja de ser malvado'

@ Gilles Ahora entiendo tu punto. ¡¡Gracias!!
John Siu

14

Ejecute el siguiente comando para forzar y separar el sistema de archivos de la jerarquía del sistema de archivos y limpiar todas las referencias al sistema de archivos tan pronto como ya no esté ocupado.

umount -lf /mnt/rescue

4

La razón por la que obtienes el 'objetivo está ocupado'. el mensaje se debe a que el punto de montaje ( /mnt/rescue) está abierto en un explorador de archivos o en una sesión de terminal, y también el orden del proceso de desmontaje (en este caso, dev/ptsdebería desmontarse antes dev/)

Bueno, para desmontar con éxito todos los fs allí:

  • ¡Asegúrese de que el punto de montaje no esté abierto en un navegador de archivos!
  • ¡Después de salir de chroot, cambie el directorio fuera del directorio chroot ( cd)!
  • Desmontar fs respetando el orden dev/pts => dev/ => proc/ => sys/:

    sudo umount / mnt / rescue / dev / pts
    sudo umount / mnt / rescue / dev
    sudo umount / mnt / rescue / proc
    sudo umount / mnt / rescue / sys
    sudo umount / mnt / rescue


2

Así es como lo hago con el schrootcomando en Ubuntu versión 10.04 hacia arriba:

# list all sessions:
schroot --list --all-sessions
# if the above command does not work, just type `mount`. The bind mount
# points with something like this in the mount path is the session name you want to get:
precise-a4aac8e0-663c-4fec-8fb2-16e4b06557e3 (<chroot_name>-<id>)

# now run this to properly end the session:
schroot -e -c precise-ca6c72e4-0e9f-4721-8a0e-cca359e2c2fd

0

Salir de chroot. En el sistema host, el comando 'mount' mostrará toda la ruta montada. (Incluye las rutas que están montadas en chroot). Por ejemplo:

binfmt_misc on /home/user/projects/jsroot/proc/sys/fs/binfmt_misc

Luego ingrese al entorno chroot. En el entorno chroot, ejecute desmontar para desmontar todas las rutas en orden. (La ruta secundaria debe desmontarse antes de la ruta principal).

unmount /proc/sys/fs/binfmt_misc
unmount /proc/sys
unmount /proc
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.