Linuxのdfコマンドで空きディスク領域がないと表示されるので、私は奇妙な状況にあります
[root@backup cache]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 72G 70G 0 100% /
/dev/sda1 190M 11M 170M 7% /boot
tmpfs 248M 0 248M 0% /dev/shm
だが du -sh /*
言います
[root@backup cache]# du -sh /*
4.0K /bacula-restores
7.4M /bin
5.4M /boot
3.6T /data
116K /dev
55M /etc
204K /home
76M /lib
16K /lost+found
12K /media
0 /misc
16K /mnt
8.0K /mount
0 /net
8.0K /opt
0 /proc
2.3G /root
32M /sbin
8.0K /selinux
168K /share
8.0K /srv
0 /sys
361M /test
20K /tmp
3.2G /usr
1.5G /var
どこに問題があるのか教えてもらえますか?私のスペースはどこですか?私はそれを理解することができません:(
試してください:
$ lsof +L1
これにより、リンク数が1未満のファイルが見つかります(ファイルは削除されていますが、まだ書き込まれています)。
Duとdfが一致しないときのために。
ショートバージョン:lsof
を使用して、リンクされていないがまだ開いているファイルを見つけます。ファイルを保持しているアプリケーション(または怠惰な場合はシステム全体)を再起動すると、空き領域が元に戻ります。
ロングバージョン:ほとんどの場合、アプリケーションによって開かれ、書き込まれているが、ファイルシステムからリンク解除(削除)されたファイルがあります。
NTFSとは異なり、extには一種の参照カウントがあります。つまり、ファイルを削除すると、そのファイルへの参照が削除されます。プログラムでファイルを開くと、参照が追加されます。したがって、どのプログラムがファイルを保持しているかを把握する必要があります。これが、UNIXでのファイル操作に関して、リンク/リンク解除への参照がよく見られる理由です。通常、ファイルの検索はlsof
ツールを使用して行われます。
この動作の良い面は、Windowsでよくある「ファイルが開いているため削除できない」というエラーが発生しないことです。共有ライブラリなどのシステムファイルを置き換えることもできます。ソフトウェアは、ソフトウェアのアップグレード(Windowsの場合)のために再起動する代わりに、再起動(およびディスクから新しいライブラリをロード)するまで、古いライブラリを使用します。あなたが今目にする悪い面。ファイルシステム内の可視ファイルのサイズは、通常、ディスク上のデータ量と一致しません。
または、この場合の貧乏人lsof
は(Linuxの場合)
ls -l /proc/*/fd/ | grep deleted
アンマウントされている間は、常に空のディレクトリで「chattr + i/mount-point」を実行します。
マウントされていないときに何かが書き込もうとすると、「アクセスが拒否されました」というエラーメッセージが返されます。そして、あなたはすぐにエラーに気づきます。
「/ mount-point」に適切にマウントされたリソースがある場合、「chattr + i」は効果がなく、すべてが期待どおりに機能します。
iノードが使い果たされていないかどうかを確認することもできます。 df -i
。
ドライブ上のファイルが比較的小さい場合もまったく同じ問題がありましたが、ディスク領域が100%使用されていました。バックアップドライブの同期を実行した後、プライマリブートディスクがいっぱいになるという問題がありました。
>rsync -avxHAXW /media/backup1 /media/backup2
この同期後、プライマリディスクがいっぱいになりました。バックアップではなく、誤ってブートディスクにファイルをコピーしていたことがわかりました2。私は間違いを修正し、プライマリディスク上の大容量ファイルを削除して、rsyncを再実行しました。バックアップディスクをアンマウントして再マウントした後でも、ブートディスクの容量が不足していました。起動ディスクの大きなファイルをクリーンアップしてみました...
>find . -type f -print0 | xargs -0 du -s | sort -n | tail -25 | cut -f2 | xargs -I{} du -sh {}
不要になった大きなファイルを削除しました。ゴミ箱も必ず空にしました。
>empty-trash
その作業のすべての後...ディスクはまだいっぱいです。マシンを再起動することにしました。再起動後、ブートディスクパーティションが100%から10%になりました。 rsyncプロセスは、ディスクリソースを保持しているバックグラウンドで実行し続けている必要があります。
私はこのアドバイスをするのは嫌いですが、すべてのディスククリーンアップを実行した後、マシンを再起動して、データに掛かっているバックグラウンドプロセスを停止して、ディスクが本当に解放されないようにする必要がある場合があります。
何が悪かったのか知っています。 NFSを/ dataとしてマウントし、NFSがネットワークエラー接続を取得し、/ dataがNFS共有ではなく/としてマウントされたディスク上にあった。
このようなメカニズムに関係しているのではないかと思いました
dirリストの例://a [dir] file1 file2/b [dir]
別のデバイス:/ fileX fileY
「別のデバイス」を/ aにマウントすると、/ aディレクトリを介してこのデバイスにアクセスできますが、元の/ aはまだ存在していますが、オーバーハンドルされます。最後にマウントされたデバイスをアンマウントした後、元のディレクトリにアクセスできます。それは興味深い特性ですが、実際にはいくつかの問題を引き起こす可能性があります(現時点では私のものではありません)。
すでに提案されている原因に加えて、次の原因も考えられます。
du -md 1
でサイズを再度確認します。 hiddenフォルダーを別の場所に移動するか、別の場所にマウントして、状況を修正します。