Як відключити колишню файлову систему chroot'd?


17

Я використовую систему рятування-live (подібну до live-cd), щоб виправити деякі проблеми з моїм сервером Debian, наприклад:

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

Тепер я можу хронізувати /mnt/rescue- але після того, як я закінчу, як знову відключити файлову систему?

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

Я думаю, це тому dev, що procі sysприв'язані до змонтованої файлової системи. Але їх також неможливо зняти ...


Що відбувається при спробі відключити /mnt/rescue/proc? Ви впевнені, що у вас ще не працюють процеси chroot?
Мат

Спробуйте lsof /mnt/rescueпобачити, який процес використовує цю папку.
Мартін Канавал

Перед тим, як вимкнутись, потрібно залишити хроноване оболонку.
фонбранд

Відповіді:


15
  1. Ви повинні спочатку вийти з сеансу chroot, як правило, це exitзробити просто:

    exit
    
  2. Потім додайте ВСІ прив'язані каталоги:

    umount /mnt/rescue/dev/
    umount /mnt/rescue/proc/
    umount /mnt/rescue/sys/
    
  3. Потім:

    umount /mnt/rescue
    

Якщо ви турбуєтеся про те, що syncтут не використовується, зауважте, що це не впливає на те, чи можлива відключення. Відключення флеш-листів, що очікують, все одно пише (це обов'язково, оскільки після демонтації їм нікуди не дівати). Наявність хронізованого процесу не має значення (за винятком того, що він запобігає відключенню). У нормальній роботі системи синхронізація не має спостережуваного ефекту. синхронізація має значення лише в тому випадку, якщо пристрій фізично відключено без відключення або якщо система виходить з ладу під час встановлення пристрою.


1
дякую, це все ... моя помилка була спроба відключити / sys / замість / mnt / рятувальний / sys / ...
Афр

2
Це syncабсолютно марно.
Жил "ТАК - перестань бути злим"

@Gilles Ви можете розробити більше, чому syncмарно? Чи стає він марним у поточному ядрі? Або лише в цьому випадку (режим порятунку)? Я розміщую його на всякий випадок, якщо є величезне очікування запису на диск, що запобіжить численності після виходу з chroot.
Джон Сіу

4
@JohnSiu syncне впливає на те, чи можливий демонтаж . Відключення флеш-листів, що очікують, все одно пише (це обов'язково, оскільки після демонтації їм нікуди не дівати). Наявність хронізованого процесу не має значення (за винятком того, що він запобігає відключенню). У нормальній роботі системи syncне спостерігається ефекту. syncмає значення лише в тому випадку, якщо пристрій фізично відключено без відключення або якщо система виходить з ладу під час встановлення пристрою.
Жил "ТАК - перестань бути злим"

@Gilles Я зараз розумію твій погляд. Дякую!!
Джон Сіу

14

Виконайте нижченаведену команду, щоб примусити та від'єднати файлову систему від ієрархії файлової системи та очистити всі посилання на файлову систему, як тільки вона більше не зайнята.

umount -lf /mnt/rescue

4

Причина, чому ви отримуєте "ціль зайнята". повідомлення через те, що точка монтажу ( /mnt/rescue) відкрита у файловому браузері або в сеансі терміналу, а також порядок процесу dev/ptsдемонтажу (тут я маю на увазі, що слід передбачити значення dev/)

Ну а для того, щоб успішно вичислити всі файли там:

  • Переконайтесь, що точка монтажу не відкрита у файловому браузері!
  • Після виходу з chroot змінити каталог із chroot dir ( cd)!
  • Зробити порядок дотримання порядку dev/pts => dev/ => proc/ => sys/:

    sudo umount / mnt / рятувальний / dev / pts
    sudo umount / mnt / рятувальний / dev
    sudo umount / mnt / рятувальний / proc
    sudo umount / mnt / рятувальний / sys
    sudo umount / mnt / рятувальний


2

Ось як я це роблю з schrootкомандою на Ubuntu версії 10.04 вгору:

# 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

Вихід із хроту. У хост-системі команда 'mount' покаже весь змонтований шлях. (Включає ті шляхи, які встановлені в chroot.) Наприклад:

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

Потім введіть середовище chroot. У середовищі chroot запустіть unmount, щоб демонтувати весь шлях в порядку. (Піддоступ повинен бути відключений перед батьківським контуром.)

unmount /proc/sys/fs/binfmt_misc
unmount /proc/sys
unmount /proc
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.