我有一个包含大量小文件的ext4分区(VM上的LVM),我必须每3-4个月扩展一次。
关于节点所用空间的大小。
xfs、btrfs或ext4文件系统中的一个是否占用较少的空间?
换句话说,切换到btrfs或xfs会使分区填充inode的速度比ext4慢吗?
发布于 2016-08-07 10:17:59
首先,您的第一个问题是:是的,其中一个文件系统占用的空间较少。即使没有更多的细节,考虑到它们有不同的实现,它们都不太可能使用完全相同的空间。因此,其中一个一定比其他所有的空间都要少。
Btrfs具有动态的inode分配,因此没有像ext4的inode表(其大小是在ext4文件系统创建时设置的)填充的。
XFS是动态的,但有一个限制(可用于inode的文件系统的百分比),因此,是否填充inode取决于所设置的百分比以及文件计数/文件大小。
发布于 2016-08-07 10:32:31
是的,并且要意识到一切都取决于你的需要:
考虑到btrfs能够跨越多个硬盘驱动器,它支持的驱动器空间是ext4的16倍,这是一个很好的解决方案。btrfs文件系统的最大分区大小是16个exbi字节,最大文件大小也是16个exbi字节。
最大文件数: 2**64
XFS是一个高性能的64位日志文件系统.XFS支持64位文件系统的最大文件系统大小为8个exbi字节.现在,RHEL7.0使用XFS作为默认文件系统,包括对/boot
分区使用XFS的支持。
最大文件数: 2**64
ext4是众所周知的,因为它带来了比ext3更快的进步。ext4有一些局限性。最大文件大小为16个四字节(约为17.6兆字节)。使用ext4可以拥有的最大卷/分区是1 exbi字节。与最现代的文件系统一样,它也是一个日志文件系统,这意味着它将记录文件主要位于磁盘上的位置以及磁盘上发生的任何其他更改。不管它的所有特性,它不支持透明压缩,透明加密,或数据去重复。快照在技术上是受支持的,但这种特性充其量不过是实验性的。
最大文件数:40亿
XFS没有任何RAID,而Btrfs RAID还没有完全稳定,而且还处于早期阶段。XFS比Btrfs更成熟,但是我们不能否认Btrfs是强大的和一个成长良好的FileSystem。
现在,XFS是我的选择- -特别是因为它是RHEL 7-上的默认FS,除非我真的需要Btrfs。
发布于 2016-08-07 11:28:19
我认为您遇到的问题不是填充了inode本身的分区,而是文件系统中的inode数量不足。在创建文件系统时,ext4静态地保留inode,但是可以用选择mkfs.ext4
设置数字:
-i字节-每个inode 指定字节/inode比率。mke2fs为磁盘上每个inode字节的空间创建一个inode.每个inode的字节比越大,创建的inode就越少。-N - of - inodes覆盖应为文件系统保留的inode数量的默认计算(基于块的数量和每个inode的字节比)。这允许用户直接指定所需的inode数量。
手册明确指出,在创建FS之后,不能更改每个inode比率的字节数,但是如果调整FS的大小,则总数量将缩放以满足该比例。
您还可以设置每个inode的大小。在“大多数”文件系统上,缺省值是256字节,但可以减少到128字节(“小”文件系统的默认值)。额外的空间用于存储扩展属性(例如,SELinux标签),因此如果您不需要这些属性,那么应该可以安全地将大小缩小到最小。
-I inode - 指定每个inode的大小(以字节为单位)。inode大小值必须是大于或等于128的幂.
df -i
应该显示分配和使用的节点数。使用默认选项,我看过的一个30 GB分区每16 kB就有一个inode,但是如果您的文件非常小,您可以设置,比方说,-i 4096
为系统上的每个数据块设置一个inode。
如果您的文件小于4096,您可能也希望减少文件系统块的大小,因为所有常规文件无论如何都需要一个完整的数据块。(也就是说,在ext4上。我不知道其他当前的文件系统是否会打包小文件。)
-b块大小指定块大小(以字节为单位)。有效的块大小值为每个块1024、2048和4096字节.如果省略,块大小由文件系统大小和文件系统的预期使用量(请参见-T选项)来决定。
mkfs.ext4
还有一个-T <type>
选项,它可以作为部分或所有这些的缩写。设置在/etc/mke2fs.conf
中,在我的Debian上,这使得mkfs.ext4 -T small
相当于
mkfs.ext4 -b 1024 -I 128 -i 4096
对于很多小文件来说,这可能不是一组糟糕的选项(而不是xattrs)。
如果您的文件甚至小于一个kB,那么文件系统可能不是保存数据的最佳方法,但是应该考虑数据库或特定于应用程序的系统。
https://unix.stackexchange.com/questions/301843
复制相似问题