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 での不完全なテキスト表示の解決策

推薦する

Vue で変数式セレクターを実装する方法

目次HTML構造の定義入力タグのバインディング属性入力タグはキーダウンイベントをリッスンしますli ...

HTML テーブルインライン形式の詳細な説明

インライン形式<colgroup>...</colgroup>属性名 属性値...

HTML+CSSプロジェクト開発経験概要(推奨)

ここ数日ブログを更新していませんでした。簡単な HTML+CSS プロジェクトを終えたところです。数...

レンダリング関数と JSX の詳細

目次1. 基本2. ノード、ツリー、仮想DOM 1. 仮想DOM 3. createElementパ...

Docker のホスト間コンテナ通信オーバーレイ実装プロセスの詳細な説明

サーバーも 2 つあります。準備:コンテナのホスト名を設定する consul: kv タイプのストレ...

VMware14 に CentOS 7 をインストールするグラフィック チュートリアル

CentOS の紹介CentOS は、Red Hat Linux が提供する無料で利用できるソースコ...

MySQL で重複レコードを見つけて削除する方法

みなさんこんにちは。私は技術の話ばかりして髪を切らない先生のトニーです。何らかの歴史的な理由や誤操作...

HTML 選択タグにおける単一選択と複数選択の詳細な説明

select 要素は、単一選択または複数選択のメニューを作成します。フォームが送信されると、ブラウザ...

MySQLにおけるrow_numberの実装プロセス

1. 背景一般的に、データ ウェアハウス環境では、row_number 関数を使用して特定のディメン...

経験豊富な人が、プロフェッショナルで標準化されたMySQL起動スクリプトの開発方法を紹介します。

シェル スクリプト言語は、すべてのプログラミング言語の中で最も単純な言語であるため、資格のある Li...

MySQL で 2 つのセットの交差/差/和を取得する方法

MySQL の一般的なシナリオ: 2 つのデータ セットの交差と差を取得するステップ1. 2つのコレ...

2008 年の Web デザインにおける 10 の経験

<br />インターネットは絶えず変化しており、BusinessWeek.com は専門...

Linuxは、単一のIPをバインドするためにデュアルネットワークカードを実装するためにボンドを使用します。サンプルコード

ネットワークの高可用性を実現するには、複数のネットワーク カードを仮想ネットワーク カードにバインド...

Centos7 での Mysql5.7.19 の詳細なインストールチュートリアル

1. ダウンロード公式サイトからmysql-5.7.19-linux-glibc2.12-x86_6...

モバイルデバイスにおける適応レイアウトの問題に関する簡単な説明 (レスポンシブ、rem/em、Js ダイナミクス)

3G の普及により、携帯電話を使ってインターネットにアクセスする人が増えています。モバイル デバイ...