最近、私のLinuxサーバーボックスで、ディスクパーティションの1つがいっぱいになり、スペースを空けるために数百MBの大きなファイルを削除する必要がありました。スペースをクリアした後も、パーティションはいっぱいで、ファイルを保存するための空きスペースがありませんでした。後で驚いたことに、以下の格差に気づきました:
ディスク使用量コマンド(du)は、使用済みスペースを11Gのみと表示しました!
-bash-3.2# du -chs /myhome/ 11G /myhome/ 11G total -bash-3.2#
上記のコマンドには、隠しドットファイルとディレクトリは含まれていません。以下のコマンドを使用して、隠しドットファイルとディレクトリによるディスク使用量も確認します。
-bash-3.2#du -sch .[!.]* /myhome/*
さらに正確なファイルとその絶対パスを一覧表示する場合は、次のコマンドを使用します。
-bash-3.2# du -h -x /myhome/*
しかし、dfコマンドはディスクパーティション/myhome/がいっぱいであると表示されました!!!
-bash-3.2$ df -h Filesystem Size Used Avail Use% Mounted on /dev/cciss/c0d0p8 20G 14G 4.7G 75% / /dev/cciss/c0d0p9 9.7G 1.3G 8.0G 14% /tmp /dev/cciss/c0d0p3 30G 4.3G 24G 16% /usr /dev/cciss/c0d0p10 44G 41G 0G 100% /myhome /dev/cciss/c0d0p6 30G 27G 670M 98% /var /dev/cciss/c0d0p5 30G 20G 8.0G 72% /opt /dev/cciss/c0d0p2 78G 21G 54G 28% /export /dev/cciss/c0d0p1 4.9G 173M 4.5G 4% /boot tmpfs 7.9G 0 7 .9G 0% /dev/shm tmpfs 491M 61M 431M 13% /var/lib/ganglia/rrds
ここでの課題は、残りのスペースがどこにあるかを見つけることです。どこかに隠されていますか?
LSOFコマンドを使用して開いたままのファイルを検索します
一部のファイルを削除した可能性がありますが、プロセスは開いたままになっています。これらのファイルを閉じるまで、スペースは解放されません。 「lsof」コマンドの下に、削除されたファイルがまだ開いたままになっていることがわかります。
-bash-3.2# /usr/sbin/lsof | grep deleted |grep /myhome java 10249 ramya 1u REG 104,10 45866276291 4645619 /myhome/var/container.log (deleted) java 10249 ramya 2u REG 104,10 45866276291 4645619 /myhome/var/container.log (deleted)
今、あなたはいくつかの手がかりを持っているでしょう?はい、削除されたファイル/myhome/var/container.logは、プロセスID:10249でまだ開いています。次に、以下に示すように、/procの対応するプロセスIDディレクトリに移動します。
-bash-3.2# cd /proc/10249/fd/
ファイルを一覧表示して、削除されたファイルにリンクしているファイルハンドラーを確認します。
-bash-3.2# ls -lrt | grep /myhome/ lrwx------ 1 ramya ramya 64 Feb 13 14:04 2 -> /myhome/var/container.log (deleted) lrwx------ 1 ramya ramya 64 Feb 13 14:04 1 -> /myhome/var/container.log (deleted)
次に、対応するファイルハンドラーをクリアして、以下のコマンドを使用してスペースを解放します。
-bash-3.2# cat /dev/null > /proc/10249/fd/1 -bash-3.2# cat /dev/null > /proc/10249/fd/2
iノードはまだ開いていますが、長さは0になっていることに注意してください。
-bash-3.2# /usr/sbin/lsof | grep deleted |grep /myhome java 10249 ramya 1u REG 104,10 0 4645619 /myhome/var/container.log (deleted) java 10249 ramya 2u REG 104,10 0 4645619 /myhome/var/container.log (deleted)>
次に、ディスクパーティションをチェックして、笑顔を見せてください。
-bash-3.2# df -h |grep /myhome /dev/cciss/c0d0p10 44G 12G 30G 28% /myhome