Linux で「デバイスに空き領域がありません」エラーを修正する 3 つの方法


明確な原因のないエラーは、対処するのが最も厄介な問題です。 Linux は通常、具体的なエラー メッセージを表示しますが、これは、Linux がボールを落とす数少ないケースの 1 つです。

「デバイスに空き領域がありません」エラーが表示されても、特にドライブがいっぱいではない場合はほとんど意味がありません。このエラー メッセージが表示されるのはなぜですか?ディスク上に十分なスペースがあるにもかかわらず、新しいファイルを作成できないのはなぜですか?そして最も重要なのは、それをどうやって修正するかということです。

調べてみましょう。

ハードドライブには実際に十分なスペースがありますか?

急いで修正を見つける前に、まず問題があることを確認してください。結局のところ、実際にシステムのディスク容量が足りなくなったとしても、パニックになる必要はありません。不要なデータを削除するだけで、より多くのスペースを解放できます。

ディスク容量に関する情報を取得するための Linux システム コマンドは、du と df の 2 つです。 du コマンドはディスク領域の使用量を推定し、df コマンドはディスク上の空き領域を分析します。これらを 須藤 と組み合わせて使用​​すると、ディスク上で実際に使用可能なスペースの正確なレポートが得られます。

  1. du コマンドから始めましょう。その出力はかなり長くて面倒なので、-s フラグと -h フラグを使用します。 -s は結果を要約し、-h は人間が判読できるようにします。コマンド sudo du -sh /を入力します。/はベース ディレクトリを指します。
    1. すべてのアクセス許可が拒否されたというメッセージについては心配する必要はありません。これが、システムのすべてのサブディレクトリをトロールする方法です。ドライブのサイズによっては、すべてを再帰的に実行するため、しばらく実行したままにしておく必要がある場合があります。
      1. du はスキャンを終了すると、ディレクトリの単純なリストとそのサイズを出力します。たとえば、これは通常のディレクトリに適用された du コマンドの出力です。
      2. 次に、df を使用して、利用可能な空き領域がどのくらいあるかを確認します。 df コマンドは、マウントされたファイルシステムとその使用統計のみを表示するため、使用が非常に簡単です。もう一度、-h フラグを使用して、出力を人間が読める形式にします。

        sudo df -h .

        目的は、du および df コマンドの結果を集計することです。不一致がある場合は、ファイルやフォルダによって使用されていないにもかかわらず、自由に利用できないディスク容量があることを示しています。

        Linux で「デバイスに空き領域がありません」と表示されるのはなぜですか?

        ディスク上に十分な空き領域があるにもかかわらず、「デバイスに空き領域がありません」というエラー メッセージが表示される場合は、ハードウェアに問題があるわけではありません。エラーの正確な原因を特定するには、トラブルシューティングに少し時間がかかる場合があります。

        • 最近削除されたファイル: このエラーが表示される最も一般的な理由は、最近削除されたファイルです。プロセスがまだファイルを使用している間にファイルが削除されることがよくあり、そのファイルがすでになくなってもスペースは予約されたままになります。
        • i ノードが不足しています: もう 1 つのよくある原因は、十分な i ノード がないことです。 i ノードは Unix ファイルシステムのインデックス ページであり、ストレージ上のすべてのファイルのメタデータを保持します。ただし、inode は無制限ではないため、ストレージ容量がなくなる前に i ノードがなくなると、「デバイスに空き領域がありません」というエラーが発生する可能性があります。
        • ハード ドライブの故障: もちろん、ハード ドライブが単に故障しており、見かけ上の空き領域の多くが不良セクタによって占有されている可能性があります。システムはこれらの場所へのファイルの書き込みに失敗するため、エラーがスローされます。
        • 解決策 1: 削除されたファイルを使用してプロセスを再起動する

          「デバイスに空き領域がありません」エラーの最も考えられる原因は、プロセスが削除されたファイルをまだ使用していることです。ありがたいことに、このエラーを修正するのは簡単です。予約されたストレージを解放するには、プロセスを再起動する するだけです。

          1. 問題のあるプロセスを見つけるには、lsof および grep コマンドを使用する必要があります。 lsof コマンドを使用すると、実行中のプロセスで使用されているすべての開いているファイルのリストが表示され、grep を使用すると、削除されたファイルに選択を絞り込むことができます。そこで、「sudo lsof / |」と入力します。 grep が削除されましたここで、 / はベース ディレクトリ、 | はベース ディレクトリです。 lsof の出力を grep にリンクするためのパイプ。
            1. これで、sudo systemctl restart service_nameコマンドを使用して、影響を受けるプロセスを再起動できます。ここで、サービス名は、検索で見つかったサービスの名前です。
            2. .
              1. このようなプロセスが複数ある場合、または特定のサービスを探すのに手間をかけたくない場合は、sudo systemctl daemon-reloadコマンドを使用してそれらをすべてリセットできます。これにより、ファイルシステムの変更を考慮して、すべての依存関係が再生成されます。
              2. この後、プロセスによって保持されていたストレージ スペースが再び利用可能になり、エラーが発生することなくファイルを書き込むことができるようになります。

                解決策 2: i ノードを確認する

                各ドライブには多数の i ノードがありますが、その数は有限です。また、システムに膨大な数のファイルが散乱している場合は、ドライブのストレージ容量を使い果たす前にこの制限に達する可能性があります。このため、小さなファイルが多すぎるよりも、大きなファイルがあったほうが良いのです。

                df コマンドで -i フラグを使用すると、inode の可用性を簡単に確認できます。このように:

                sudo df -i

                これにより、ファイルシステム内に存在する i ノードの合計数と、現在使用されているノードの数が明確にわかります。システムに空き i ノードが残っていない場合、これが「デバイスに空き領域がありません」エラーの原因です。

                i ノードは最初にドライブをフォーマットするときにのみ作成されるため、さらに i ノードを生成する方法はありません。できることは、不要なファイルを削除して、今後のファイルのために i ノードを解放することだけです。

                解決策 3: 不良ブロックをマークする

                データの破損は、ハード ドライブにとって避けられない運命です。新しいドライブではこの問題は発生しませんが、古いハードディスクは徐々に「劣化」し始めます。

                これは、ファイルシステムがまだ機能していると認識しているにもかかわらず、ハードドライブの一部が使用できなくなることを意味します。これらの不良ブロックは、実際にはファイルを書き込むことができないにもかかわらず、ドライブ上の見かけ上の空き領域を誤って増大させます。これにより、オペレーティング システムがこれらの場所にデータを保存しようとしても失敗するため、「デバイスに空き領域がありません」というエラーが発生します。

                不良セクタはハードドライブの物理的な磨耗の結果であるため、この問題を解決する実際的な方法はありません。できることは、不良セクタにマークを付けて、ファイル システムから参照されないようにすることだけです。.

                実行中のドライブ内ではファイル システム チェックを実行できないため、これを行うには ライブCD から起動する必要があります。それが完了したら、次のコマンドを使用するだけです。

                sudo fsck -vcck /dev/sda

                これにより、/dev/sda が修復するドライブのパスに置き換えられます。これにより、ドライブ上のすべての不良ブロックが自動的に検出され、使用不可としてマークされます。ただし、追加のストレージ容量が得られるわけではないため、不要なファイルをクリーンアップしてドライブのスペースを空ける準備をしてください。

                「デバイスに空き領域がありません」エラーを修正する最善の方法は何ですか?

                Ubuntu またはその他の Linux ディストリビューションで「デバイスに空き領域がありません」エラーが表示される通常の理由は、削除されたファイルが実行中のプロセスでまだ使用されているためです。これにより、ファイルによって占有されていたストレージが予約され、他の操作がそのスペースにデータを書き込むことができなくなります。

                この問題の解決も、問題のプロセスを再起動するだけなので最も簡単です。ただし、エラーの他の原因を解決するのはそれほど簡単ではありません。

                ドライブが不良データ ブロックに悩まされているか、i ノードが不足しているかにかかわらず、これらの問題を解決する直接的な方法はありません。新しいデータを書き込むためのスペースを確保するには、既存のファイルを削除する必要があります。

                .

                関連記事:


                30.08.2022