ディレクトリツリーに表示されなくなったハードドライブのデータを開いたプロセスを見つけます。

ディレクトリツリーに表示されなくなったハードドライブのデータを開いたプロセスを見つけます。

私のサーバーでは、ルートパーティションは73 GBですが、デバイスで約6 GBしか使用されていない場合でも、ディスクがいっぱいであるとマークされています。

# df -h
Filesystem                  Size  Used Avail Use% Mounted on
udev                        997M     0  997M   0% /dev
tmpfs                       202M   41M  162M  20% /run
/dev/mapper/p22server-root   73G   68G  655M 100% /

(私はサーバーでLVMを使用しています/dev/mapper/p22server-root -> ../dm-0:)確認してみると

ncdu -x /

総使用量は5.9GBに過ぎませんでした。

私の考えではまだ開いていますが、ファイルツリーには表示されないいくつかのファイルがあるはずです。

どのようにデバッグできますか?再起動すると、失われたスペースが回復することが分かりましたが、今は再起動できません。

答え1

疑いが本当なら、対処しやすくなるかもしれません。ラソフ

出力で「(削除済み)」または類似の項目を見つけます。

答え2

2つの可能性があります。

1. 一部のプロセスでは、削除されたファイルはまだ開いています。

開いているすべてのファイルを表示できますlsof。たとえば、以下は表示されるタイプと出力lsofに表示される頻度です。

# lsof|cut -c50-54|sort|uniq -c
 375  CHR 
 610  DIR 
 211 FIFO 
  32 IPv4 
  17 IPv6 
  40 link 
 419 node 
 152 nown 
6008  REG 
   9 sock 
 598 unix 

これはファイル記述子列(FD)のみを表示します。

# lsof|awk -v field="FD" 'NR==1 {c = index($0,field)} {print substr($0,c-1,length(field)+4)}'|sort|uniq -c|sort -n|tail

DELヒントを表示するには、出力でこの値を持つファイルを見つけますlsof


2. マウントポイントの後ろに隠されたファイル

ただし、これらのファイルは、インストールフォルダに多数のファイルが保存されているときに使用されていないマウントポイントのために単に「隠されていました」ncdu

ルートディレクトリを別の場所にマウントして分析します。

mkdir /temp-root
mount --bind / /temp-root
ncdu -x /temp_root

関連情報