ceph默认的文件系统是XFS,centos7之前的版本默认文件系统是EXT4,现在是XFS,这里对比了一下,然后针对4k大小的随机读写进行了小小的测试。
前言
Linux操作系统有很多不同的文件系统选择,所有现有的默认文件系统都是ext4。 通常文件系统被用来处理当程序不再使用信息之后如何保存信息,如何管理信息的可访问性,其他信息(元数据)与数据本身如何相关联等。
EXT4
Ext4是第四代扩展文件系统的缩写,它是2008年推出的。它是一个真正可靠的文件系统,它几乎在过去几年的大部分发行版中一直是默认选项,它是由比较老的代码生成的。它是一个日志文件系统,意味着它会对文件在磁盘中的位置以及任何其它对磁盘的更改做记录。如果系统崩溃,得益于journal技术,文件系统很少会损坏。
最大单个文件大小可以从16 GB到16 TB
最大文件系统大小为1EB(exabyte)
最大值包含64,000个子目录(ext3中的32,000个)
XFS
XFS是由SGI为其IRIX平台设计的高性能64位日志文件系统。 XFS具有各种改进,使其能够在文件系统群体列表中脱颖而出,例如用于元数据操作的日志记录,可扩展/并行I / O,挂起/恢复I / O,在线碎片整理,延迟性能分配,等等
大概在2002年,XFS被合入Linux内核,2009年RHEL Linux版本5.4使用了XFS文件系统。 由于其高性能,架构可扩展性和鲁棒性,XFS一直是很多企业系统的首选,特别是拥有大量数据的企业系统。 现在,RHEL / CentOS 7和Oracle Linux使用XFS作为其默认文件系统。
最大单个文件大小可以是16 TB到16 Exabytes
最大文件系统大小为8EB(exabyte)
缺点:XFS文件系统不能缩小,当删除大量文件时会性能下降。
更多对比
- ext4不支持透明压缩、重复数据删除或者透明加密。技术上支持了快照,但该功能还处于实验性阶段。xfs也不能压缩,XFS 是基于B+ Ttree 管理元数据,即将支持reflink, dedupe等高级特性。
- Ext4受限制于磁盘结构和兼容问题,可扩展性和scalability不如XFS。
- 虽然Ext4 目录索引采用了Hash Index Tree, 但是依然限制高度为2。
- 由于历史磁盘结构原因Ext4 的inode 个数限制(32位数)最多只能有大概40多亿文件。而且Ext4的单个文件大小最大只能支持到16T(4K block size) ,目前来说已经是瓶颈。XFS使用64位管理空间,文件系统规模可以达到EB级别。
性能测试
测试了一下4k随机读写的性能,direct=1,numjobs=20,iodepth=128
磁盘信息
1
|
Disk /dev/sdc1: 4000.8 GB, 4000785104896 bytes, 7814033408 sectors
|
测试数据
文件系统 | 4k-randread | 4k-read | 4k-randwrite | 4k-write |
---|---|---|---|---|
XFS | iops=426 | iops=42773 | iops=313 | iops=24732 |
EXT4 | iops=430 | iops=41636 | iops=315 | iops=19095 |
在4k这个量级上IOPS基本没啥区别,4k随机写XFS略好于EXT4。
性能方面的对比:ext3,ext4,xfs和btrfs文件系统性能对比
常用命令
Task | ext3/4 | XFS |
---|---|---|
Create a file system | mkfs.ext4 or mkfs.ext3 | mkfs.xfs |
File system check | e2fsck | xfs_repair |
Resizing a file system | resize2fs | xfs_growfs |
Save an image of a file system | e2image | xfs_metadump and xfs_mdrestore |
Label or tune a file system | tune2fs | xfs_admin |
Backup a file system | dump and restore | xfsdump and xfsrestore |
通用工具
Task | ext4 | XFS |
---|---|---|
Quota | quota | xfs_quota |
File mapping | filefrag | xfs_bmap |
文件系统之间更多的参数和功能的对比:Comparison of file systems