Linuxでファイルを削除してもスペースが解放されない問題の対処方法

Linuxでファイルを削除してもスペースが解放されない問題の対処方法

問題の背景

業務システムのサーバ監視システムからディスク使用率が90%に達したという早期警告通知が来たので、サーバにログインして、より大きなログファイルを探して全て削除しました(ここに落とし穴がありました)。ディスク容量は多少は解放されましたが、その時の私の不注意で、見つけて削除したファイルの容量が完全に解放されたか確認していませんでした。数日後、サーバーに再び警告が出ました。ログがなぜこんなに早く大きくなったのか不思議に思いました。調査した結果、最後のファイル削除操作後に大きなファイル領域が解放されなかったことが原因であることがわかりました。

問題の修復と解決

多くのスペースを占めるデータファイルを見つける

#ディスク容量の使用状況を確認する $ df -h
#まず、/tmp ディレクトリ内で大きなスペースを占めるファイルを照会します $ du -sh /tmp/*|sort -nr|head -3
#/homeディレクトリ内で大量のスペースを占めているファイルを照会する $ du -sh /home/*|sort -nr|head -3
# ファイルを見つけたら削除します。削除後、df -h を使用して、ファイルが解放されたかどうかを確認します。

ファイルを検索するときに、/tmp/* ディレクトリ内のファイルが最初に検索される理由を説明します。

Linux システムの削除ポリシー: Linux にはごみ箱機能がないため、サービスはまず削除するファイルをシステムの /tmp ディレクトリに移動し、その後 /tmp ディレクトリ内のデータを定期的に消去します。

多くのサーバーでは、システムのインストール時に /tmp 用の個別のパーティションがないため、/tmp ディレクトリ内のデータがスペースの大部分を占めている可能性があります。まず、/tmp ディレクトリ内のファイルをクリアして、スペースを解放することができます。

/home ディレクトリスペース内の dubbo サービス ログ ファイルを削除すると、スペースを解放せずにファイルを削除するという問題が発生しました。

ファイルを削除してもスペースは解放されない

通常、ファイルを削除した後にスペースが解放されない状況は発生しません。ただし、ファイルがプロセスによってロックされている場合や、プロセスがファイルにデータを書き込み続けている場合は、発生する可能性があります。 Linux でのファイルの保存メカニズムと保存構造を理解していれば、この問題も理解できるでしょう。

Linux システム内のファイルは、ポインター部分とデータ部分の 2 つの部分に分かれています。

  • ポインタ部分: ファイルシステムのメタデータ内に存在します。rm コマンドを実行してデータを削除すると、メタデータからポインタがクリアされます。
  • データ部分: データはディスクに直接保存されます。メタデータからポインタがクリアされると、データ部分が占める領域が上書きされ、新しいコンテンツが書き込まれるようになります。

dubbo ログ ファイルを削除してもスペースが解放されない理由は、dubbo プロセスがまだこのファイルにデータを書き込んでいるからです。ファイルが削除されても、ポインタはメタデータからクリアされないため、ログ ファイルは依然としてスペースを占有します。

そのようなファイルを見つける方法

lsof コマンドを使用すると、削除されたがまだプログラムによって占有されているファイルのリストを取得できます。

lsof | grep 削除

このスペースを解放する方法

この種の問題を解決してスペースを解放する方法は多数あります。占有されているプロセスを再起動したり、オペレーティング システムを再起動したり、コマンドを使用したりします。最初の 2 つの方法は非本番環境では最も便利ですが、本番環境では、実際には非常に単純なコマンドを使用してみてください。

エコー " " >/home/dubbo/log/xxx.log

この方法では、プロセスの継続的な実行に影響を与えることなく、占有されているディスク領域が解放されます。

これで、Linux でファイルを削除したが、空き領域が残っている問題の対処法に関する記事は終了です。空き領域がない Linux のファイル削除の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Linuxファイル削除後にスペースが解放されない問題の詳しい説明
  • Linux ファイル管理コマンド例の分析 [権限、作成、削除、コピー、移動、検索など]
  • Linux のリンク解除機能とファイルの削除方法
  • Linux は MySQL データベースのスケジュールされたバックアップを実装し、30 日以上前のバックアップ ファイルを削除します。
  • Linux は定期的に MySQL データベースをバックアップし、以前のバックアップ ファイルを削除します (推奨)
  • Linux サーバーでフォルダー、ファイル、解凍コマンドを削除する方法
  • Linux で大きなファイルの内容を消去または削除する 5 つの方法
  • Linux でファイルを削除するさまざまな方法の効率の比較

<<:  絵文字と問題解決のためのMySQL/Javaサーバーサポートの詳細な説明

>>:  el-tree での不完全なテキスト表示の解決策

推薦する

MySQLの3値ロジックとNULLの詳細な説明

目次NULLとは何か2種類のNULLなぜ「= NULL」ではなく「IS NULL」と書く必要があるの...

Squid を使用して http および https 用のプロキシ サーバーを構築する方法

nginx を導入した際に、フォワードプロキシの設定も nginx を使っていました。しかし、htt...

MySQL のタイムスタンプと日付時刻のタイムゾーンの問題によって生じる DTS の落とし穴の詳細な説明

目次MySQL で現在の時刻を表現するにはどうすればよいでしょうか?結論は確認するピットMySQL ...

MySQLサーバのスレッド数を表示する方法の詳細な説明

この記事では、例を使用して、MySQL サーバーのスレッド数を表示する方法について説明します。ご参考...

Nginx リクエスト制限の設定方法

Nginx は、多くの優れた機能を備えた強力で高性能な Web およびリバース プロキシ サーバーで...

Linuxサーバ侵入緊急対応記録(概要)

最近、お客様から支援の依頼を受けました。管理されている通信コンピュータ ルームから、サーバーの 1 ...

js 学習ノート: class、super、extends キーワード

目次序文1. es6の前にオブジェクトを作成する2. es6 後のクラス宣言3. クラスの継承4. ...

太陽系の惑星のアニメーション効果を実現するHTML+CSS3コード

太陽系の 8 つの惑星(衛星を除く)のアニメーションを作成します。すべての惑星は太陽の周りを回ってい...

ウェブページ入力ボックスのスタイルトリガー効果

<br />この例では、主に onblur と onFocus という 2 つのパラメー...

XHTML: フレーム構造タグ

フレーム構造タグ <frameset></frameset>フレームを使用す...

安全な構成のためにDockerでTLSを有効にする手順

序文以前、Docker の 2375 Remote API を有効にしていました。会社のセキュリティ...

iframe を使用して Web ページに他の Web ページを埋め込む方法

iframe の使い方:コードをコピーコードは次のとおりです。 <DIV align=cent...

MySQL 5.7.18のインストール方法とMySQLサービスの起動手順の詳細な説明

MySQL は非常に強力なリレーショナル データベースです。しかし、初心者の中には、インストールや設...

HTML の 2 つのタブ ナビゲーション間の競合の解決方法

まず問題の説明から始めましょう:同じページで、1 つのタブに float:left が必要で、もう ...

MacにMySQLをインストールするときに忘れたパスワードを変更する方法

1. MacにMySQLデータベースをインストールする1. MySQLデータベースをダウンロードする...