GNU/Linux >> Linux の 問題 >  >> Linux

新しい ext4 インライン データ機能の使用方法(inode に直接データを保存する)

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 を使用できます。


Linux
  1. Linuxgrepコマンドの使用方法

  2. Linuxでhistoryコマンドを使用する方法

  3. Ext4ファイルシステムのオフセットを見つける方法は?

  1. iノードとLinuxファイルシステム

  2. basenameコマンドの使用方法は?

  3. Ext4ファイルシステムのiノードの数を増やす方法は?

  1. Tpmを使用してUefi起動システムのデータを封印する方法は?

  2. ext2/ext3/ext4 ファイルシステムの inode サイズを調べる方法は?

  3. DD を使用して古いドライブから新しいドライブにデータを移行するにはどうすればよいですか?