Linux
mv:無法將“home”移動到“home-old”:設備或資源繁忙
我想
/home
用一個符號連結替換我的安裝了 nfs 的主目錄。只有 root 登錄,/home 不是一個單獨的文件系統,lsof 顯示沒有鎖,selinux 是允許的。我錯過了什麼?
我通過 ssh 直接以 root 身份登錄:
[root@usil01-sql01 /]# uname -a Linux usil01-sql01 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux [root@usil01-sql01 /]# w 15:30:33 up 1:41, 1 user, load average: 0.00, 0.02, 0.22 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/2 10.50.11.114 15:13 1.00s 0.19s 0.01s w [root@usil01-sql01 /]# lsof | grep /home [root@usil01-sql01 /]# lsof +D /home [root@usil01-sql01 /]# df -h /home Filesystem Size Used Avail Use% Mounted on /dev/sda2 63G 4.1G 56G 7% / [root@usil01-sql01 /]# mount | grep -w / /dev/sda2 on / type ext4 (rw,relatime,seclabel,data=ordered) [root@usil01-sql01 /]# ls -lFd /home drwxr-xr-x. 3 root root 4096 Mar 7 13:36 /home/ [root@usil01-sql01 /]# getenforce Permissive [root@usil01-sql01 /]# mv /home /home-old mv: cannot move "/home" to "/home-old": Device or resource busy
我還能檢查什麼?
更多系統資訊:
[root@usil01-sql01 /]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 836.6G 0 disk |-sda1 8:1 0 768.6G 0 part /storage |-sda2 8:2 0 64G 0 part / `-sda3 8:3 0 4G 0 part [SWAP] sr0 11:0 1 1024M 0 rom [root@usil01-sql01 /]# blkid /dev/sda2: UUID="5ba6a429-4c65-4023-82b4-3673bfcf6a88" TYPE="ext4" /dev/sda3: UUID="b5eb680f-8789-43b2-9f7e-c52570b0eb73" TYPE="swap" /dev/sda1: UUID="cb22d57d-4a5b-4963-a990-890abe0c56dc" TYPE="ext4"
mv:無法將“/home”移動到“/home-old”:設備或資源繁忙
唯一的“使用”
$$ * $$我能想到的,它保存了一個文件名的變化,是一個掛載點。
我還能檢查什麼?
我不確定,但如果掛載仍然存在於另一個掛載命名空間中,可能會發生這種情況。因為出於某種原因,它沒有從根命名空間傳播解除安裝?或者查看我係統上的結果,也許是 systemd 服務
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
請注意這個問題 - 儘管 /home 沒有顯示為掛載點(在目前命名空間中),但無法重命名它 - 應該在 Linux 核心版本 3.18+ 中修復。
lsns
如果您可以安裝它可能會很有用。更多可能的命令:列出掛載命名空間:
# readlink /proc/*/task/*/ns/mnt | sort -u
辨識根掛載命名空間:
# readlink /proc/1/ns/mnt
查找具有給定掛載命名空間的程序
# readlink /proc/*/task/*/ns/mnt | grep 4026531840
檢查給定程序的命名空間:
# cat /proc/1/task/1/mountinfo
$$ * $$ EBUSY 重命名失敗,因為 oldpath 或 newpath 是某個程序正在使用的目錄(可能作為目前工作目錄,或者作為根目錄,或者因為它已打開以供讀取)或正在被系統使用(例如作為 mount point),而係統認為這是一個錯誤。 (請注意,在這種情況下不需要返回 EBUSY ——無論如何進行重命名並沒有錯——但如果系統無法以其他方式處理這種情況,則允許返回 EBUSY。)