mv:无法将“home”移动到“home-old”:设备或资源繁忙

Modified on: Sat, 30 Jun 2018 12:21:00 +0800

我想用符号链接替换/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" 
作者:,TheAmigo

最佳答案

  

mv:无法将“/ home”移动到“/ home-old”:设备或资源繁忙

我能想到的唯一一个“使用”[*],它保存了一个文件的名称,是一个挂载点。

  

我还能检查什么?

我不确定,但如果mount仍存在于另一个mount命名空间中,则可能会发生这种情况。因为某些原因,它没有从根命名空间传播卸载?或者在我的系统上查看结果,可能是带有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 +中修复。

https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit/?h=linux-3.18.y&id=8ed936b5671bfb33d89bc60bdcc7cf0470ba52fe


如何查找特定流程的命名空间?

如果可以安装,

lsns可能会有用。更多可能的命令:

列表装入命名空间:

# readlink /proc/*/task/*/ns/mnt | sort -u

识别根安装命名空间:

# readlink /proc/1/ns/mnt

使用给定的mount命名空间查找进程

# readlink /proc/*/task/*/ns/mnt | grep 4026531840

检查给定进程的命名空间:

# cat /proc/1/task/1/mountinfo


[*] EBUSY重命名失败,因为oldpath或newpath是一个目录
              某些进程正在使用(可能作为当前工作目录,
              或者作为根目录,或者因为它是打开的阅读)或是
              在系统使用中(例如作为挂载点)
,而
              系统认为这是一个错误。 (请注意,没有要求 -
              在这种情况下返回EBUSY - 没有任何问题
              无论如何都要进行重命名 - 但如果允许则允许返回EBUSY
              系统不能处理这种情况。)

作者:,sourcejedi

相关问答

添加新评论