【信创】Linux系统上ext4、XFS等文件系统的特点和适用场景 _ 统信 _ 麒麟 _ 方德

306 篇文章 9 订阅
306 篇文章 7 订阅

原文链接:【信创】Linux系统上ext4、XFS等文件系统的特点和适用场景 | 统信 | 麒麟 | 方德
Hello,大家好啊!今天给大家带来一篇关于Linux系统上常见文件系统——如ext4、XFS等——的特点和适用场景的文章。选择合适的文件系统对于优化存储性能和数据管理至关重要。本文将详细介绍这些文件系统的特点,并讨论它们在不同场景下的适用性。欢迎大家分享转发,点个关注和在看吧!

文件系统概述

在Linux操作系统中,文件系统负责管理和组织磁盘上的数据。不同的文件系统具有不同的结构、特性和性能特点,适用于不同的使用场景。以下是一些常见的Linux文件系统及其特点:

  1. exFAT (Extended File Allocation Table)
    用途
    主要用于闪存驱动器和外部存储设备。
    特点
    支持大文件和大分区(最大128 PiB)。
    跨平台兼容性好,支持Windows、macOS和Linux。
    不支持日志记录功能,减少写操作,对闪存设备有利。
    适合轻量级和快速的可移动介质存储。
    限制
    由于缺少日志记录和高级文件管理功能,不适合内部磁盘使用。
    权限和安全性功能有限。
  2. ext4 (Fourth Extended Filesystem)
    用途
    广泛应用于Linux系统的默认文件系统。
    特点
    支持最大1 EiB的文件系统和16 TiB的单个文件。
    提供日志功能,确保数据完整性和快速恢复。
    支持延迟分配,优化磁盘空间利用率。
    兼容ext2和ext3,支持文件系统的逐步升级。
    限制
    文件系统在非常大的规模下,性能可能下降。
  3. NTFS (New Technology File System)
    用途
    Windows系统的默认文件系统。
    特点
    支持非常大的文件和分区(最大16 EiB)。
    提供日志功能和高级文件权限管理。
    支持压缩、加密和快照等功能。
    适用于双系统环境中的数据共享。
    限制
    Linux对NTFS的写入支持有限,需依赖第三方工具或驱动程序(如ntfs-3g)。
  4. XFS
    用途
    适用于需要高性能和大数据管理的环境,如服务器和大容量存储。
    特点
    支持最大8 EiB的文件系统和文件大小。
    高度可扩展,提供快速的文件创建和删除操作。
    强大的日志功能和实时数据写入优化。
    可在线调整文件系统大小。
    限制
    对小文件的性能优化不如ext4。
    由于设计复杂,数据恢复过程较为困难。
  5. ext2 (Second Extended Filesystem)
    用途
    早期Linux系统常用的文件系统。
    特点
    无日志功能,简单高效,适合小型存储设备。
    支持较大的文件和分区(最大32 TiB)。
    因无日志功能,写入操作较快。
    限制
    缺少数据保护机制,容易因意外断电导致数据损坏。
    已被ext3和ext4逐步取代。
  6. ext3 (Third Extended Filesystem)
    用途
    ext2的升级版,广泛应用于早期Linux系统。
    特点
    在ext2的基础上增加了日志功能,确保数据完整性。
    向后兼容ext2,支持文件系统无损升级。
    易于使用,适合中小型存储需求。
    限制
    在现代存储需求下,性能和功能已不如ext4和XFS。
  7. VFAT (Virtual File Allocation Table)
    用途
    基于FAT32的文件系统,兼容性较强,常用于小型外部存储设备。
    特点
    支持最大4 GiB的文件和2 TiB的分区。
    跨平台支持良好,适用于Windows和Linux之间的数据共享。
    不支持文件权限和日志功能。
    限制
    不支持大文件和现代文件系统的高级功能。
    仅适合简单的数据存储和传输需求。

1.查看系统信息

pdsyw@pdsyw-PC:~/Desktop$ sudo -i
root@pdsyw-PC:~# lsblk 

