おそらく私は自ら足を撃ってしまったと思います。ずっと前に、mount bind コマンドを使用して古い 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をアンマウントしていなかったことに気付きました
私の質問は、これが / 上のスペースの 2 倍を占めているかどうかです。スペースがひどく不足しており、スペースを回復するためにファイルを削除しようとするのは無駄なことなのかどうかわかりません。
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
ルートでスペースチェックを実行しました:
デュ -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)
もう一度言いますが、/ を /mnt/src にマウントする --bind コマンドは 2 倍のスペースを占有しましたか? これを実行するときに (おそらく) 理解していなかった何かがあるのでしょうか? 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 で sort コマンドを実行すると、より正確な情報が得られることに気付きました...
[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