Je veux remplacer /home
par un lien symbolique vers mes répertoires personnels montés sur nfs.
Seul root est connecté, / home n'est pas un système de fichiers séparé, lsof n'affiche aucun verrou, selinux est permissif. Qu'est-ce que je rate?
Je suis connecté directement en tant que root via 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
Que puis-je vérifier d'autre?
Plus d'informations sur le système:
[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"
linux
centos
filesystems
TheAmigo
la source
la source
umount -f -l /home
top
oups
. Ils essaient de regarder ce qu'il fait en ce moment en utilisantstrace
. Cette situation est bizarre tmm. MISE À JOUR: vérifiez également lalsof
sortie avecfuser
une au cas où.Réponses:
La seule "utilisation" [*] à laquelle je peux penser, qui contient le nom d'un fichier à modifier, est un point de montage.
Je ne suis pas certain, mais cela pourrait se produire si le montage existe toujours dans un autre espace de noms de montage. Parce que les démontages ne se propagent pas à partir de l'espace de noms racine, pour une raison quelconque? Ou en regardant le résultat sur mon système, peut-être avec les services systemd
ProtectHome
?Notez que ce problème - impossible de renommer / home bien qu'il ne s'affiche pas comme point de montage (dans l'espace de noms actuel) - devrait être corrigé dans la version 3.18+ du noyau Linux.
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit/?h=linux-3.18.y&id=8ed936b5671bfb33d89bc60bdcc7cf0470ba52fe
comment trouver l'espace de noms d'un processus particulier?
lsns
pourrait être utile si vous pouvez l'installer. Plus de commandes possibles:Liste des espaces de noms de montage:
Identifiez l'espace de noms de montage racine:
Rechercher des processus avec un espace de noms de montage donné
Inspectez l'espace de noms d'un processus donné:
[*] EBUSY Le changement de nom échoue car oldpath ou newpath est un répertoire utilisé par un processus (peut-être comme répertoire de travail actuel, ou comme répertoire racine, ou parce qu'il était ouvert pour la lecture) ou est utilisé par le système (pour exemple comme point de montage) , tandis que le système considère cela comme une erreur. (Notez qu'il n'y a aucune obligation de retourner EBUSY dans de tels cas - il n'y a rien de mal à faire le renommage de toute façon - mais il est autorisé de retourner EBUSY si le système ne peut pas gérer de telles situations autrement.)
la source
C'était NetworkManager.
L'exécution
systemctl stop mysqld httpd postfix ipmievd tuned atd rsyslog smartd crond irqbalance gssproxy polkit chronyd
n'a pas aidé, mais a rendu la table de processus très petite.Après
systemctl stop NetworkManager
, j'ai pu renommer / home.la source
Vous pouvez démarrer sur un seul utilisateur et apporter des modifications sur le répertoire personnel.
e
linux16
ligne supprimérhgb
etquite
options et mis en placeinit=/bin/bash
.ctrl+x
pour commencer. Cela vous invitera sur la console bash./
avec les options de lecture / écriture en émettantmount -o remount,rw /
/home
répertoire, le renommer, etc.touch /.autorelabel
exec /sbin/init
pour démarrer le démarrage normalement.@sourcejedi: merci pour votre réponse.
la source