GNU/Linux >> LINUX-Kenntnisse >  >> Linux

mv:kann nicht nach Hause wechseln-alt:Gerät oder Ressource ausgelastet

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.

umbenennen
Linux
  1. Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

  2. Debian – /var, /home auf separate Partition verschieben?

  3. Xemacs:Alle Dateien in /home/barry/.emacs_barry laden?

  4. Wie ändere ich Mount-Punkte?

  5. Mounten Sie /tmp und /home, um die Festplatte zu trennen?

Ansible SSH-Authentifizierung und Rechteausweitung

Warum andere Dinge als /home auf eine separate Partition legen?

Wie kann festgestellt werden, ob der NFS-Mount als v3 oder v4 gemountet ist?

Gechrootete SFTP-Benutzerschreibberechtigungen

Warum haben die Verzeichnisse /home, /usr, /var usw. alle dieselbe Inode-Nummer (2)?

mdadm mdadm:/dev/sda1 kann nicht geöffnet werden:Gerät oder Ressource ausgelastet