제 생각에는 발에 총을 맞은 것 같아요. 오래 전에 나는 mount bin 명령을 사용하여 오래된 Linux 시스템을 nas에 백업하려고 했습니다.
마운트 --bind / /mnt/src tar -C /mnt/src -c . > /mnt/backup_to_nas/full-backup- date '+%d-%B-%Y'
.tar.gz --exclude=tmp --exclude=mnt
그러다가 /mnt/src를 마운트 해제한 적이 없다는 것을 깨달았습니다.
내 질문은 이것이 내가 가지고 있는 / 공간의 두 배를 차지하는 걸까요? 비참하게 공간이 부족하고 공간을 복구하기 위해 파일을 삭제하려고 꼬리를 쫓고 있는지 확실하지 않습니다.
df -h는 다음을 보여줍니다:
[root@web-server mnt]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 4.0K 1.9G 1% /dev/shm
tmpfs 1.9G 194M 1.7G 11% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/vda2 7.6G 7.6G 0 100% /
/dev/vda1 190M 171M 5.3M 98% /boot
/dev/vdb 230G 152G 67G 70% /usr/local
tmpfs 379M 0 379M 0% /run/user/0
tmpfs 379M 0 379M 0% /run/user/2527
tmpfs 379M 0 379M 0% /run/user/2543
10.50.1.104:/data 9.1T 8.0T 610G 94% /mnt/backup
tmpfs 379M 0 379M 0% /run/user/2539
10.75.0.199://volume1/ICCBackups 32T 4.2T 28T 14% /mnt/backup_to_nas
tmpfs 379M 0 379M 0% /run/user/500
lsblk는 다음을 보여줍니다.
[root@web-server mnt]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 8G 0 disk
├─vda1 253:1 0 200M 0 part /boot
└─vda2 253:2 0 7.8G 0 part /mnt/src
vdb 253:16 0 232.8G 0 disk /usr/local
루트에서 공간 검사를 수행했습니다.
du -xhs * | 정렬 -rh
134G home
15G data
6.9G mnt
186M run
170M boot
52M etc
848K ARC-History.pdf
16K lost+found
8.0K export
8.0K backup
4.0K media
4.0K check_permissions.py
0 sys
0 proc
0 lib64
0 lib
0 dev
0 bin
/home과 같은 일부 대형 폴더가 왜 df -h가 보고하는 것보다 큰지 이해가 되지 않아 마운트 | 집을 grep하고 다음을 얻었습니다.
[root@web-server mnt]# mount | grep home
/dev/vdb on /home type ext4 (rw,relatime,data=ordered)
/dev/vda2 on /home/weather/public_html/weather_rrd type ext4 (rw,relatime,data=ordered)
/dev/vda2 on /usr/local/home/weather/public_html/weather_rrd type ext4 (rw,relatime,data=ordered)
/dev/vdb on /home/workers/public_html/VM-SYSTEMS type ext4 (rw,relatime,data=ordered)
/dev/vdb on /usr/local/home/workers/public_html/VM-SYSTEMS type ext4 (rw,relatime,data=ordered)
이것이 무엇인지, 재배치하는 방법을 알 수 있다면 숨 쉴 공간을 마련할 수도 있을 것 같습니다.
/dev/vda2 on /home/weather/public_html/weather_rrd type ext4 (rw,relatime,data=ordered)
/dev/vda2 on /usr/local/home/weather/public_html/weather_rrd type ext4 (rw,relatime,data=ordered)
그렇다면 다시 말하면, /에 대한 /의 mount --bind 명령이 /mnt/src에 두 배의 공간을 차지했습니까? 이 작업을 할 때 제가 (아마도) 이해하지 못한 것이 있나요? 나는 lsof /mnt/src를 했는데 모든 것이 그것을 사용하고 있는 것 같습니다.
하지만 관련성이 있는지 확실하지 않은 보고를 위해 이것으로 시작했습니다.
[root@web-server mnt]# lsof /mnt/src
lsof: WARNING: can't stat() ext4 file system /var/www/html/net-status/bw-mon (deleted)
Output information may be incomplete.
lsof: WARNING: can't stat() ext4 file system /usr/local/www/net-status/bw-mon (deleted)
Output information may be incomplete.
/에서 대용량 파일을 찾을 때 어디서부터 삭제를 시작해야 할지 모르시나요? (/home이 다른 곳에 있는 것 같지만?) ls -lh는 심볼릭 링크로 표시하지 않습니다.
[root@web-server /]# ls -lh
total 1.2M
-rw------- 1 root root 847K Jul 27 2020 ARC-History.pdf
drwxr-xr-x 3 root root 4.0K Sep 13 17:21 backup
lrwxrwxrwx 1 root root 7 May 11 2018 bin -> usr/bin
dr-xr-xr-x. 5 root root 3.0K Aug 16 18:06 boot
-rw-r--r-- 1 root root 3.3K May 12 2019 check_permissions.py
-rw------- 1 root root 0 Sep 13 17:33 core.20448
-rw------- 1 root root 0 Sep 13 17:46 core.28055
drwxr-xr-x 7 root root 4.0K Sep 13 17:16 data
drwxr-xr-x 18 root root 3.1K Sep 12 18:08 dev
drwxr-xr-x. 148 root root 12K Aug 31 17:26 etc
drwxr-xr-x 3 root root 4.0K Apr 2 2015 export
drwxr-xr-x 22 root root 4.0K Aug 27 18:06 home
lrwxrwxrwx 1 root root 7 May 11 2018 lib -> usr/lib
lrwxrwxrwx 1 root root 9 May 11 2018 lib64 -> usr/lib64
drwx------. 2 root root 16K Mar 31 2015 lost+found
drwxr-xr-x. 2 root root 4.0K Apr 12 2018 media
drwxr-xr-x. 6 root root 4.0K Feb 9 2023 mnt
drwxr-xr-x. 7 root root 4.0K Aug 25 15:13 opt
dr-xr-xr-x 225 root root 0 Nov 8 2021 proc
dr-xr-x---. 26 root root 12K Aug 25 15:19 root
drwxr-xr-x 48 root root 1.5K Sep 13 17:01 run
lrwxrwxrwx 1 root root 8 May 11 2018 sbin -> usr/sbin
-rw-r--r-- 1 root root 0 May 15 2019 searchresults.txt
drwxr-xr-x. 2 root root 4.0K Apr 12 2018 srv
dr-xr-xr-x 13 root root 0 Nov 29 2021 sys
drwxrwxrwt. 16 root root 244K Sep 13 17:49 tmp
drwxr-xr-x. 14 root root 4.0K May 11 2018 usr
drwxr-xr-x. 25 root root 4.0K Aug 9 20:21 var
drwxr-xr-x 2 root root 4.0K Aug 9 2015 zaphod-data
편집: 물건이 어디에 있는지 알려주는 fstab 파일을 살펴보았습니다.
UUID=c9d6c99f-d7a5-4117-93ba-029cc34d8b61 / ext4 defaults 1 1
UUID=19fcad32-0fcb-423a-87e9-586d03d2e406 /boot ext4 defaults 1 2
#LABEL=/home /home ext4 defaults 1 2
#192.41.211.105:/export/images /export/images nfs rsize=32768,wsize=32768,actimeo=0,bg,intr
LABEL=local-web-server /usr/local ext4 defaults 1 2
/usr/local/home /home none bind 0 0
/usr/local/www /var/www/html none bind 0 0
/usr/local/data /data none bind 0 0
/tmp/rrdweather /home/weather/public_html/weather_rrd none bind 0 0
/usr/local/data /data none bind 0 0
/home/workers/Site/VM-SYSTEMS /home/workers/public_html/VM-SYSTEMS none bind 0 0
#/home/workers/public_html/WebCalendar-1.2.3 /home/workers/public_html/WebCalendar none bind 0 0
#/home/workers/public_html/WebCalendar-1.2.0 /home/workers/public_html/WebCalendar~ none bind 0 0
/home/workers/public_html/net-status /usr/local/www/net-status none bind 0 0
/tmp/bw-mon /var/www/html/net-status/bw-mon none bind 0 0
/var/lib/smokeping/images /var/www/html/smokeping/images none bind 0 0
#mounting for our cheezy backup of web-server
10.50.1.104:/data /mnt/backup nfs
편집 2: 그래서 /mnt/src에서 정렬 명령을 수행하면 더 정확한 정보를 얻을 수 있다는 것을 깨달았습니다....
[root@web-server src]# du -xhs * | sort -rh
4.8G usr
707M var
421M opt
397M backup
168M root
150M tmp
52M etc
848K ARC-History.pdf
16K lost+found
12K mnt
8.0K export
4.0K zaphod-data
4.0K sys
4.0K srv
4.0K run
4.0K proc
4.0K media
4.0K home
4.0K dev
4.0K data
4.0K check_permissions.py
4.0K boot
0 searchresults.txt
0 sbin
0 lib64
0 lib
0 core.28055
0 core.20448
0 bin
usr에서 지울 수 있는 공간이 있을 수 있음을 보여줍니다(내가 Linux 전문가가 아닌 것이 무엇인지는 모릅니다). var에는 내가 지울 수 있었던 멋진 항목이 있었습니다(오래된 로그). 아직 작업 중이지만 제가 묻는 질문의 핵심은 /mnt/src를 마운트 해제해야 하는가 하는 것입니다. 아니면 명령을 내리려고 할 때마다 바쁘다는 메시지가 나오므로 이렇게 놔둬도 괜찮을까요?
답변1
문제
/mnt/src
공간을 차지하지 않지만 백업을 수행하는 도구를 포함하여 일부 도구를 혼동하지 않도록 마운트를 해제해야 합니다. 예 를 들어 최적이 아닌 첫 lsblk
번째 일치하는 마운트 및 디스플레이를 표시하도록 선택합니다 ./mnt/src
/
/dev/vda2
대부분의 Linux 시스템이 실행됩니다.체계화된그래서 이 시스템이 실행되고 있다고 가정합니다체계화된.
체계화된/
다음으로 다시 마운트공유됨Linux 커널의 기본값 대신 마운트사적인. 여기에서 마운트 전파에 대한 커널 문서를 참조하세요.공유 하위 트리. 이는 나중에 추가 마운트가 추가(또는 제거 및 읽기)될 때 전파 메커니즘에 의해 /
자동으로 마운트된다는 의미입니다./mnt/src
이후로공유됨(대신노예) 마운트 해제를 시도하면 /mnt/src
에서도 마운트 해제됩니다./
, 실패하거나(프로세스에서 사용 중이기 때문에) 성공할 경우 해를 끼칠 수 있습니다(원래 마운트 지점에서도 사라집니다).
무엇을 했어야 했나요?
항상 다음을 사용하여 바인드 마운트를 수행하십시오.사적인전파 옵션. 백업 목적인 경우 바인드 마운트도 읽기 전용으로 (재)마운트하도록 합니다.
mount --bind --make-private -o ro / /mnt/src
그렇게 하면 다른 사람과 더 이상 상호 작용하지 않습니다.마운트umount /mnt/src
이런 일이 발생하며 부작용 없이 간단하게 언제든지 마운트를 해제할 수 있습니다 .
현재 문제를 해결하기 위해 무엇을 할 수 있나요?
따라서 실제 원래 마운트 지점에 영향을 주지 않고 이를 올바르게 수행하려면 문제가 있는 모든 마운트를 다음과 같이 설정해야 합니다.사적인따라서 원래 마운트 지점에 영향을 주지 않고 마운트 해제할 수 있습니다.
나는 여기에 예를 든다.뿌리사용자) 다음을 수행한 후 OP의 사례를 모방합니다.
# mkdir -p /mnt/src
# mount --bind -o ro / /mnt/src
그런 다음 나중에(해로울 수 없는 장소에서):
# mkdir -p /root/intheway
# mount -t tmpfs tmpfs /root/intheway
다음으로 이어지는 것:
# umount /mnt/src
umount: /mnt/src: target is busy.
다음을 사용하여 문제가 있는 마운트를 식별합니다.
findmnt
:# findmnt --kernel --submounts --list -o +PROPAGATION /mnt/src TARGET SOURCE FSTYPE OPTIONS PROPAGATION /mnt/src /dev/vda2 ext4 ro,relatime,errors=remount-ro shared /mnt/src/root/intheway tmpfs tmpfs rw,relatime,inode64 shared
발견된 모든 항목을 설정합니다.공유됨다음과 같이 마운트됩니다.사적인, 포함
/mnt/src
:# mount --make-private /mnt/src/root/intheway # mount --make-private /mnt/src
마운트를 해제하고(깊이가 여러 개인 경우 마운트된 순서의 역순으로) 다음으로 마무리합니다.
/mnt/src
# umount /mnt/src/root/intheway # umount /mnt/src
이는 방해가 되는 (공유) 마운트를 방해하지 않았습니다.
# findmnt --kernel --list -o +PROPAGATION /root/intheway
TARGET SOURCE FSTYPE OPTIONS PROPAGATION
/root/intheway tmpfs tmpfs rw,relatime,inode64 shared