Chcę zastąpić /home
dowiązaniem symbolicznym do moich domowych katalogów montowanych przez NFS.
Logowany jest tylko root, / home nie jest oddzielnym systemem plików, lsof nie pokazuje żadnych blokad, selinux jest dozwolony. czego mi brakuje?
Jestem zalogowany bezpośrednio jako root przez 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
Co jeszcze mogę sprawdzić?
Więcej informacji o systemie:
[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
źródło
źródło
umount -f -l /home
top
lubps
. Próbują obserwować, co robi teraz, używającstrace
. Ta sytuacja jest dziwna. AKTUALIZACJA: sprawdź takżelsof
dane wyjściowe zfuser
jednym na wszelki wypadek.Odpowiedzi:
Jedynym „use” [*], jaki mogę wymyślić, który powstrzymuje nazwę pliku przed zmianą, jest punkt montowania.
Nie jestem pewien, ale może się tak zdarzyć, jeśli mount nadal istnieje w innej przestrzeni nazw mount. Ponieważ z jakiegoś powodu nie jest propagowane odmontowywanie z głównej przestrzeni nazw? Lub patrząc na wynik w moim systemie, może usługi systemowe z
ProtectHome
?Zauważ, że ten problem - niemożność zmiany nazwy / home pomimo tego, że nie jest wyświetlany jako punkt montowania (w bieżącej przestrzeni nazw) - powinien zostać naprawiony w jądrze Linuksa w wersji 3.18+.
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit/?h=linux-3.18.y&id=8ed936b5671bfb33d89bc60bdcc7cf0470ba52fe
jak znaleźć przestrzeń nazw dla konkretnego procesu?
lsns
może być przydatny, jeśli możesz go zainstalować. Więcej możliwych poleceń:Przestrzenie nazw montowania listy:
Zidentyfikuj przestrzeń nazw montowania roota:
Znajdź procesy o podanej przestrzeni nazw montowania
Sprawdź przestrzeń nazw danego procesu:
[*] EBUSY Zmiana nazwy kończy się niepowodzeniem, ponieważ oldpath lub newpath to katalog, który jest używany przez jakiś proces (być może jako bieżący katalog roboczy lub jako katalog główny lub ponieważ był otwarty do odczytu) lub jest używany przez system (dla przykład jako punkt montowania) , podczas gdy system uważa to za błąd. (Należy pamiętać, że w takich przypadkach nie ma wymogu zwracania EBUSY - zresztą i tak zmiana nazwy nie jest niczym złym - ale można zwrócić EBUSY, jeśli system inaczej nie poradzi sobie z takimi sytuacjami.)
źródło
To był NetworkManager.
Uruchamianie
systemctl stop mysqld httpd postfix ipmievd tuned atd rsyslog smartd crond irqbalance gssproxy polkit chronyd
nie pomogło, ale sprawiło, że tabela procesów była bardzo mała.Potem
systemctl stop NetworkManager
mogłem zmienić nazwę / home.źródło
Możesz uruchomić jednego użytkownika i wprowadzić zmiany w katalogu domowym.
e
linux16
kolejce usunięterhgb
iquite
opcje i umieść je na swoim miejscuinit=/bin/bash
.ctrl+x
aby rozpocząć. Zapewni to promocję na konsoli bash./
z opcjami odczytu / zapisu, wydającmount -o remount,rw /
/home
katalog, zmienić jego nazwę itp.touch /.autorelabel
exec /sbin/init
aby uruchomić rozruch w normalny sposób.@sourcejedi: dziękuję za odpowiedź.
źródło