置き換えたい/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」に移動できません:デバイスまたはリソースがビジーです
私が考えることができる唯一の「用途」[*]は、ファイル名が変更されないようにするために、マウントポイントです。
他に何を確認できますか?
確かではありませんが、マウントが別のマウント名前空間にまだ存在している場合に、これが起こる可能性があります。ルート名前空間からアンマウントが伝達されていないため、何らかの理由で?または、私のシステムの結果を見ると、おそらくProtectHome
を使用したsystemdサービスですか?
$ 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
特定のマウント名前空間を持つプロセスを検索します
# readlink /proc/*/task/*/ns/mnt | grep 4026531840
特定のプロセスの名前空間を検査します。
# cat /proc/1/task/1/mountinfo
[*] EBUSY oldpathまたはnewpathが何らかのプロセスで使用されているディレクトリであるため(おそらく現在の作業ディレクトリまたはルートディレクトリとして、あるいは読み取り用に開いていたため)、名前の変更は失敗しますまたは、システムで使用中(たとえば、マウントポイントとして)ですが、システムはこれをエラーと見なします。 (そのような場合、EBUSYを返す必要はないことに注意してください。名前を変更しても何も問題はありませんが、システムがそのような状況を処理できない場合は、EBUSYを返すことができます。 。)
それはNetworkManagerでした。
ランニング systemctl stop mysqld httpd postfix ipmievd tuned atd rsyslog smartd crond irqbalance gssproxy polkit chronyd
は役に立ちませんでしたが、プロセステーブルを非常に小さくしました。
後systemctl stop NetworkManager
、/ homeの名前を変更できました。
シングルユーザーで起動し、ホームディレクトリに変更を加えることができます。
e
を押して行を編集しますlinux16
行でrhgb
&quite
オプションを削除し、配置されたinit=/bin/bash
に入れました。ctrl+x
。これにより、bashコンソールでプロンプトが表示されます。/
を発行して、読み取り/書き込みオプションでmount -o remount,rw /
を再マウントします/home
ディレクトリを編集して名前を変更できます。touch /.autorelabel
を発行してselinuxのラベルを変更しますexec /sbin/init
を実行して、通常どおりブートを開始します。@sourcejedi:回答ありがとうございます。