ext4 でインライン データを有効にするには、e2fsprogs
を使用する必要があります。 1.43以降。インライン データのサポートは 2014 年 3 月に Git リポジトリに追加されましたが、リリースされたのは 2016 年 5 月だけです。
それができたら、 mke2fs -O inline_data
を実行できます 適切なデバイスで、インライン データをサポートする新しいファイル システムを作成します。 すべてのデータが消去されます .既存のファイルシステム (少なくとも tune2fs
はサポートしていません)。
小さなファイルを作成し、debugfs
を実行します。 ファイルシステム上。 cd
適切なディレクトリに移動し、stat smallfile
を実行します;次のようなものが得られます
Inode: 32770 Type: regular Mode: 0644 Flags: 0x10000000
Generation: 2302340561 Version: 0x00000000:00000001
User: 1000 Group: 1000 Size: 6
File ACL: 0 Directory ACL: 0
Links: 1 Blockcount: 0
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x553731e9:330badf8 -- Wed Apr 22 07:30:17 2015
atime: 0x553731e9:330badf8 -- Wed Apr 22 07:30:17 2015
mtime: 0x553731e9:330badf8 -- Wed Apr 22 07:30:17 2015
crtime: 0x553731e9:330badf8 -- Wed Apr 22 07:30:17 2015
Size of extra inode fields: 28
Extended attributes:
system.data (0)
Size of inline data: 60
ご覧のとおり、データはインラインで保存されました。これは df
を使用しても確認できます;ファイルを作成する前に:
% df -i /mnt/new
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/vg--large--mirror-inline 65536 12 65524 1% /mnt/new
% df /mnt/new
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/vg--large--mirror-inline 1032088 1280 978380 1% /mnt/new
ファイルの作成後:
% echo Hello > smallfile
% ls -l
total 1
-rw-r--r-- 1 steve steve 6 Apr 22 07:35 smallfile
% df -i /mnt/new
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/vg--large--mirror-inline 65536 13 65523 1% /mnt/new
% df /mnt/new
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/vg--large--mirror-inline 1032088 1280 978380 1% /mnt/new
ファイルはそこにあり、inode を使用していますが、使用可能なストレージ容量は変更されていません。
e2fsprogs
の場合 バージョンが古すぎるか、ファイルシステムが既に作成されている場合は、debugfs
を使用して機能フラグを設定できます (フラグは 2012 年からサポートされていますが、mke2fs
は その他のツールは 2014 年以降にサポートが追加されましたが、多くのディストリビューションは 2016 年にそれらを出荷していません。 Ubuntu Xenial)
これを行うには、読み取り/書き込みモードでパーティションを開きます:
debugfs -w /dev/sdxx
次にフラグを追加します:
feature inline_data
(または feature -inline_data
をオフに切り替えますが、既にインライン ファイルがある場合は、おそらく非常に悪い考えです!)
ただし、システムが e2fsprogs
の場合は注意してください。 ユーティリティ (debugfs
を含む)
また、現在の GRUB
にも注意してください (2.02) はこれをサポートしていないため、ブート パーティションに設定すると、システムが起動できなくなります。サポートを追加するマージされていないパッチがあります。
これを書いている時点で、最大 inode_size-128
のファイルとディレクトリ インライン化できるため、デフォルトの 256 バイトの inode に対して 128 バイトです。より多くのインライン化が必要な場合は、より大きな inode を使用できます。