在装CentOS的时候,很多人卡在文件系统这一步:到底选ext4还是xfs?网上说法一堆,有的说xfs性能强,有的说ext4稳定老派。其实不用纠结,关键看你在干啥。
日常服务器,ext4够用又省心
如果你是搭个Web服务、跑个MySQL、或者做个内部管理后台,机器配置一般,数据量也不大,那直接上ext4就行。它从CentOS 6时代就开始用,兼容性好,工具链成熟。比如你某个分区挂不上了,用e2fsck修一下基本能救回来,命令也简单:
e2fsck -f /dev/sdb1
而且ext4对小文件读写表现不错,日常操作像日志写入、配置变更这些都很稳。别忘了,很多生产环境的老系统还在用ext4,没人动不是因为落后,是因为够用。
大文件、高并发,xfs更有优势
但你要搞存储服务器、日志中心、视频转码队列这种,经常要处理大文件或高吞吐,xfs就更合适。它天生支持元数据日志、分配组机制,能更好利用多核和大内存。比如你用rsync同步几个TB的监控录像,xfs通常比ext4快一截。
另外xfs扩容方便,只要底层存储支持,可以直接在线扩大分区:
xfs_growfs /mount/point
但注意,xfs不支持缩小,一开始规划空间得留点余地。
出过问题才知道差别
有次同事在虚拟机里用xfs跑Docker,镜像层一多,inode占满,提示“no space left on device”,df看还有几十G空着。查了才发现xfs创建时默认inode比例偏高,小文件太多容易提前耗尽。换成ext4重新格式化,调整了inode比例才解决。所以不是哪个更强,而是得匹配场景。
格式化时的小细节
要是决定自己格式化,记住命令别写错。ext4这样:
mkfs.ext4 /dev/sdb1
xfs长这样:
mkfs.xfs -f /dev/sdb1
特别是xfs,加-f强制覆盖,不然已有文件系统会报错。挂载后可以用mount | grep your_device看看实际用了啥类型。
现在CentOS 7以后默认用xfs,新装系统不折腾的话就跟着走。但老项目维护、迁移,或者你清楚工作负载特性,按需选才最靠谱。