明確な原因のないエラーは、対処するのが最も厄介な問題です。通常、Linuxのエラー メッセージは具体的なものですが、これはボールを落とす数少ないケースの 1 つです。
特にドライブがいっぱいになっていない場合は、「デバイスエラーに場所がありません」というエラーが発生しても、ほとんど説明できません。このエラー メッセージが表示されるのはなぜですか? ディスクに十分なスペースがあるにもかかわらず、新しいファイルを作成できないのはなぜですか? そして最も重要なことは、それをどのように修正するかです。
確認してみましょう。
あなたのハードドライブには十分なスペース(Hard Drive Actually Have Enough Space)がありますか?
急いで修正を見つける前に、まず問題があることを確認してください。システムのディスク容量が実際になくなった場合でも、慌てる必要はありません。不要なデータを削除するだけで、より多くのスペースを解放できます。
ディスク容量に関する情報を取得するためのLinuxシステム コマンドには、du と df の2 つがあります。du コマンドはディスク容量の使用量を推定し、df コマンドはディスク上の空き容量を分析します。それらをsudo(sudo)と組み合わせて使用すると、ディスク上で実際に使用可能なスペースの正確なレポートが得られます。
- du コマンドから始めましょう。その出力はかなり長くて面倒なので、-s フラグと -h フラグを使用します。-s は結果を要約し、 -h は人間が判読できるようにします。したがって、コマンド sudo du -sh / を入力します。ここで、/ はベース ディレクトリを指します。
- すべての許可拒否メッセージについて心配する必要はありません。これが、システムのすべてのサブディレクトリをトロールする方法です。ドライブのサイズによっては、すべてを再帰的に処理するため、しばらく実行したままにしておく必要がある場合があります。
- du がスキャンを終了すると、ディレクトリの単純なリストとそのサイズが出力されます。たとえば、これは通常のディレクトリに適用された du コマンドの出力です。
次に、df を使用して、利用可能な空き容量を確認します。df コマンドは、マウントされたファイルシステムとその使用状況の統計のみを表示するため、はるかに簡単に使用できます。ここでも -h フラグを使用して、出力を人間が読めるようにします。
sudo df -h
アイデアは、du および df コマンドの結果を集計することです。不一致は、ファイルやフォルダーで使用されていないにもかかわらず、自由に利用できないディスク容量を示しています。
Linux(Does Linux Show)で「デバイスに空き容量
が(Space Left)ありません」と表示されるのはなぜですか?
ディスクに十分な空き容量があるにもかかわらず、「デバイスに空き容量がありません」というエラー メッセージが表示される場合は、ハードウェアに問題があるわけではありません。エラーの正確な原因を突き止めるには、多少のトラブルシューティングが必要になる場合があります。
- 最近削除されたファイル: このエラーが表示される最も一般的な理由は、最近削除されたファイルです。多くの場合、プロセスがまだファイルを使用している間にファイルが削除され、ファイルが既になくなっていてもスペースが予約されたままになります。
- i ノード(Enough Inodes)が不十分: もう 1 つのよくある原因は、十分なi ノード(inodes)がないことです。inode はUnix(Unix)ファイルシステムのインデックス ページであり、ストレージ上のすべてのファイルのメタデータを保持します。ただし、inode は無制限ではなく、ストレージ容量が不足する前に inode が不足すると、「デバイスに空き容量がありません」というエラーが発生する可能性があります。
- ハード(Hard)ドライブの故障: もちろん、ハードドライブが単に故障している可能性があり、明らかな空き領域の多くが不良セクタによって占められています。システムはこれらの場所へのファイルの書き込みに失敗するため、エラーがスローされます。
修正 1:削除されたファイルを使用してプロセスを再起動する(Using Deleted Files)
「デバイスにスペースが残っていません」というエラーの最も可能性の高い原因は、削除されたファイルをまだ使用しているプロセスです。ありがたいことに、このエラーを修正するのは簡単です。プロセスを再起動(restart the process)して、予約済みストレージを解放
するだけです。
- 問題のあるプロセスを見つけるには、lsof および grep コマンドを使用する必要があります。lsof コマンドは、実行中のプロセスによって使用されているすべての開いているファイルのリストを提供し、grep は選択を削除されたファイルに絞り込むことができます。sudo lsof / | と入力します。/ はベース ディレクトリ、| は削除された grep です。lsof の出力を grep にリンクするためのパイプ。
- これで、sudo systemctl restart service_name コマンドを使用して、影響を受けるプロセスを再起動できます。サービス名は、検索で見つかったサービスの名前です。
- このようなプロセスが複数ある場合、または特定のサービスを探すのに煩わされたくない場合は、sudo systemctl daemon-reload コマンドを使用してそれらをすべてリセットできます。これにより、ファイルシステムの変更を考慮して、すべての依存関係が再生成されます。
この後、プロセスによって保持されていたストレージスペースが再び利用可能になり、エラーが発生することなくファイルを書き込むことができるようになります.
修正 2: inode を確認する
各ドライブには多数の inode がありますが、有限です。また、システムに信じられないほどの数のファイルが散らばっている場合、ドライブのストレージ容量を使い果たす前にこの制限に達する可能性があります. これが、小さなファイルが多すぎるよりも、大きなファイルを持つほうがよい理由です。
df コマンドで -i フラグを使用すると、inode の可用性を簡単に確認できます。このような:
sudo df -i
これにより、ファイルシステムに存在する inode の総数と、現在使用中の量が明確にわかります。システムに空き i ノードが残っていない場合、これが「デバイスにスペースが残っていません」というエラーの原因です。
i ノードは最初にドライブをフォーマットしたときにのみ作成されるため、さらに i ノードを生成する方法はありません。できることは、不要なファイルを削除して、将来のファイルのために inode を解放することだけです。
修正 3: 不良ブロックをマークする
データ(Data)の破損は、ハード ドライブの避けられない宿命です。新しいドライブではこの問題は発生しませんが、古いハードディスクは徐々に「不良」になり始めます。
これが意味することは、ファイルシステムではまだ機能していると見なされていても、ハード ドライブの一部が使用できなくなるということです。これらの不良ブロックは、実際にはファイルを書き込むことができない場合でも、ドライブ上の見かけの空き領域を誤って膨らませます。これにより、オペレーティング システムがこれらの場所にデータを保存しようとして失敗するため、「デバイスに空き領域がありません」というエラーが発生します。
不良セクタはハード ドライブの物理的な摩耗の結果であるため、この問題を修正する実際の方法はありません。あなたができる唯一のことは、不良セクタをマークして、ファイル システムによって参照されないようにすることです。
これを行うには、実行中のドライブ内でファイル システム チェック(File System Check)を実行できないため、Live CDから起動する必要があります。それができたら、次のコマンドを使用します。
sudo fsck -vcck /dev/sda
これにより、/dev/sda が、修復するドライブのパスに置き換えられます。これにより、ドライブ上のすべての不良ブロックが自動的に検出され、使用不可としてマークされます。ただし、追加のストレージ容量は得られないため、不要なファイルをクリーンアップしてドライブのスペースを解放する準備をしてください.
「デバイスに空き容量がありません」エラーを修正する最善の方法は何ですか?
Ubuntuまたはその他のLinuxディストリビューションで「デバイスにスペースが残っていません」というエラーが表示される通常の理由は、実行中のプロセスによってまだ使用されている削除されたファイルです。これにより、ファイルが占有していたストレージが予約され、他の操作がそのスペースにデータを書き込むことができなくなります。
問題のプロセスを再起動するだけでよいため、この問題の修正も最も簡単です。ただし、エラーのその他の原因は簡単には解決できません。
ドライブが不良データ ブロックに悩まされているか、inode が不足しているかにかかわらず、これらの問題を直接修正する方法はありません。新しいデータを書き込むための領域を確保するには、既存のファイルを削除する必要があります。
Top 3 Ways to Fix “No Space Left on Device” Error in Linux
Errors without a clear causе are the most irrіtating problems to deal with. And whіle Linux is usually specific in its error messages, this is one of the few times when it dropѕ the ball.
Getting a “No place left on device error” explains very little, especially if your drive is far from full. Why is this error message showing up? Why can’t you create new files despite having sufficient space on the disk? And most importantly, how do you fix it?
Let’s find out.
Does Your Hard Drive Actually Have Enough Space?
Before you rush to find a fix, make sure there is a problem, to begin with. After all, if disk space has actually run out on your system, there is no need to panic. You can just remove unnecessary data to free up more space.
There are two Linux system commands for getting information about disk space – du and df. The du command estimates the disk space usage, while the df command analyzes the free space present on the disk. Using them in conjunction with sudo gives you an accurate report of how much space is actually available on the disk.
- Let’s start with the du command. Its output can be rather long and cumbersome to go through, so we will use the -s and -h flags. -s summarizes the results, while -h ensures it is human readable. So enter the command sudo du -sh / where / points to the base directory.
- Don’t worry about all the permission denied messages – that’s how it trawls through all subdirectories of the system. Depending on the size of the drive you may have to leave it running for a while, as it recursively goes through everything.
- When du finishes scanning, it will output a simple list of directories alongside their sizes. For example, this is the output of the du command applied to an ordinary directory.
Now we will use df to see how much free space is available. The df command is much simpler to use since it only shows the mounted filesystems and their usage statistics. Once again, we will use the -h flag to make the output human readable.
sudo df -h
The idea is to tally the results of the du and df commands. Any discrepancy points to disk space that is not freely available despite not being used by any files or folders.
Why Does Linux Show “No Space Left on Device”?
If you are seeing the “No Space Left on Device” error message despite having sufficient free space on your disk, it’s not the hardware that’s at fault. Figuring out the exact cause for the error can take a bit of troubleshooting.
- Recently Deleted File: The most common reason for seeing this error is a recently deleted file. Often a file is deleted while a process is still using it, keeping the space reserved even though the file is already gone.
- Not Enough Inodes: Another frequent cause is not having enough inodes. Inodes are the index pages of a Unix filesystem, holding the metadata of every file on storage. However, inodes aren’t unlimited, and running out of inodes before the storage space can give you the “No space left on device” error.
- Failing Hard Drive: Then of course there is the possibility that the hard drive is simply failing, and much of the apparent free space is taken up by bad sectors. Since the system fails to write any files to these locations, it throws an error.
Fix 1: Restart Processes Using Deleted Files
The most probable cause of the “No space left on device” error is a process still using a deleted file. Thankfully, fixing this error is easy. You just need to restart the process to free up the reserved storage.
- To find the problematic process, you need to use the lsof and grep commands. The lsof command will give you a list of all open files being used by running processes, and grep can narrow down the selection to the ones that are deleted. So enter sudo lsof / | grep deleted where / is the base directory and | a pipe for linking lsof’s output to grep.
- Now you can restart the affected process with the sudo systemctl restart service_name command, where the service name is the name of the service that turned up in the search.
- If there are multiple processes like this or you just don’t want to bother with finding specific services, you can just reset them all with the sudo systemctl daemon-reload command. This regenerates all dependencies, taking any changes in the filesystem into account.
After this the storage space being held up by the process should be available again, allowing you to write files without running into any errors.
Fix 2: Check Inodes
While each drive has a large number of inodes, it is finite. And if your system is littered with an incredible number of files, it is possible to reach this limit before exhausting the storage capacity of the drive. This is why it’s better to have large files rather than too many small ones.
You can easily check the availability of inodes by using the -i flag with the df command. Like this:
sudo df -i
This will clearly tell the total number of inodes present in the filesystem, along with the amount currently in use. If there are no free inodes left on your system, this is the source of the “No space left on device” error.
As inodes are only created upon first formatting the drive, there is no way to generate more inodes. All you can do is delete any unnecessary files to free up inodes for future files.
Fix 3: Mark Bad Blocks
Data corruption is the inevitable fate of any hard drive. While a new drive will not run into this issue, older hard disks will gradually start going “bad”.
What this means is that portions of the hard drive are rendered unusable, even though the filesystem still considers them functional. These bad blocks falsely inflate the apparent free space on the drive, when in truth no files can be written to them. This leads to a “No space left on device” error, as the operating system tries and fails to store any data on these locations.
There is no real way to fix this issue, as bad sectors are a result of the physical wear and tear of a hard drive. The only thing you can do is mark the bad sectors so that they are no longer referenced by the file system.
Doing this requires you to boot from a Live CD, as you cannot perform a File System Check within a running drive. Once you do that, just use the following command:
sudo fsck -vcck /dev/sda
This replaces the /dev/sda with the path of the drive you want to repair. This will automatically detect all bad blocks on the drive and mark them as unusable. It won’t give you any extra storage capacity, however, so be prepared to clean up some useless files to free up space on the drive.
What Is the Best Way to Fix the “No Space Left on Device” Error?
The usual reason for seeing a “No space left on device” error on Ubuntu or any other Linux distro is a deleted file still being used by a running process. This reserves the storage that was occupied by the file, preventing other operations from writing data to that space.
Fixing this problem is also the easiest, as all you need to do is to restart the process in question. The other causes of the error, however, are not that easy to solve.
Whether your drive is plagued by bad data blocks or has run out of inodes, there is no direct way to fix these issues. You must delete existing files to make room for new data to be written.