私のLinuxサーバーは、次のように/にマウントされている/ dev / sda4デバイスのディスクスペース使用量が高いことを報告します。
[root@stormtrooper03 /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda4 126G 114G 5.5G 96% /
tmpfs 32G 0 32G 0% /dev/shm
/dev/sda2 239M 118M 109M 53% /boot
/dev/sda1 150M 264K 150M 1% /boot/efi
/dev/sda5 63G 52M 60G 1% /home
/dev/sda6 63G 54M 60G 1% /tmp
/dev/sda7 63G 2.6G 58G 5% /usr
/dev/sda3 539G 11G 501G 3% /var
/dev/sdb1 917G 857G 51G 95% /data/1
/dev/sdc1 917G 861G 47G 95% /data/2
/dev/sdd1 917G 282G 627G 31% /data/3
/dev/sde1 917G 861G 47G 95% /data/4
/dev/sdf1 917G 858G 50G 95% /data/5
du -sh /*
ただし、以下に示すように、実行ではこれよりはるかに少ない量を使用していることがわかります。このデバイスのファイル設定をクリーンアップする必要がありますが見つかりません!
[root@stormtrooper03 /]# du -sh /*
6.7M /bin
116M /boot
3.7T /data
356K /dev
30M /etc
172K /home
638M /lib
20M /lib64
16K /lost+found
4.0K /media
4.0K /mnt
3.8G /opt
0 /proc
42M /root
9.2M /sbin
4.0K /selinux
4.0K /srv
0 /sys
2.1M /tmp
2.5G /usr
11G /var
修正する
原因が見つかりました。/data/3
110 GBのデータを持つ新しいディスクがマウントされ、ディスクがマウントされた後にファイルシステムから隠されています。
答え既存のディレクトリでマウントが発生する理由生データを取得するために使用する方法について説明しますmount --bind
が、事前に知らない場合は、システムに「シャドウ」ディレクトリがあるかどうかを見つける方法については説明しません。
各ディスクを個別に確認せずに空でないディレクトリにマウントされたディスクのリストを取得する簡単な方法はありますかmount --bind
?
答え1
この問題を解決しました!このサーバーの操作を他のサーバーとは異なる方法で追跡し、/ data / 3にマウントされたディスクがある時点で動作を停止したことを発見し、それを/ etc / fstabにコメントしました。ただし、システムのプロセスはそれを認識せず、引き続き/ data / 3に書き込みます。この時は / にあるディレクトリです。不良ディスクは後で交換され、fstabエントリが更新され、/ data / 3が新しいディスクにマウントされます。とにかく古いデータは隠されたなぜなら、それへのポインタや他に何もないようです。
これがわかったら、/ data / 3ディスクをアンマウントし、110 GBのデータセットを見ることができました。これを削除してディスクを再マウントすると、すべてが正常に戻りました。
このような孤立したディレクトリを見つけるためのツールがあるかどうかわかりません。
答え2
[編集する]: この回答を一般的な説明にしてください。質問のスタイリッシュなバージョンへの答えではありません。
ディレクトリ統計システム内の大容量ファイルとディレクトリの場所を表示できる素晴らしいグラフィックユーティリティです。ヒートマップと並べ替えられたリストを提供します。
答え3
隠しデータを含む可能性がある別の場所にファイルシステムをマウントする場合は、潜在的に隠されたデータをマウントされた相対位置に移動して、そこにデータがあるかどうかを確認できます。
どんな結果が出ればsudo ls -A $MOUNTPOINT
どこにでも何かがあるという意味です$MOUNTPOINT
。
インストールされている項目を確認するには、mount
コマンドを別々に実行してください。
隠しデータを見つけるために使用できるコードは次のとおりです。
#!/bin/bash
TMP="/media/root" # temp location to mount the directory that might have data hidden by a mount point
sudo mkdir -p "$TMP"
sudo mount --bind --read-only -- "/" "$TMP" # if "/" holds the mount point with the hidden by mountpoint data, replace "/" if needed.
# replace `$(mount | awk '{print $3}')` below with the directories you wish to test for hidden data
for LOCATION in $(mount | awk '{print $3}') ; do
if [ -n "$(sudo ls -A "$TMP$LOCATION" 2>/dev/null)" ]; then
echo "data on unmounted \"$LOCATION\"";
fi;
done;
sudo umount "$TMP"
出力例:
data on unmounted "/run"
data on unmounted "/"
data on unmounted "/var"