我该如何使用ext4 的 inline_data 功能存储空目录?看起来 inline_data 只适用于小文件,或者目录存储大量数据。
答案1
您需要e2fsprogs
1.43 或更高版本,并且需要创建inline_data
启用该功能的文件系统,以及至少 256 字节的 inode:
mke2fs -t ext4 -O inline_data ...
(如果mke2fs
抱怨 inode 太小,请添加-I 256
)。
然后,目录将透明地使用内联数据,只要它们需要存储的数据适合其索引节点。debugfs
的stat
命令将显示索引节点数据,如下所示
Inode: 12 Type: directory Mode: 0755 Flags: 0x10000000
Generation: 3089239889 Version: 0x00000000:00000002
User: 0 Group: 0 Size: 60
File ACL: 0 Directory ACL: 0
Links: 3 Blockcount: 0
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x5bcb759e:a9872534 -- Sat Oct 20 20:36:14 2018
atime: 0x5bcb759e:a9872534 -- Sat Oct 20 20:36:14 2018
mtime: 0x5bcb759e:a9872534 -- Sat Oct 20 20:36:14 2018
crtime: 0x5bcb759e:a9872534 -- Sat Oct 20 20:36:14 2018
Size of extra inode fields: 32
Extended attributes:
system.data (0)
Inode checksum: 0x68fa51fe
Size of inline data: 60
这是针对包含另一个目录的目录;如您所见,它存储 60 字节的内联数据并且没有范围。