Come smontare un filesystem precedentemente chroot?


17

Sto usando un sistema di ripristino live (simile a un cd live) per risolvere alcuni problemi con il mio server Debian, in questo modo:

# 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/

Ora posso chroot a /mnt/rescue- ma dopo aver finito, come smontare di nuovo il filesystem?

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))

Credo che sia perché dev, proce syssono legati al file system montato. Ma non è nemmeno possibile smontarli ...


Cosa succede quando si tenta di smontare /mnt/rescue/proc? Sei sicuro di non avere ancora processi in esecuzione in questo chroot?
Mat

Prova lsof /mnt/rescuea vedere quale processo sta utilizzando quella cartella.
Martín Canaval,

Devi lasciare il guscio chrooted prima di spegnerlo.
vonbrand,

Risposte:


14
  1. Devi prima uscire dalla sessione chroot, di solito un semplice exitfarà:

    exit
    
  2. Quindi smonta TUTTE le directory associate:

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

    umount /mnt/rescue
    

Nel caso in cui tu fossi preoccupato che syncnon sia usato qui, nota che non ha alcuna influenza sulla possibilità di smontare. Le vampate smontate in sospeso scrivono comunque (deve, perché non ci sarebbe nessun posto dove andare dopo lo smontaggio). La presenza di un processo chroot è irrilevante (tranne per il fatto che impedisce lo smontaggio). Nel normale funzionamento del sistema, la sincronizzazione non ha alcun effetto osservabile. la sincronizzazione fa la differenza solo se un dispositivo viene disconnesso fisicamente senza essere stato smontato o se il sistema si arresta in modo anomalo mentre il dispositivo è montato.


1
grazie, questo è tutto ... il mio errore è stato tentare di smontare / sys / invece di / mnt / rescue / sys / ...
Afr

2
La syncè del tutto inutile.
Gilles 'SO- smetti di essere malvagio' il

@Gilles Puoi approfondire un po 'di più perché syncè inutile? Diventa inutile nell'attuale kernel? O solo in questo caso (modalità di salvataggio)? L'ho messo lì nel caso in cui ci siano enormi in attesa di scrittura su disco che impediranno umount dopo essere usciti da chroot.
John Siu,

4
@JohnSiu syncnon ha alcuna influenza sulla possibilità di smontare. Le vampate smontate in sospeso scrivono comunque (deve, perché non ci sarebbe nessun posto dove andare dopo lo smontaggio). La presenza di un processo chroot è irrilevante (tranne per il fatto che impedisce lo smontaggio). Nel normale funzionamento del sistema, syncnon ha alcun effetto osservabile. syncfa la differenza solo se un dispositivo viene disconnesso fisicamente senza essere stato smontato o se il sistema si arresta in modo anomalo mentre il dispositivo è montato.
Gilles 'SO- smetti di essere malvagio' il

@Gilles Capisco il tuo punto adesso. Grazie!!
John Siu,

14

Eseguire il comando seguente per forzare e staccare il filesystem dalla gerarchia del filesystem e ripulire tutti i riferimenti al filesystem non appena non è più occupato.

umount -lf /mnt/rescue

4

Il motivo per cui ottieni l'obiettivo è occupato. il messaggio è perché il mount point ( /mnt/rescue) è aperto in un browser di file o in una sessione terminale, e anche l'ordine del processo di smontaggio (qui intendo dev/ptsdovrebbe essere smontato prima dev/)

Bene, per smontare con successo tutte le fs lì:

  • Assicurati che il mountpoint non sia aperto in un browser di file!
  • Dopo essere uscito da chroot, cambia la directory da chroot dir ( cd)!
  • Smonta fs rispettando l'ordine dev/pts => dev/ => proc/ => sys/:

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


2

Ecco come faccio con il schrootcomando su Ubuntu versione 10.04 e successive:

# 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

Esci dal chroot. Nel sistema host, il comando 'mount' mostrerà tutto il percorso montato. (Include i percorsi che sono montati in chroot.) Ad esempio:

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

Quindi accedere all'ambiente chroot. In ambiente chroot eseguire smontare per smontare tutto il percorso in ordine. (Il percorso secondario deve essere smontato prima del percorso principale.)

unmount /proc/sys/fs/binfmt_misc
unmount /proc/sys
unmount /proc
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.