GNU/Linux >> Linux の 問題 >  >> Linux

inode の使用を解放する方法は?

私の解決策:

これが i ノードの問題であるかどうかを確認してください:

df -ih

i ノード数が多いルート フォルダを探してください:

for i in /*; do echo $i; find $i |wc -l; done

特定のフォルダーを検索してみてください:

for i in /src/*; do echo $i; find $i |wc -l; done

これが Linux ヘッダーの場合は、次の方法で最も古いものを削除してみてください:

sudo apt-get autoremove linux-headers-3.13.0-24

個人的には、それらをマウントされたフォルダーに移動し (最後のコマンドが失敗したため)、最新のものを次のようにインストールしました:

sudo apt-get autoremove -f

これで問題は解決しました。


私の状況は、iノードが不足していて、できる限りすべてをすでに削除していたというものでした。

$ df -i
Filesystem     Inodes  IUsed  IFree IUse% Mounted on
/dev/sda1      942080 507361     11  100% /

私はubuntu 12.04LTSを使用していますが、パッケージが見つからないためにaptが壊れていたため、約400,000のinodeを占有していた古いLinuxカーネルを削除できませんでした。また、inode が不足していたため、新しいパッケージをインストールできず、立ち往生していました。

約 10,000 の inode を解放するために、いくつかの古い Linux カーネルを手動で削除することになりました

$ sudo rm -rf /usr/src/linux-headers-3.2.0-2*

不足しているパッケージをインストールして apt を修正するには、これで十分でした

$ sudo apt-get install linux-headers-3.2.0-76-generic-pae

そして、残りの古い Linux カーネルを apt で削除します

$ sudo apt-get autoremove

今はずっと良くなっています

$ df -i
Filesystem     Inodes  IUsed  IFree IUse% Mounted on
/dev/sda1      942080 507361 434719   54% /

ディスクが満杯でない場合でも、ディスクが多数の inode を使用するのは非常に簡単です。

i ノードはファイルに割り当てられるため、膨大な数のファイルがあり、それぞれがすべて 1 バイトである場合、ディスクがなくなるずっと前に i ノードが不足してしまいます。

ファイルに複数のハード リンクがある場合、ファイルを削除しても inode 数が減らない可能性もあります。私が言ったように、inode はファイルに属しており、そうではありません。 ディレクトリエントリ。ファイルに 2 つのディレクトリ エントリがリンクされている場合、1 つを削除しても inode は解放されません。

さらに、ディレクトリ エントリを削除できますが、実行中のプロセスがまだファイルを開いている場合、inode は解放されません。

私の最初のアドバイスは、できる限りすべてのファイルを削除してから、ボックスを再起動して、ファイルを開いたままにするプロセスが残っていないことを確認することです.

それでも問題が解決しない場合は、お知らせください。

ところで、多数のファイルを含むディレクトリを探している場合は、次のスクリプトが役立ちます:

#!/bin/bash

# count_em - count files in all subdirectories under current directory.
echo 'echo $(ls -a "$1" | wc -l) $1' >/tmp/count_em_$$
chmod 700 /tmp/count_em_$$
find . -mount -type d -print0 | xargs -0 -n1 /tmp/count_em_$$ | sort -n
rm -f /tmp/count_em_$$

非常に不運な場合は、すべての inode の約 100% を使用しており、scipt を作成できません。これは df -ih で確認できます。 .

次に、この bash コマンドが役立ちます:

sudo find . -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n

はい、これには時間がかかりますが、ファイルが最も多いディレクトリを見つけることができます。


Linux
  1. 空きディスク容量を見つけてディスク使用量を分析する方法は??

  2. Linux – Linuxは、iノードに基づかないファイルシステムにiノード番号をどのように割り当てますか?

  3. cPanelアカウントでiノードの使用状況を確認する方法

  1. Linuxでファイルの名前を変更する方法

  2. sar、ps、および free を使用して Linux でメモリ使用量を計算する方法

  3. vmstat でメモリ使用率を取得するには?

  1. Linuxでファイルを見つける方法

  2. Linuxで複数のファイルを圧縮する方法

  3. CPU使用率を取得する方法