卸載綁定來源不起作用,且設備空間不足

卸載綁定來源不起作用,且設備空間不足

我想我可能是搬石頭砸自己的腳。很久以前,我嘗試使用 mount bind 指令將舊的 Linux 機器備份到 nas:

mount --bind / /mnt/src tar -C /mnt/src -c 。 > /mnt/backup_to_nas/full-backup-.tar.gz date '+%d-%B-%Y'--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

在 root 中進行了空間檢查:

杜 -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 報告的大,所以我做了一個 mount | grep home 並得到:

[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系統都運行系統所以我假設這個系統正在運行系統

系統重新安裝/共享mount 而非 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

相關內容