我想/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"
答案1
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 是某个进程正在使用的目录(可能作为当前工作目录,或作为根目录,或因为它已打开以供读取)或正在被系统使用(例如作为挂载点),而系统认为这是一个错误。 (请注意,在这种情况下不需要返回 EBUSY — 无论如何进行重命名都没有问题 — 但如果系统无法以其他方式处理此类情况,则允许返回 EBUSY。)
答案2
这是网络管理员。
运行systemctl stop mysqld httpd postfix ipmievd tuned atd rsyslog smartd crond irqbalance gssproxy polkit chronyd
没有帮助,但使进程表变得非常小。
之后systemctl stop NetworkManager
,我能够重命名/home。
答案3
您可以在单个用户上启动并对主目录进行任何更改。
- 重新启动我的系统并在 grub 选择期间按按编辑该行
e
- 在线
linux16
删除rhgb
&quite
选项并放入其放置的init=/bin/bash
. - 按下按钮
ctrl+x
开始。这将在 bash 控制台上提示您。 /
通过发出以下命令重新挂载读/写选项mount -o remount,rw /
- 之后,您可以编辑
/home
目录、重命名等。 - 工作完成后,通过以下命令重新标记 selinux
touch /.autorelabel
- 最后执行
exec /sbin/init
即可正常启动。
@sourcejedi:谢谢您的回答。