비어 있지 않은 디렉터리(섀도 디렉터리)에 마운트된 모든 디스크를 나열하는 방법은 무엇입니까?

비어 있지 않은 디렉터리(섀도 디렉터리)에 마운트된 모든 디스크를 나열하는 방법은 무엇입니까?

내 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/3110GB의 데이터가 있는 새 디스크가 마운트되었으며 디스크가 마운트된 후 파일 시스템에서 숨겨졌습니다.

대답기존 디렉토리에서 마운트가 발생하는 이유원시 데이터를 검색하는 데 사용하는 방법을 설명 mount --bind하지만, 사전에 알지 못하는 경우 시스템에 "그림자" 디렉터리가 있는지 찾는 방법은 설명하지 않습니다.

각 디스크를 개별적으로 확인하지 않고 비어 있지 않은 디렉토리에 마운트된 디스크 목록을 얻는 빠른 방법이 있습니까 mount --bind?

답변1

이 문제를 해결했습니다! 이 서버의 작업을 다른 서버와 다르게 추적하여 /data/3에 마운트된 디스크가 어느 시점에서 작동을 멈췄다는 사실을 발견하여 /etc/fstab에 이를 주석 처리했습니다. 그러나 시스템의 프로세스는 이를 인식하지 못하고 계속해서 /data/3에 씁니다. 이때는 /에 있는 디렉터리입니다. 불량 디스크는 나중에 교체되었고 fstab 항목이 업데이트되어 이제 /data/3이 새 디스크에 마운트됩니다. 어찌됐든 오래된 데이터는숨겨진왜냐하면 그것에 대한 포인터나 다른 것이 없는 것 같기 때문입니다.

이 사실을 알고 나면 /data/3 디스크를 마운트 해제했고 이제 110GB 데이터 세트를 볼 수 있었습니다. 이를 삭제하고 디스크를 다시 마운트하면 모든 것이 정상으로 돌아갔습니다.

이와 같은 고아 디렉토리를 찾을 수 있는 도구가 있는지 모르겠습니다.

답변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"

관련 정보