2.exFAT 文件系统

root@pdsyw-PC:~# parted /dev/sdb
(parted) mklabel gpt                                                      
(parted) mkpart primary 1MiB 100%                                         
(parted) quit                                                             

root@pdsyw-PC:~# mkfs.exfat /dev/sdb1                                     
root@pdsyw-PC:~# mkdir /pdsyw1024
root@pdsyw-PC:~# mount /dev/sdb1 /pdsyw1024/

每一行命令的解释如下:

  1. **root@pdsyw-PC:~# parted /dev/sdb**
    这条命令启动了 parted 工具,用于管理 /dev/sdb 设备上的分区。parted 是一个用于创建、删除和调整磁盘分区大小的工具。
  2. **(parted) mklabel gpt**
    parted 中,这条命令将磁盘的分区表格式设置为 GPT(GUID Partition Table)。GPT 是一种比传统的 MBR(主引导记录)更现代的分区表格式,支持更大的磁盘和更多的分区。
  3. **(parted) mkpart primary 1MiB 100%**
    这条命令创建了一个主分区,分区类型为 primary,起始位置为 1MiB,结束位置为磁盘的 100%。这样可以创建一个覆盖整个磁盘的分区,起始位置从 1MiB 开始,以避免某些系统的引导问题。
  4. **(parted) quit**
    这条命令退出了 parted 工具,保存了刚才所做的分区更改。
  5. **root@pdsyw-PC:~# mkfs.exfat /dev/sdb1**
    这条命令在 /dev/sdb1 分区上格式化为 exFAT 文件系统。exFAT 是一种适用于大容量存储设备的文件系统,支持文件大小超过 4GB。
  6. **root@pdsyw-PC:~# mkdir /pdsyw1024**
    这条命令在根目录下创建了一个名为 pdsyw1024 的文件夹,作为挂载点。
  7. **root@pdsyw-PC:~# mount /dev/sdb1 /pdsyw1024/**
    这条命令将 /dev/sdb1 分区挂载到 /pdsyw1024/ 目录,使你可以通过该目录访问分区中的文件。

每个步骤都依次执行,最终实现了对新分区的创建、格式化,并将其挂载到系统中以便使用。

root@pdsyw-PC:~# df -h

3.ext4 文件系统

root@pdsyw-PC:~# parted /dev/sdb
(parted) mklabel gpt                                                      
(parted) mkpart primary 1MiB 100%
(parted) quit                                                             

root@pdsyw-PC:~# mkfs.ext4 /dev/sdb1

root@pdsyw-PC:~# mkdir /pdsyw1024
root@pdsyw-PC:~# mount /dev/sdb1 /pdsyw1024/
root@pdsyw-PC:~# df -h

4.ntfs文件系统

root@pdsyw-PC:~# parted /dev/sdb
(parted) mklabel gpt                                                      
(parted) mkpart primary 1MiB 100%                                         
(parted) quit                                                             

root@pdsyw-PC:~# mkfs.ntfs /dev/sdb1                                       

root@pdsyw-PC:~# mkdir /pdsyw1024
root@pdsyw-PC:~# mount /dev/sdb1 /pdsyw1024/
root@pdsyw-PC:~# df -h

5.xfs文件系统

root@pdsyw-PC:~# parted /dev/sdb
(parted) mklabel gpt                                                      
(parted) mkpart primary 1MiB 100%                                         
(parted) quit                                                             

root@pdsyw-PC:~# mkfs.xfs /dev/sdb1                                       

root@pdsyw-PC:~# mount /dev/sdb1 /pdsyw1024/
root@pdsyw-PC:~# mkdir /pdsyw1024
root@pdsyw-PC:~# df -h

6.ext2文件系统

root@pdsyw-PC:~# parted /dev/sdb
(parted) mklabel gpt                                                      
(parted) mkpart primary 1MiB 100%                                         
(parted) quit                                                             

