it-swarm-eu.dev

"mount: / is busy", když se pokouším připojit jako read-only, abych mohl spustit zerofree

Snažím se spustit Ubuntu 11.04 pro zerofree, abych mohl zkomprimovat obrázek VirtualBox vdi pomocí:

VBoxManage modifyhd Ubuntu.vdi --compact

Aby bylo možné spustit zerofree, byl obraz disku připojen pouze pro čtení. Sleduji tyto pokyny , který říká, že se používá k opětovnému připojení jako pouze pro čtení z režimu obnovy (Drop to root Shell Prompt):

mount -n -o remount,ro -t ext2 /dev/sda1 /

Ale když to udělám, dostanu chybu:

mount: / is busy

Nějaké nápady, jak to udělat?

Sledování : Po odpovědi Jari a tento příspěvek spuštěním těchto příkazů se problém vyřeší.

service rsyslog stop
service network-manager stop
killall dhclient
39
Wavy Crab

Některé procesy udržují soubory otevřené pro zápis. Mohou to být například programy, které zapisují protokoly, například rsyslogd, síťové nástroje, jako dhclient nebo něco jiného. Jejich vypnutí jeden po druhém a pokus o remount by mohl fungovat.

Procesy, které používají určité soubory, můžete najít pomocí programu fuser. Například, fuser -v -m / vrátí seznam procesů. Nejsem si však jistý, zda je to jeden z těch, který udržuje souborový systém zaneprázdněný.

25
Jari Laamanen

Souborový systém můžete znovu připojit pouze pro čtení, pokud neexistuje žádný proces, který má otevřený soubor pro zápis. Spustit lsof / a uvidíte, jaké procesy mají soubory otevřené v kořenovém souborovém systému. Soubory otevřené pro zápis budou označeny ve sloupci FD. Můžete je filtrovat pomocí

lsof / | awk '$4 ~ /[0-9].*w/'

Chcete-li automaticky filtrovat ID procesů, analyzujte výstup lsof -F pa:

lsof -F pa /home | awk '/^p/ {pid = substr($0, 2)} /^a.*w/ {print pid}'

Zlepšování Peterovy odpovědi:

Nemohl jsem zabít procesy, které používají můj bod připojení. Tak jsem to udělal:

  • Upravit /etc/fstab začne v příštím spuštění pouze pro čtení. Příklad: /dev/sda1 / ext2 ro 0 1
  • Restartujte a otevřete prostředí (například hostitelský klíč + F2)
  • Spusťte zerofree

„Obnovení“ systému:

  • Připojit s možností čtení a zápisu: $ mount -o remount,rw /dev/sda1
  • Upravit /etc/fstab znovu, obnovení původní hodnoty

Extra: v případě potřeby otevřete režim obnovy v kterémkoli kroku:

  • Restartujte
  • Podržte klávesu shift, zatímco se načítá VM)
  • Rozšířené možnosti> Možnost jádra s režimem zotavení> Dotázat se na kořenové prostředí
13
Topera

Někdy je tak mnoho procesů, které udržují připojení obsazené, takže může být snazší jednoduše restartovat pomocí připojení jen pro čtení.

Změňte položku pro kořenový souborový systém v /etc/fstab, například:

/dev/sda1 / ext2 relatime,rw,errors=remount-ro 0 1

se stává:

/dev/sda1 / ext2 noatime,ro 0 1

Při restartu bude souborový systém připojen pouze pro čtení, takže na něm můžete spustit zerofree.

Po dokončení znovu připojte souborový systém znovu ke čtení/zápisu (mount -o remount,rw /) a zrušte své změny na /etc/fstab.

Inspirováno https://wiki.debian.org/ReadonlyRoot#Enable_readonly_root

6
Peter Nowee

Pokud stále nemůžete odpojit nebo znovu připojit zařízení po zastavení všech služeb a procesů s otevřenými soubory, může existovat odkládací soubor nebo odkládací oddíl, který zařízení zaneprázdní. Toto se nezobrazí u fuser nebo lsof. Vypnout přepínání pomocí:

Sudo swapoff -a

Dalo by se předem zkontrolovat a zobrazit souhrn všech odkládacích oddílů nebo odkládacích souborů s:

swapon -s

nebo:

cat /proc/swaps

Jako alternativu k použití příkazu Sudo swapoff -a, můžete také vypnout swap zastavením služby nebo systemd unit. Například:

Sudo systemctl stop dphys-swapfile

nebo:

Sudo systemctl stop var-swap.swap

V mém případě bylo nutné vypnout swap, kromě zastavení všech služeb a procesů se soubory otevřenými pro zápis, abych mohl znovu připojit svůj kořenový oddíl jako jen pro čtení, abych mohl spustit fsck na můj kořenový oddíl bez restartování. To bylo nutné na Raspberry Pi s Raspbian Jessie.

6
Simon Gould

Pokud používáte systemd, zastaví se zápis na disk zastavením systemd-journald.

# systemctl stop systemd-journald.socket
# systemctl stop systemd-journald.service
# mount -o ro,remount /
4
Artur Pędziwilk

Dobře, je to, co jsem udělal

Za prvé, mým cílem bylo snížit moje / (ROOT) oddíl pro přidání dalšího disku na můj disk.

  • Od spuštění relace, jakmile je vše vyčištěno a zálohováno:

    init 1
    

    Moje plocha zmizí a nyní jsem na Linuxová konzole ...

    ...
    Give root password for maintenance or press CTRL+D to continue
    TheRootPassword_SomethingLike1234
    
  • Nyní se pokouší připojit / in pouze pro čtení režim:

    mount -o remount,ro /
    mount: / is busy
    
  • Ok, od teď jsem v teoreticky režimu pro jednoho uživatele, ale ps ax ukázat spoustu dalších procesů !!

    Zabít je všechny není opravdu možné nebo nebezpečné ... (kill 1 je zakázáno ... nemám čas hrát psdoom :-)

    Jediné, co mohu udělat, je System Request, proto vím dvěma způsoby: (viz Documentation/sysrq.txt soubor v dokumentech jádra):

    1. nejprve pomocí magic SysRq key past na jádro klávesnice:

      • udržet si AltGr, pak udržet a stisknout,
      • udeřil PrtScn jen jednou, ale neuvolňujte AltGr,
      • udeřil s jen jednou to odešle Emergency sync žádost o jádro a
      • udeřil u, toto odešle Umount all žádost, toto připojí všechny připojené souborové systémy jen pro čtení,
      • pak uvolněte AltGr
    2. Nebo příkazovým řádkem:

      echo s >/proc/sysrq-trigger
      echo u >/proc/sysrq-trigger
      
  • Pak jsem mohl

    fsck -fC0 /dev/mapper/MyDisk-ROOT
    

    ....

...

3
F. Hauri

Připojte soubor vdi jako další a nesystémový svazek k jinému VirtualBoxu. Tam ji můžete (znovu) připojit podle potřeby a provést zerofree.

Řekněme, že chcete zkomprimovat disk VDI VM1 (Virtual Machine 1). Pak potřebujete sekundu VM2. To znamená:

  • Ujistěte se, že není spuštěn ani VM1, ani VM2;
  • Ze Správce VirtualBoxu:

    • Vyberte VM2,
    • „Nastavení“ -> „Úložiště“ -> „Přidat pevný disk“: "Select it as additional disk" ,

    • vyberte soubor vdi VM1, který chcete zkomprimovat. Tip: Ujistěte se, že pevný disk právě přidaný do VM2 je na druhém místě v pořadí spouštění po původním disku VM2.

    • start VM2: nyní můžete (znovu) připojit svazek VM1 jako další disk pro VM2, protože žádný proces ho ve VM2 nepoužívá. Tip: Nejprve otevřete svazek pomocí folebrowseru systému Linux, který svazek automaticky připojí. Poté použijte mount -l abyste viděli, která je _Device_ v příkazu Sudo mount -o remount,ro _Device_. V mém případě to bylo /dev/sdb1 . Příkaz tedy byl (1) Sudo mount -o ro,remount /dev/sdb1 a poté (2) Sudo zerofree /dev/sdb1.

Namísto VM2 by mělo být možné bootovat z a instalačního disku jako a . Iso image a dosáhnout stejného VUT, ale nezkusil jsem to.

1
leo

Pro kohokoli jiného, ​​kdo hledá rychlou opravu, kterou vloží do vašeho terminálu ...

(Před provedením níže uvedených příkazů se ujistěte, že jste dokončili další kroky jako telinit 1.)

Nalezeno toto :

fuser -mv /dev/sda1 > /tmp/sda1.pids
kill `cat /tmp/sda1.pids`

Příkazy mohou vaši relaci zabít, ale po návratu bude váš oddíl připraven k opětovnému připojení.

1
DustWolf

Předpokládám, že se pokusíte spustit příkaz mount ve VM. Každopádně máte pravděpodobně jiný kořenový oddíl než autor příspěvku na fóru.

Snaž se:

mount -o ro,remount /

Což nezávisí na možnosti fs nebo mount. Pokud to nepomůže, můžete také zkusit zjistit kořenové fs pomocí grep " / " /proc/mounts nebo cat /proc/cmdline. Pokud je váš kořenový souborový systém například/dev/mapper/system-rootfs, můžete použít:

mount -o ro,remount /dev/mapper/system-rootfs /
0
Ulrich Dangel

Měl jsem tento problém, který mi zabránil uvést stroj do režimu jen pro čtení. Řešení problému mi trvalo déle, než jsem chtěla přiznat ... Věřím, že můj problém byl v tom, že jsem nechal Apache-Zeppelin běžet a zapomněl na to. Ujistěte se, že neděláte totéž s jinou službou typu hostingu. K vyřešení problému jsem použil fuser -kill / ukončit všechny procesy, které by mohly způsobit problém, a to mi umožnilo vrátit se do režimu ro.

0
ob1

Řešením pro mě bylo restartování operačního systému a zvolení „režimu obnovy“ z bootovací nabídky GRUBu. Z „režimu obnovy“ běží méně procesů a remounting pouze pro čtení funguje dobře.

Pokud má systém odkládací soubor v kořenovém systému souborů (spíše než odkládací oddíl), je také nutné dočasně vypnout odkládací soubor pomocí swapoff -a.

0
Boann