28

あまり大きくない (4kb、8kb など) 非常に多数のファイルを作成する必要があります。私のコンピューターでは、すべての inode を最大 100% 使用するため、これ以上ファイルを作成できません。

$ df -i /dev/sda5
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sda5            54362112 36381206 17980906   67% /scratch

(ファイルを削除し始めたので、現在 67% です)

ノードあたりのバイト数は、私のファイルシステム (ext4) では 256 です。

$ sudo tune2fs -l /dev/sda5 | grep Inode
Inode count:              54362112
Inodes per group:         8192
Inode blocks per group:   512
Inode size:               256

この値を 128 未満でも非常に低く設定することは可能でしょうか (再フォーマット中)。はいの場合、どの値を使用すればよいですか? どうも

4

3 に答える 3

35

inode あたりのデフォルトのバイト数は通常 16384 で、これがデフォルトですinode_ratio(/etc/mke2fs.confファイルシステムの作成前に読み取られます)。i ノードが不足している場合は、次の例を試してみてください。

mkfs.ext4 -i 8192 /dev/mapper/main-var2

これに影響を与える別のオプションは-T、通常-T newsはさらに 4096 に削減されます。

また、ext3 または ext4 ファイルシステムの inode 数は、再作成または 16 進編集を行わないと変更できません。Reiser ファイルシステムは動的であるため、問題が発生することはありません。

于 2011-03-24T20:47:34.860 に答える
13

使用可能なスペースのサイズを使用可能な inode の数で割ることで、おおよその inode 比率を知ることができます。例えば:

$ sudo tune2fs -l /dev/sda1 | awk -F: ' \
    /^Block count:/ { blocks = $2 } \
    /^Inode count:/ { inodes = $2 } \
    /^Block size:/ { block_size = $2 } \
    END { blocks_per_inode = blocks/inodes; \
          print "blocks per inode:\t", blocks_per_inode, \
                "\nbytes per inode:\t", blocks_per_inode * block_size }'

blocks per inode:    3.99759 
bytes per inode:     16374.1
于 2015-05-26T16:22:53.477 に答える
-8

mke2fs のマニュアル ページで問題の解決策を見つけました。

-I inode-size

各 inode のサイズをバイト単位で指定します。mke2fs は、デフォルトで 256 バイトの inode を作成します。2.6.10 以降のカーネルお​​よび一部の以前のベンダー カーネルでは、128 バイトを超える inode を使用して拡張属性を格納し、パフォーマンスを向上させることができます。 inode-size 値は 128 以上の 2 のべき乗でなければなりません。inode-size が大きいほど、inode テーブルが消費するスペースが多くなり、ファイルシステムで使用可能なスペースが減少し、パフォーマンスに悪影響を与える可能性もあります。大きな inode に格納された拡張属性は古いカーネルでは表示されず、そのようなファイルシステムは 2.4 カーネルではまったくマウントできません。ファイルシステムの作成後にこの値を変更することはできません。

設定できる最大値は、ブロックサイズによって決まります。

sudo tune2fs -l /dev/sda5 | grep "Block size"
Block size:               4096

これが役立つことを願っています....

于 2010-09-13T11:18:43.837 に答える