root@pdsyw-PC:~# mkfs.ext2 /dev/sdb1                                       

root@pdsyw-PC:~# mkdir /pdsyw1024
root@pdsyw-PC:~# mount /dev/sdb1 /pdsyw1024/
root@pdsyw-PC:~# df -h

7.ext3文件系统

root@pdsyw-PC:~# parted /dev/sdb
(parted) mklabel gpt                                                      
(parted) mkpart primary 1MiB 100%                                         
(parted) quit                                                             

root@pdsyw-PC:~# mkfs.ext3 /dev/sdb1                                       

root@pdsyw-PC:~# mkdir /pdsyw1024
root@pdsyw-PC:~# mount /dev/sdb1 /pdsyw1024/
root@pdsyw-PC:~# df -h

8.vfat文件系统

root@pdsyw-PC:~# parted /dev/sdb
(parted) mklabel gpt                                                      
(parted) mkpart primary fat32 1MiB 100%                                   
(parted) quit                                                             

root@pdsyw-PC:~# mkfs.vfat /dev/sdb1                                      

root@pdsyw-PC:~# mkdir /pdsyw1024
root@pdsyw-PC:~# mount /dev/sdb1 /pdsyw1024/
root@pdsyw-PC:~# df -h

9.图形化操作
1)打开磁盘管理器

2)输入密码授权

3)新建分区表

4)点击继续

5)选择分区表

6)分区中

7)分区

8)点击确定

9)选择分区格式及大小等

10)点击分区操作

11)点击确定

12)新建分区中

13)分区完成

14)点击挂载

15)点击挂载

16)挂载完成

17)文件管理器查看

不同的文件系统在Linux环境下有不同的特点和适用场景。ext4以其稳定性和广泛支持适合大多数应用,XFS在高性能和大文件处理上表现优异。根据具体的使用场景选择合适的文件系统,可以大大提高系统的性能和可靠性。
如果您觉得这篇文章有用,请分享和转发,同时别忘了点个关注和在看,以便未来获取更多实用的技术信息和解决方案。感谢大家的阅读,我们下次再见!

本文基于kernel4.19.67版本分析。 基于如下命令完成写测试 time dd if=/dev/zero of=./test.bin count=2 bs=1G oflag=direct 同样的命令发现xfs的性能是9.4M/s, ext4是6.6M-8.8M/s, 且波动很大,大部分时间集中在7.5M/sz每秒。 基于上面的现象深入分析基于xfsext4分别direct方式写usb时的性能差异,找到了一种提升写usb性能的办法。 同时详细记录并描述了从vfs_write开始,到hcd层写数据的流程及关键点。 经过分析得到了如下几个知识点: a)xfsext4 即使是direct方式下写数据的方式也不一样,xfs依赖iomap是将数据(struct bio)提交到block层; ext4依赖filemap,最终依赖fs/direct-io将数据(struct bio )提交到block b)iomap提交到block层的数据以2M连续内存的页的方式提交,direct-io没有保证连续内存,虽然数据大小也是2M. 这是xfsext4出现性能差异的主要原因。 c)每次2M数据大小的限制是block层设置的 d)block层以回调函数(queue_rq)调用方式将数据(struct request)包装成struct blk_mq_queue_data格式提次到scsi层 e)scsi以消息方式将blk_mq_queue_data数据包装成struct scsi_cmnd格式发送给驱动usb-storage f)block层的缓冲区大小虽然有2M, 但是真正提交到scsi层时(scsi进一步提交到usb-storage)会根据设备本身的配置来拆分。如默认按120K来拆分 g)经过分析发现影响性能的点主要有一点,一个是max_sectors大小的配置,如果配置为4096扇区大小=2M, 可以将ext4的性能从7.5M/s提高到9.5M/s. xfs可以从9.4M/s提高到10.4M/s h)xfsext4快的原因是因为xfs申请的内存页是连续的页,DMA可以更快运行,但是ext4没有保证,所以xfsext4明显快。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鹏大圣运维

编写不易,还请支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值