Como listar todos os discos montados em diretórios não vazios (diretórios sombreados)?

2

Meu servidor linux reporta alto uso de espaço em disco para o dispositivo / dev / sda4 montado em / conforme mostrado abaixo:

[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

No entanto, sei que há muito menos do que essa quantidade usada executando du -sh /* , conforme mostrado abaixo. Preciso limpar a configuração dos arquivos neste dispositivo, mas não consigo encontrá-los !!

[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

Atualizar Eu encontrei razão para isso: um novo disco foi montado em /data/3 , que tinha 110 GB de dados e ficou escondido do sistema de arquivos depois de montar um disco.

A resposta para a pergunta por que a montagem acontece ao longo de um O diretório existente explica como descobrir dados originais usando mount --bind , mas não explica como descobrir se o seu sistema tem diretórios "sombreados" se você não souber antecipadamente.

Existe um caminho rápido para uma lista de discos montados em diretórios não vazios sem verificar cada um individualmente por mount --bind ?

    
por Majid Alfifi 18.02.2017 / 03:07

3 respostas

0

Eu descobri o problema! Ao rastrear ações neste servidor que são diferentes de outros servidores, descobri que em um ponto o disco montado em / data / 3 parou de funcionar, por isso foi comentado em / etc / fstab. No entanto, os processos no sistema não sabiam disso e continuavam a escrever para / data / 3. que neste momento é um diretório em /. Em seguida, o disco defeituoso foi substituído e a entrada fstab foi atualizada, de modo que now / data / 3 é montado no novo disco. De alguma forma, os dados antigos eram ocultos , pois parece que não há nenhum ponteiro para isso ou algo assim.

Uma vez que eu soube disso, desmontei o disco / data / 3 e agora consegui ver 110GB de dados configurados lá, o que eu deletei e remontei o disco e as coisas voltaram ao normal.

Não sei se existe alguma ferramenta para encontrar esse diretório órfão, por assim dizer.

    
por 18.02.2017 / 04:11
0

[EDIT]: Deixando essa resposta como uma observação geral, ela não responde à versão refinada da pergunta.

KDirStat é um bom utilitário gráfico para ver onde grandes arquivos e diretórios estão em um sistema. Ele fornece um mapa de calor e uma lista ordenada.

    
por 18.02.2017 / 03:22
0

Se você montar o sistema de arquivos que pode ter os dados ocultos em outro lugar, poderá ir dentro do local até o local relativo em que as montagens podem ocultar os dados e ver se há algum dado ali.

Se sudo ls -A $MOUNTPOINT produzir algum resultado, então existe algo em $MOUNTPOINT .

Para ver o que está montado, execute o comando mount sozinho.

Veja alguns códigos que você pode usar para procurar dados ocultos.

#!/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"

exemplo de saída:

data on unmounted "/run"
data on unmounted "/"
data on unmounted "/var"
    
por 22.02.2017 / 00:06

Tags