現在位置: ホーム / みらくるブログ / Linux OS の障害対処-2

Linux OS の障害対処-2

今日は、inode の枯渇についてです。 ディスク容量はあるのに、ファイルの作成ができない、なんて経験ありませんか? 私はあります。わけが分からなくて、システムが止まったままで大変な思いをしました。

お疲れさまです。

第2日目ですね。

前回は、カーネルパニックについて一例を紹介しました。

今日は、inode の枯渇についてです。
ディスク容量はあるのに、ファイルの作成ができない、なんて経験ありませんか?
私はあります。わけが分からなくて、システムが止まったままで大変な思いをしました。

df コマンドで確認しても、以下のように容量にはまだ余裕があります。

でも、ファイルを保存しようとすると、

ここで、df -i と打ってみると、

のように、inode が枯渇しています。
管理領域ですから、ファイルの大きさとは関係ありません。
実際、この状態を、以下の要領で再現しました。

CentOS-7-x86_64-Minimal-1511.isoをダウンロード
ハードディスクは4GB程度確保します。
次のスクリプトを実行します。
コピペするとファイルができますよ。

cat > inode_use.sh << "EOF"
#!/bin/bash

DIR="INODE_USE"
DIR_T="./TMP*"

if [ -d $DIR ];then
    echo "remove dir $DIR"
    rm -rf $DIR
    echo "make dir $DIR"
    mkdir $DIR
else
    echo "make dir $DIR"
    mkdir $DIR
fi

FILE_PRE="test_"
END=1000000

function inode_use(){
    for i in $(seq 1 $END)
    do
        touch $FILE_PRE$i.txt
    done
}

pushd $DIR
    mkdir TMP{01..20}
    for a in $DIR_T
    do
        pushd $a
            inode_use
            df -i
        popd
    done
popd
EOF

これを実行すると、ディレクトリを20作成し、それぞれに1000000の空ファイルを作成していきます。
ディレクトリを移る時に、df -i を実行します。
だんだん inode が枯渇していくのがわかるという寸法です。
20ディレクトリに至ることなく、途中で inode の使用率は 100% になりました。

そして、df (disk free) で確認すると容量は残っているのに、ファイルは作成できないという状態になりました。

これに対処するにはファイルを削除することです。(直すという表現から、対処に改めました。)

運良く試験環境のため、ディレクトリ毎削除しても問題ありません。

# rm -rf ./INODE_USE

ファイル保存ができるようになりました。

お疲れさまです、第2日目の終了です。ニックネーム たいちょう でした。

次回もお楽しみに。

 

タグ: