在xfs和ext4中用xattr存储很多小文件

我有许多XFS驱动器上的xattr小文件(2千万)。 文件的平均大小约为20KB,xattr的平均大小约为512字节。

因为我想将它们移动到ext4,我testing了将这些文件的一部分复制到ext4(inode大小为512和1024)和XFS驱动器。

我分别用以下选项格式化了3个驱动器:

# mkfs.ext4 -i 8192 -I 512 /dev/sde1 # mkfs.ext4 -i 8192 -I 1024 /dev/sdf1 # mkfs.xfs -f -i size=1024 /dev/sdg1 

并通过cp -r –preserve = mode,所有权,时间戳,xattr复制大约30GB的小文件

结果如下:

 Filesystem 1K-blocks Used Available Use% Mounted on /dev/sde1 133654640 37164884 89360916 30% /srv/node/sde1 # ext4 -I 512 /dev/sdf1 124741744 36645652 80967252 32% /srv/node/sdf1 # ext4 -I 1024 /dev/sdg1 142507224 31020968 111486256 22% /srv/node/sdg1 # XFS 

在这两种情况下,ext4比XFS使用更多的块。 是什么使这些差异? 我怎样才能使用ext4不浪费磁盘空间?

有一件事是,XFS在数百万的小尺寸上performance不佳。 XFS不是基于FS的inode。 您的块大小将有所不同,因为您有很多的小文件,ext4保存在数据块组也间接块地图,扩展树块和扩展属性,inode列表等增加相同数量的文件总块大小。 另外日志需要一些。 对于ext4,你可以删除日志,如果你想,但恢复FS时间将显着增加,也可以分配更less的超级用户使用-m选项(默认为5%),你可以把1%。