ファイルを作成せずに使用できる無料のinodeがありますか?システム上のすべての無料のinodeを使用するスクリプトを作成したいと思います。可能ですか?
答え1
このスクリプトは、ファイルシステムで利用可能なinodeの数だけファイルを生成します/
。
while [ $(df --output=iavail / | tail -n1) -gt 0 ]; do
touch $((i++));
done
私が知っている限り、ファイルやディレクトリを使用せずにinodeを占めることはできません。結局、それがまさにその目的です。スクリプトが完了した後もインデックスノードが引き続き使用するノードです。ファイルを解放するには、作成したファイルを削除する必要があります。
答え2
はい、システム内のすべてのinodeを使用できます。ディスク容量と同様に、限られたリソースです。mkfs.ext4
つまり、実行時に事前に割り当てられます。
tune2fs -l <device>
あるいは、同じツールを使用して割り当てとdf -i <path>
使用数を確認することもできます。
はい
$ df -i /
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/fedora-root 3276800 355850 2920950 11% /
したがって、このファイルシステムには2920950個の利用可能なinodeがあります。ファイルシステムにファイル、ディレクトリ、またはリンクを作成し始めたら、それを使用する必要があるのはそれだけです。小さなファイルやリンクを含むすべてのinodeが利用可能で、まだ利用可能なディスク容量がほとんどあることに気づきました。
ファイルなしでinodeを使用しますか?
ここで何を得るかはわかりませんが、inodeを使用する唯一の方法は、ファイル、ディレクトリ、またはリンクを作成することです。私はそれを消費する他の方法に慣れていません。
はい
ここで空のディレクトリを作成すると、1つのinodeが消費されることがわかります。
$ df -i /
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/fedora-root 3276800 355850 2920950 11% /
$ sudo mkdir /somedir
$ df -i /
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/fedora-root 3276800 355851 2920949 11% /
おそらくinodeを使用する最も簡単な方法は、ディレクトリのディレクトリツリーを作成することです。
$ sudo mkdir /somedir/1
$ df -i /
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/fedora-root 3276800 355852 2920948 11% /
$ sudo mkdir /somedir/2
$ df -i /
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/fedora-root 3276800 355853 2920947 11% /
$ sudo mkdir /somedir/3
$ df -i /
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/fedora-root 3276800 355854 2920946 11% /
ln
以下は、同じファイルを使用して複数のリンクを作成してinodeを使用する別の例です。
$ ln -s afile ln1
$ df -i .
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/fedora_greeneggs-home 26722304 1153662 25568642 5% /home
$ ln -s afile ln2
$ df -i .
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/fedora_greeneggs-home 26722304 1153663 25568641 5% /home
$ ln -s afile ln3
$ df -i .
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/fedora_greeneggs-home 26722304 1153664 25568640 5% /home
答え3
文書はいインデックスノード。
ただし、どのディレクトリにもリンクされていないファイルを作成し、引き続きinodeを使用できます。たとえば、
zsh -c 'repeat 1000 ((repeat 1000 {exec {fd}> file; rm file}
exec sleep 1000 >&-) | cat)'
(結局)1,000,000個のinodeが使用されます。これらのinodeは、sleep
そのプロセスが開かれてからリサイクルされていないファイルを削除します。
この方法で作成できるファイルの数は、作成できるプロセス数と各プロセスが開くことができるファイルの最大数によって制限されます。