/home
내 nfs 마운트 홈 디렉토리를 심볼릭 링크로 바꾸고 싶습니다 .
루트 로그인만 가능하며 /home은 별도의 파일 시스템이 아니며 lsof에는 잠금이 표시되지 않으며 selinux는 느슨합니다. 내가 무엇을 놓치고 있나요?
SSH를 통해 루트로 직접 로그인했습니다.
[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
[*] 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
단일 사용자로 시작하여 홈 디렉토리를 변경할 수 있습니다.
- 시스템을 다시 시작하고 그럽 선택 중에 눌러 줄을 편집했습니다.
e
- 온라인으로 & 옵션을
linux16
제거 하고 해당 위치에 두십시오 .rhgb
quite
init=/bin/bash
ctrl+x
시작하려면 버튼을 누르세요 . 그러면 bash 콘솔에 메시지가 표시됩니다./
다음 명령을 실행하여 읽기/쓰기 옵션을 다시 마운트하십시오.mount -o remount,rw /
- 그런 다음
/home
디렉터리를 편집하고 이름을 바꾸는 등의 작업을 수행할 수 있습니다. - 작업이 완료되면 다음 명령을 사용하여 selinux에 태그를 다시 지정하세요.
touch /.autorelabel
- 최종 실행이
exec /sbin/init
정상적으로 시작됩니다.
@sourcejedi: 답변 감사드립니다.