Linuxサーバーの容量不足?😱 最大のファイルを見つけて削除する超簡単な解決策

こんにちは!今日は、Linuxサーバーを運用していると誰もが一度は経験する「ディスク容量不足」の問題を解決する方法をご紹介します。突然サービスが停止したり、サーバーに接続できなくなったりする恐ろしい状況!😨 ほとんどの場合、ディスクスペースが満杯になっていることが原因です。

こんな時、応急処置として最も大きなファイルを見つけて削除すれば、緊急事態を乗り切ることができます。今からその方法を順を追って説明しますね!

1段階: ファイルシステム使用量を確認する 📊

まず、どのディスクに問題があるのかを把握する必要があります。dfコマンドを使用すると、現在のサーバーのファイルシステム全体の利用状況を一目で確認できます。

  1. 問題が発生したサーバーに接続します。(例: node01)

ssh node01

  1. -hオプション(human-readable)を付けて、人間が見やすい単位(GB, MB)で使用量を確認します。[実行結果例]結果をよく見てください。Use%列が90%をはるかに超えている箇所が、私たちの目標地点です。上記の例では、ルート(`/*`)ファイルシステムの使用量が98%に達していますね。
  2. ⚠️ 重要! 以降のステップで使用するパスは、このMounted on列にあるパスです。上記の例では `/` になりますね?ご自身の環境に合ったパスを必ず覚えておいてください。この記事では便宜上、/path/to/mountpoint と表記します。

`

df -h

`

2段階: 最も大きなファイルを見つけ出す (削除はまだ!) 🔍

次に、容量が満杯になったファイルシステム(`/*` または `/data` など)で、どのファイルが最も多くのスペースを占めているのかを探す番です。

削除から始めると危険です! 🚨 どのようなファイルなのかをまず確認する習慣が重要です。以下のコマンドは、最も大きなファイルのサイズとパスのみを表示します。

find /path/to/mountpoint -type f -printf '%s %p
' | sort -nr | head -n 1

コマンドが少し長くて複雑に見えますか?一つずつ分解して説明しますね。

  • find /path/to/mountpoint -type f -printf ‘%s %p

‘:

  • find: 特定のパスでファイルを検索します。
  • -type f: ディレクトリではなく「ファイル」のみを探します。
  • -printf ‘%s %p

‘: 見つかったファイルの情報を特定の形式で出力します。%sはファイルサイズ(size)、%pはファイルパス(path)を意味します。つまり、[ファイルサイズ] [ファイルパス]の形式で出力されます。

  • | (パイプ): 左側のコマンドの結果を右側のコマンドの入力として渡す接続役です。
  • sort -nr:
  • sort: 受け取った内容をソートします。
  • -n: 数値(numeric)基準でソートします。
  • -r: 逆順(reverse)、つまり降順でソートします。最も大きな数字が一番上に来ますね?
  • head -n 1: 受け取った内容の最初の1行だけを表示します。

結果として、このコマンドは「指定したパスで最も大きなファイルを一つ見つけて、サイズと一緒に表示して!」という意味になります。

3段階: 確認後、最も大きなファイルを削除する 🗑️

2段階で見つけたファイルが、不要なログファイルやバックアップファイルのように削除しても安全なファイルだと確信が持てたら、いよいよ削除を実行します。

以下のコマンドは、2段階のコマンドに削除ロジックを追加したものです。

find /path/to/mountpoint -type f -printf '%s %p
' | sort -nr | head -n 1 | awk '{print $2}' | xargs rm

新しく追加された部分だけ見てみましょう。

  • awk ‘{print $2}’:
  • awk: 強力なテキスト処理ツールです。
  • ‘{print $2}’: 入力された内容から2番目の列(column)のみを出力するという意味です。[ファイルサイズ] [ファイルパス]形式の入力からファイルパスだけを抜き出す役割をします。
  • xargs rm:
  • xargs: 前のコマンドから渡された結果(ファイルパス)をrmコマンドの引数(argument)として渡します。
  • rm: ファイルを削除するコマンドです。

つまり、最も大きなファイルのパスを見つけて、rmコマンドで削除する過程が自動的に実行されます。

💥 注意! 💥 このコマンドは確認なしにファイルを永久的に削除します。システム運用に必須のファイルを削除すると、サーバーが起動しなくなる可能性もあります。削除する前に必ずどのようなファイルなのか、消しても良いファイルなのかを再度確認してください!

4段階: スペース確保を確認する ✅

ファイルを正常に削除できたら、本当にディスクスペースが確保されたのか確認する必要がありますよね?1段階で使用したdf -hコマンドを再度実行してみましょう。

df -h /path/to/mountpoint

今回は、ファイルシステム全体を見る必要はなく、私たちが作業した特定のパスだけを指定して確認すると、より便利です。

[実行結果例]

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        50G   42G  7.5G  85% /

Use%が98%から85%にぐっと減っているのがわかります。成功です!🎉 これでサーバーは再び正常に動作できるスペースを確保しました。


今日は、Linuxサーバーのディスク容量が満杯になったときに、最も大きなファイルを見つけて削除する方法を段階的に学びました。この方法は緊急時には非常に役立ちますが、根本的な解決策ではないかもしれません。定期的に不要なログを整理したり、ディスク容量を増設するなどの長期的な計画を立てることがより重要です!😊


Comments

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です