接上一篇文章《Linux存储—常用磁盘分区工具的使用方法》,通过采用磁盘分区工具对磁盘进行分区后,还不能达到使用磁盘的目的,还需要进行最后一步操作,就是使用对应的文件系统将磁盘分区进行格式化以及挂载分区到指定目录(Linux系统一切皆文件的思想)。
本文内容主要目的简单讲述Linux系统中磁盘分区后格式化分区和挂载分区到目录操作方法,并通过一个实验数据对比一下业界广泛使用的xfs和ext4文件系统的特性。
一、系统环境
1.操作系统:Almalinux 9.3
2.磁盘/dev/vdb(容量1G),沿用上一篇文章对此磁盘的分区结果,分别是/dev/vdb1和/dev/vdb2, 各占一半,分别是500M容量。

二、磁盘分区格式化
1.使用EXT4文件系统将/dev/vdb1格式化
命令:mkfs.ext4 /dev/vdb1
2.使用XFS文件系统将/dev/vdb2格式化
命令:mkfs.xfs /dev/vdb2
三、磁盘分区挂载目录
1.在系统/mnt目录下分别创建/mnt/xfs和/mnt/ext4两个目录
命令:mkdir -p /mnt/xfsmkdir -p /mnt/ext4

3.分别将/dev/vdb1挂载到/mnt/ext4目录,将/dev/vdb2挂载到/mnt/xfs目录
命令:mount -t ext4 /dev/vdb1 /mnt/ext4/ # “-t”选项指定文件系统类型ext4mount -t xfs /dev/vdb2 /mnt/xfs/ # “-t”选项指定文件系统类型xfs

到此,/dev/vdb这快磁盘的两个分区vdb1和vdb2已经成功格式化和挂载到目录,可以供操作系统正常使用该磁盘,对其进行读写数据。
四、文件系统xfs和ext4文件特性测试
本测试主要是使用Linux系统自带的dd命令对以上创建并挂载好的磁盘/dev/vdb进行读写测试。
首先可以使用命令“echo 3 > /proc/sys/vm/drop_caches”手动释放空闲的磁盘缓存,这条命令在生产环境慎用!

1.分别是用dd命令对/mnt/ext4和/mnt/xfs这两个目录进行写测试
命令:time dd if=/dev/zero of=/mnt/ext4/testfile bs=10M count=5 oflag=directtime dd if=/dev/zero of=/mnt/xfs/testfile bs=10M count=5 oflag=direct

从测试结果,xfs文件系统的写入性能远超ext4文件系统(大约5倍)。这也符合XFS针对大文件连续写入、直接IO做了深度优化,而ext4写入机制更保守,元数据同步开销更大的机制。
2.分别是用dd命令对/mnt/ext4和/mnt/xfs这两个目录进行读测试
命令:time dd if=/mnt/ext4/testfile of=/dev/null bs=10M count=5 iflag=directtime dd if=/mnt/xfs/testfile of=/dev/null bs=10M count=5 iflag=direct

从测试结果看,ext4文件系统的读性能稍微比xfs好一点,但相差不多。值得一提的是,本测试因为环境有限,读写文件的文件大小是50M(属于小文件),正反应出了ext4文件系统元数据更小、寻址更快特点,其在小文件场景的读性能非常好,但xfs也相差不大。有兴趣有条件的读者可以测试大文件场景的测试。
结合官方推荐以及测试结果数据,计算机系统盘选择xfs或者ext4均可;而对于数据盘,尤其是在高并发、大文件、大容量场景首选xfs文件系统;小文件多的场景建议优先ext4文件系统。如追求极致IO,也可以不分区和格式化磁盘,采用裸磁盘的方式,在前期的文章《Linux存储-分区表及分区规则》也提到过。