![なぜ[df]はディスクがいっぱいだと言いますが、root [du]は5TBのうち約500GBしか満たしていないと言いますか?](https://linux33.com/image/199091/%E3%81%AA%E3%81%9C%5Bdf%5D%E3%81%AF%E3%83%87%E3%82%A3%E3%82%B9%E3%82%AF%E3%81%8C%E3%81%84%E3%81%A3%E3%81%B1%E3%81%84%E3%81%A0%E3%81%A8%E8%A8%80%E3%81%84%E3%81%BE%E3%81%99%E3%81%8C%E3%80%81root%20%5Bdu%5D%E3%81%AF5TB%E3%81%AE%E3%81%86%E3%81%A1%E7%B4%84500GB%E3%81%97%E3%81%8B%E6%BA%80%E3%81%9F%E3%81%97%E3%81%A6%E3%81%84%E3%81%AA%E3%81%84%E3%81%A8%E8%A8%80%E3%81%84%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F.png)
FUSEファイルシステムには新しい5TBディスクがありますが、デフォルトでは空のようですが、dfはそうではありません。ディスク上のファイルシステムは、mergerfs
4つの5TB Seagate 5400rpm外付けハードドライブで構成され、すべて1つのパーティションにext4
フォーマットされていますfdisk
。ルートに入り、duで確認してみると約500GBのスペースが使われたそうです。
pi@raspberrypi:~ $ df -h /mnt/hdd/disk4
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 4.6T 4.3T 393M 100% /mnt/hdd/disk4
root@raspberrypi:~# du -sh /mnt/hdd/disk4
464G /mnt/hdd/disk4
誰でもこの問題を解決するのに役立ちますか?
答え1
これは私が以前に経験したことですが、私の経験では極端なケースです。これは通常、ディスクから削除されたファイルがあるため報告されませんが、du
実行中のプロセスのどこかにまだ開いている場合に発生するため、df
使用されるスペースを考慮してください。最も一般的な「犯人」は、ログロテートがロギングプロセスを正しく再起動しないため、次のような結果になります。
- ディスクに表示されるログファイルは、書き込まれたり書き込まれたりしない場合があります。
- ログ書き込みプロセスはアクティブログファイル(例:)
app.log
と前日のログファイル(たとえば2022-01-03-app.log
、今日が2022-01-04の場合)に(おそらく)書き込まれていますが、前日のファイルはありますls
(例2022-01-03-app.log.gz
:)。 - 解凍すると、前日のログファイルは多くのスペース(数十GB)を占めます。
この特定の例では、logrotate
デーモンは真夜中に前日のログファイルを回転させ、前日のタイムスタンプを提供しますが、プロセスに記録しても実際にログの再起動をトリガーしません。前日のログファイルを圧縮した後、圧縮されていないファイルを削除しますが、書き込み中にファイルハンドルがまだ開いているため、スペースがすでに占有されているとdf
見なされます。
この問題は通常、logrotate構成ファイルに(SIGHUP)タイプディレクティブを追加することで解決できますが、まれにHUP
HUPに正しく応答しないため、問題のあるプロセスを実際に再起動する必要があります。
このような場合、問題のあるプロセスを見つけて再起動すると、報告された使用スペースがdf
突然急激に減少し、df
出力がdu
一致します。