inodeについて
はじめに
こんにちは、n.tです。
今回はinodeについて記事を
書いていきたいと思います。
inodeとは?
inode(アイノード)は、ファイルシステムの重要な概念です。
それぞれのファイルやディレクトリに関する重要な情報を保持しており
ファイルの所有者、ファイルのサイズ、アクセス権限、作成日時、更新日時などの情報が含まれています。
inodeは、ファイルシステム上で個々のファイルやディレクトリごとに作成されます。
そして、ファイルシステムの種類や設定によって作成できるinodeの数が決まっています。
これには、ファイルシステムのディスク容量やディスクのinodeテーブルのサイズなどが関係しています。
inodeの枯渇について
ファイルシステムがinodeを使い果たしてしまうと、新しいファイルやディレクトリを作成できなくなる可能性があります。この状態はinodeの枯渇と呼ばれ、ファイルシステムの正常な機能に影響を与える
可能性があります。inodeの枯渇はファイルシステムを設計する際に考慮すべき重要な要素の一つなのです。
ディスク容量に空きがあるように見える場合でも、inodeが枯渇している場合はファイルやディレクトリを作成できなくなる場合があります。
▽inodeの使用状況は「df -i」コマンドを使用して確認することができます。
・以下がコマンドの出力結果となります。
------------------------------------------------------------------- # df -i Filesystem Inodes IUsed IFree IUse% Mounted on devtmpfs 118921 312 118609 1% /dev tmpfs 121572 1 121571 1% /dev/shm tmpfs 819200 570 818630 1% /run /dev/xvda1 7858112 48019 7810093 1% / tmpfs 1048576 4205 1044371 1% /tmp tmpfs 24314 14 24300 1% /run/user/1001 -------------------------------------------------------------------
inodeを枯渇させてみる
▽ここからは検証環境を使用して、実際にinodeを枯渇させてみたいと思います。(Amazon Linux 2023)
・検証用に新しく領域を作成し、その領域内のinodeを枯渇させます。
------------------------------------------------------------------- # df -i Filesystem Inodes IUsed IFree IUse% Mounted on devtmpfs 118921 286 118635 1% /dev tmpfs 121572 1 121571 1% /dev/shm tmpfs 819200 518 818682 1% /run /dev/xvda1 7858112 48003 7810109 1% / tmpfs 1048576 19 1048557 1% /tmp tmpfs 24314 14 24300 1% /run/user/1001 ------------------------------------------------------------------- ↓ ------------------------------------------------------------------- # df -i Filesystem Inodes IUsed IFree IUse% Mounted on devtmpfs 118921 312 118609 1% /dev tmpfs 121572 1 121571 1% /dev/shm tmpfs 819200 569 818631 1% /run /dev/xvda1 7858112 48004 7810108 1% / tmpfs 1048576 20 1048556 1% /tmp tmpfs 24314 14 24300 1% /run/user/1001 /dev/loop0 25584 11 25573 1% /mnt/new_disk ←検証用に新規作成 -------------------------------------------------------------------
・下記のコマンドを使用して1秒ごとに10個ずつファイルを作成していきます。
中身が空のファイルのみを作成するのでディスク容量自体は増えません。
----------------------------------------------------------------------- while true; do touch /mnt/new_disk/$(date +%s)_{1..10}; sleep 1; done -----------------------------------------------------------------------
枯渇させてみる
▽inode が減っていく過程は “$ watch -n 1 df -i ” コマンドを使用して確認することができます。
・大体15分程で対象領域のinode使用率が100%になりました。
------------------------ # watch -n 1 df -i ------------------------
------------------------------------------------------------------------------------------------------------------------ Every 1.0s: df -i tech-test: Sun Mar 17 20:52:53 2024 Filesystem Inodes IUsed IFree IUse% Mounted on devtmpfs 118921 312 118609 1% /dev tmpfs 121572 1 121571 1% /dev/shm tmpfs 819200 570 818630 1% /run /dev/xvda1 7858112 48018 7810094 1% / tmpfs 1048576 4205 1044371 1% /tmp tmpfs 24314 14 24300 1% /run/user/1001 /dev/loop0 25584 8776 16808 35% /mnt/new_disk ------------------------------------------------------------------------------------------------------------------------ ↓ ------------------------------------------------------------------------------------------------------------------------ Every 1.0s: df -i tech-test: Sun Mar 17 21:02:53 2024 Filesystem Inodes IUsed IFree IUse% Mounted on devtmpfs 118921 312 118609 1% /dev tmpfs 121572 1 121571 1% /dev/shm tmpfs 819200 570 818630 1% /run /dev/xvda1 7858112 48018 7810094 1% / tmpfs 1048576 4205 1044371 1% /tmp tmpfs 24314 14 24300 1% /run/user/1001 /dev/loop0 25584 25584 0 100% /mnt/new_disk ------------------------------------------------------------------------------------------------------------------------
・inodeの使用率が100%になった時点で、以下の通り新規ファイルが作成できなくなりました。
------------------------------------------------------------------------------------------------- # while true; do touch /mnt/new_disk/$(date +%s)_{1..50}; sleep 1; done touch: cannot touch '/mnt/new_disk/1710676968_45': No space left on device touch: cannot touch '/mnt/new_disk/1710676968_46': No space left on device -------------------------------------------------------------------------------------------------
・inodeの使用率が100%になった時点で対象領域のディスクスペースを確認しますが
使用率1%となっており、ディスクスペースは消費されていないことがわかります。
------------------------------------------------------------------------------------------------- # df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 4.0M 0 4.0M 0% /dev tmpfs 475M 0 475M 0% /dev/shm tmpfs 190M 2.9M 188M 2% /run /dev/xvda1 15G 2.4G 13G 16% / tmpfs 475M 12M 464M 3% /tmp tmpfs 95M 0 95M 0% /run/user/1001 /dev/loop0 89M 766K 81M 1% /mnt/new_disk -------------------------------------------------------------------------------------------------
・手動での新規ファイル作成もできなくなっています。
------------------------------------------------------------------------------------------------- # touch /mnt/new_disk/new_file touch: cannot touch '/mnt/new_disk/new_file': No space left on device -------------------------------------------------------------------------------------------------
おわりに
inodeの枯渇はファイルシステムの正常な機能に大きな影響を与えることがわかりました。
ディスクスペースが空いているように見えてもinodeが枯渇していれば新規でファイルが作成
できなくなりますので、ディスクスペースのみならずinodeにも目を向けてもらえればと思います。
以上となります。それではまた。