mv:nelze přesunout „/home“ do „/home-old“:Zařízení nebo zdroj je zaneprázdněn
Jediné „použití“[*], které mě napadá a které brání změně názvu souboru, je bod připojení.
Co ještě mohu zkontrolovat?
Nejsem si jistý, ale možná by se to mohlo stát, pokud připojení stále existuje v jiném jmenném prostoru připojení. Protože z nějakého důvodu nedochází k šíření odpojení z kořenového jmenného prostoru? Nebo když se podívám na výsledek v mém systému, možná systemd services s ProtectHome
?
$ grep -h home /proc/*/task/*/mountinfo | sort -u
121 89 0:22 /systemd/inaccessible/dir /home ro,nosuid,nodev shared:142 master:24 - tmpfs tmpfs rw,seclabel,mode=755
275 243 253:2 / /home ro,relatime shared:218 master:33 - ext4 /dev/mapper/alan_dell_2016-home rw,seclabel,data=ordered
321 288 253:2 / /home rw,relatime shared:262 master:33 - ext4 /dev/mapper/alan_dell_2016-home rw,seclabel,data=ordered
84 64 253:2 / /home rw,relatime shared:33 - ext4 /dev/mapper/alan_dell_2016-home rw,seclabel,data=ordered
85 46 253:2 / /home rw,relatime master:33 - ext4 /dev/mapper/alan_dell_2016-home rw,seclabel,data=ordered
Všimněte si, že tento problém – nelze přejmenovat /home, přestože se nezobrazuje jako bod připojení (v aktuálním jmenném prostoru) – by měl být opraven v jádře Linuxu verze 3.18+.
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit/?h=linux-3.18.y&id=8ed936b5671bfb33d89bc60bdcc7cf0470ba52fe
jak zjistit jmenný prostor konkrétního procesu?
lsns
může být užitečné, pokud jej můžete nainstalovat. Další možné příkazy:
Vypsat jmenné prostory připojení:
# readlink /proc/*/task/*/ns/mnt | sort -u
Identifikujte jmenný prostor pro připojení root:
# readlink /proc/1/ns/mnt
Najděte procesy s daným jmenným prostorem připojení
# readlink /proc/*/task/*/ns/mnt | grep 4026531840
Zkontrolujte jmenný prostor daného procesu:
# cat /proc/1/task/1/mountinfo
[*] EBUSY Přejmenování se nezdaří, protože oldpath nebo newpath je adresář, který je používán nějakým procesem (možná jako aktuální pracovní adresář nebo jako kořenový adresář, nebo protože byl otevřen pro čtení) nebo je používán systémem ( například jako bod připojení) , zatímco systém to považuje za chybu. (Upozorňujeme, že v takových případech není vyžadováno vrácení EBUSY – na přejmenování stejně není nic špatného – ale je povoleno vrátit EBUSY, pokud systém nemůže takové situace jinak zvládnout.)
Byl to NetworkManager.
Spuštěn systemctl stop mysqld httpd postfix ipmievd tuned atd rsyslog smartd crond irqbalance gssproxy polkit chronyd
nepomohlo, ale tabulku procesů udělalo velmi malou.
Po systemctl stop NetworkManager
, podařilo se mi přejmenovat /home.