空でないディレクトリ(シャドウディレクトリ)にマウントされているすべてのディスクを一覧表示するには?

空でないディレクトリ(シャドウディレクトリ)にマウントされているすべてのディスクを一覧表示するには?

私の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/3110 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"

関連情報