mv:„/home“ kann nicht nach „/home-old“ verschoben werden:Gerät oder Ressource ausgelastet
Die einzige "Verwendung" [*], die mir einfällt, die den Namen einer Datei vor Änderungen schützt, ist ein Einhängepunkt.
Was kann ich noch überprüfen?
Ich bin mir nicht sicher, aber vielleicht könnte dies passieren, wenn der Mount noch in einem anderen Mount-Namespace existiert. Weil es aus irgendeinem Grund keine Unmounts aus dem Root-Namespace propagiert? Oder wenn ich mir das Ergebnis auf meinem System ansehe, vielleicht systemd services mit 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
Beachten Sie, dass dieses Problem – /home kann nicht umbenannt werden, obwohl es nicht als Einhängepunkt angezeigt wird (im aktuellen Namespace) – in Linux-Kernel-Version 3.18+ behoben werden sollte.
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit/?h=linux-3.18.y&id=8ed936b5671bfb33d89bc60bdcc7cf0470ba52fe
Wie finde ich den Namensraum eines bestimmten Prozesses heraus?
lsns
könnte nützlich sein, wenn Sie es installieren können. Weitere mögliche Befehle:
Mount-Namespaces auflisten:
# readlink /proc/*/task/*/ns/mnt | sort -u
Identifizieren Sie den Root-Mount-Namensraum:
# readlink /proc/1/ns/mnt
Finde Prozesse mit einem gegebenen Mount-Namensraum
# readlink /proc/*/task/*/ns/mnt | grep 4026531840
Überprüfen Sie den Namensraum eines bestimmten Prozesses:
# cat /proc/1/task/1/mountinfo
[*] EBUSY Die Umbenennung schlägt fehl, weil oldpath oder newpath ein Verzeichnis ist, das von einem Prozess verwendet wird (vielleicht als aktuelles Arbeitsverzeichnis oder als Stammverzeichnis oder weil es zum Lesen geöffnet war) oder vom System verwendet wird ( zum Beispiel als Einhängepunkt) , während das System dies als Fehler betrachtet. (Beachten Sie, dass es in solchen Fällen nicht erforderlich ist, EBUSY zurückzugeben – es ist sowieso nichts falsch daran, die Umbenennung durchzuführen – aber es ist erlaubt, EBUSY zurückzugeben, wenn das System solche Situationen nicht anders handhaben kann.)
Es war NetworkManager.
Ausführen von systemctl stop mysqld httpd postfix ipmievd tuned atd rsyslog smartd crond irqbalance gssproxy polkit chronyd
hat nicht geholfen, aber die Prozesstabelle sehr klein gemacht.
Nach systemctl stop NetworkManager
, konnte ich /home.