文件系统ext4和XFS文件系统

        系统管理员可以创建、挂载、调整大小、备份和恢复 ext4 文件系统。ext4 文件系统是 ext3 文件系统的可扩展扩展。使用 Red Hat Enterprise Linux 8,支持的最大文件大小 16 TB,支持的最大文件系统 50 TB

参考文章

一、mkfs格式化(文件系统)

磁盘分区完成后,需要进行文件系统格式化(格式化也即创建文件系统),mkfs=make filesystem

  • mkfs [tab] [tab]:按下两下tab键查看系统支持哪些文件系统的格式化功能,如下:

二、ext4文件系统特性

  1. 使用数据块:可在使用大型文件时提高性能,并减少大文件的元数据开销
  2. 可快速进行文件系统检查:ext4标记未分配的块组和iNode表部分,在文件检查时可跳过未标记的部分
  3. 元数据校验和:在 Red Hat Enterprise Linux 8中默认开启此功能
  4. ext4文件系统分配特性:持久性预分配、延迟/多块/条状化分配

三、创建ext4文件系统

格式:mkfs.ext4 [-b 参数]  [-L 参数]  设备名称

  • -b:后面设置区块的大小,有1K、2K、4K
  • -L:后面接这个设备的标头名称Label name
  • ext4的默认值适合系统使用,大部分的默认值写入至/etc/mke2fs.conf这个文件中

3.1创建ext4文件系统命令

(1)对于常规分区设备、LVM 卷、MD 卷或者类似的设备,使用以下命令:

mkfs.ext4 /dev/dm-40  #/dev/dm-40为块设备路径

(2)根据磁盘阵列RAID策略创建文件系统,如RAID5(4+1),条块大小16KB,如在 4k-块文件系统上创建跨距为 64k(即 16*4096)的文件系统:

  •         stripe:RAID条块大小
  •         stripe-width:数据盘的个数或者条带单元的数量
mkfs.ext4 -E strip=16,stripe-width=64 /dev/dm-40

(3)创建文件系统时指定UUID

mkfs.ext4 -U UUID /dev/dm-40

(4)创建文件系统时指定标签

mkfs.ext4 -L label_name /dev/dm-40

 3.2重新定义ext4文件系统的大小

(1)要缩小并增大下载的ext4文件系统大小:

        resize2fs以文件系统块大小为单位读取,也可指定特定单位,如:

                s / K / M / G / T  : 分别表示单位为扇区/KB/MB/GB/TB

umount /dev/dm-40
e2fsck -f /dev/dm-40
resize2fs /dev/dm-40 size
df -h  #查看调整大小后的文件系统容量是否正确

3.3常用ext4命令

  1. 创建一个挂载点(文件夹)挂载文件系统:mkdir  /mnt/dm40
  2. 创建文件系统:mkfs.ext4 /dev/dm40
  3. 挂载ext4文件系统:mount  /dev/dm-40 /mnt/dm40
  4. 查看挂载的文件系统及其容量使用情况:df -h
  5. 查看创建的文件系统:blkid

重新定义ext4文件系统的大小:

四、创建XFS文件系统

格式:
mkfs.xfs  [-b 参数]  [-d 参数]  [-i 参数]  [-l 参数]  [-L 参数]  [-f]  [-r 参数]  设备名称

  • -b:后面接的是区块容量,范围是512B-64K。不过Linux最大为4K
  • -d:后面接的是data section(数据区)的相关参数值
  • -f:如果设备内已经有了文件系统,则需要使用-f强制格式化
  • -i:与inode有较相关的设置
  • -L参数:后面接这个文件系统的标头名称Label name
  • -r参数:指定realtime section(实时运行区)的相关设置值

第一次执行mkfs.xfs可能需要安装:apt-get install xfsprogs
 

4.1创建文件系统

(1)常用命令

mkfs.xfs /dev/dm-40

mkfs.xfs -f /dev/dm-40    #若块设备上包含文件系统,则使用-f来覆盖之前的文件系统

(2)在硬件RAID设备上创建文件系统,检查系统是否正确检查到RAID的条带几何结构

                su:RAID块大小

                sw:RAID中磁盘数量

mkfs.xfs -d su=128k,sw=15, /dev/dm-10

(3)等待系统注册新设备的节点

udevadm settle

4.2备份XFS文件系统xfsdump

(1)磁盘驱动器中备份:使用xfsdump 将文件系统备份到文件或磁带。(xfsdump可将多个备份写入同一个磁带,不会覆盖现有备份)

(2)增量备份:从 0 到 9 的数字表示增加的转储级。增量备份只备份自上一次较低级别转储以来发生变化的文件:

  • 要执行全备份,请对文件系统中执行 0 级转储。
  • 1 级转储是全备份后的第一个增量备份。下一个增量备份为 2 级,它仅备份自 1 级转储以来更改的文件,以此类推,最高到 9 级。

(3)使用大小、子树或 inode 标志从备份中排除文件,以过滤它们。

(1)备份命令

#xfsdump -l 转储级别 -f 备份目录  挂载点替换

xfsdump -l 0 /dev/dm-10 /mnt/dm10   #转储级别0表示全备份,也可设置1-9,表示增量备份

(2)从备份中恢复XFS特性:xfsrestore

  • 简单模式:从0届转储恢复整个文件系统(默认模式)
  • 累计模式:从增量备份模式恢复文件系统:(1-9级)
#xfsrestore -f 备份路径 恢复路径

#恢复xfs备份文件,并将其保存到/mnt/dm10目录下
xfsrestore -f /backup-files/boot.xfsdump /mnt/boot/
xfsrestore -f /backup-files/data.xfsdump /mnt/data/

(3)xfs_growfs增加xfs文件系统大小

        需要先找出xfs文件系统的块大小(KB):xfs_info  /mnt/dm10

#xfs_growfs 文件系统 -D 新大小

xfs_growfs /dev/dm10 -D 10GB

五、其他文件系统格式化

  • mkswap 设备文件名:用于内存交换分区的格式化
  • mkfs.vfta 设备文件名:vfat文件系统格式的格式化

本文基于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
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值