xfs ext4 结合lvm 扩容、缩容 —— 筑梦之路

ext4 文件系统扩容、缩容操作

扩容系统根分区

根文件系统在 /dev/VolGroup/lv_root 逻辑卷上,文件系统类型为ext4,大小为10G,现在要将其扩容成20G。

给空闲空间分区

# 调整分区类型为LVM,也就是8e类型
fdisk /dev/sdb
    # 选定分区后使用 t 选项,然后选择8e类型
 
# 通知内核重读分区表
partx -a /dev/sdb

# 查看
cat /proc/partitions

lsblk
扩容操作

# 1. 创建pv
pvcreate /dev/sdb7

# 2. 对根 / 所在的vg进行扩容,将/dev/sdb7这个pv添加到VolGroup这个vg中去
vgextend VolGroup /dev/sdb7

# 3. 对根 / 所在的lv进行扩容
# 先通过vgdisplay命令查看对应vg中空闲的pe数量,然后再将这些空闲的pe添加到lv中去
lvextend -l +2194 /dev/VolGroup/lv_root 

# 4. 扩容文件系统
resize2fs /dev/VolGroup/lv_root  # 自动扩容,将可分配的空间全部分配完
# 或者扩容成指定的大小 resize2fs /dev/VolGroup/lv_root  15G

# 5. 查看是否扩容成功
df -hT
  • 注意:LV扩容前最好先卸载挂载的设备,然后再使用 lvextend 进行扩容,这里因为是对根文件系统进行扩容,故而没有卸载

缩容

/dev/sdb6 和 /dev/sdb4 一共分区大小为5G,分区类型为8e,它们被添加到了卷组VolGroup中,并做成 lv_mnt 逻辑卷挂载在了 /mnt 目录。

现在要将 lv_mnt 缩小成3G,并且不能损坏其数据

# 1. 卸载设备
umount /mnt

# 2. 进行磁盘检查
e2fsck -f /dev/VolGroup/lv_mnt

# 3. 收缩文件系统
resize2fs /dev/VolGroup/lv_mnt 3G

# 4. 收缩LV
lvreduce -L -2G /dev/VolGroup/lv_mnt 

# 5. 将PE移动到空闲的地方
### 查看哪些PV上有空闲的PE
pvdisplay | grep 'PV Name| Free'
### 将PE移动到有空闲PE的PV上
pvmove  /dev/sdb6:0-99  /dev/sdb4

# 6. 从VG中移除PV
vgreduce VolGroup /dev/sdb6

# 7. 移除该PV
pvremove /dev/sdb6

xfs 文件系统扩容、缩容操作

扩容

# 1. 与CentOS6一样,先要创建一个8e格式磁盘分区
fdisk /dev/sdb

# 2. 创建PV
pvcreate /dev/sdb5

# 3. 将pv添加到根所在的VG中
vgextend centos /dev/sdb5

# 4. 扩容LV# 特别注意:在扩容LV之前最好要先卸载设备,这里没有卸载是因为扩容的根文件系统lvextend -l +2048 /dev/centos/root

lvextend -l +100%FREE -r /dev/centos/root

参数-r 在扩容lv的同时扩容文件系统

# 5. 扩容xfs文件系统
xfs_growfs /dev/centos/root

# 6. 查看是否扩容成功
df -hT

缩容

xfs文件系统只能扩容而无法收缩,如果要想收缩,可以先备份,之后再进行减容重建,再恢复数据。

---------------备份

# xfsdump的方式备份
xfsdump -f /data/home.img /home
    -f 备份保存的位置

# cp直接复制文件的方式备份
cp -aR /home /data/home

----------------缩容重建

# 1. 卸载home目录
umount /home/

# 2. 删除 lv_home
### 删除之前要备份或者将PE移动到空闲的PV中
lvremove /dev/centos/home

# 3. 扩容根所在的的 lv
lvresize -L 20G /dev/centos/root

# 4. 扩容根文件系统
xfs_growfs /dev/centos/root

# 5. 重建home的LV
lvcreate -L 1G -n home centos

# 6. 格式化并挂载
mkfs.xfs /dev/centos/home
mount /dev/centos/home /home

# 7. 还原数据
xfsrestore -f /data/home.img /home

  • 注意:尽量避免对重要数据所在的文件系统做收缩操作

lvm逻辑卷管理

本文基于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明显快。
LVM是逻辑卷管理器(Logical Volume Manager)的缩写,它是一种为Linux操作系统提供的逻辑卷管理解决方案。它的主要作用是将物理存储器抽象成一个或多个逻辑卷,并提供了灵活的管理和配置功能。 XFSext4LVM所支持的两种文件系统格式,它们分别具有不同的特点和用途。 XFS是高性能的日志文件系统,主要用于大型企业级应用和高性能服务器。它能够支持大容量的文件系统(最大达到18EB),并具有高性能的文件系统操作和快速的文件访问时间。XFS还提供了优异的容错和数据完整性保护机制,适用于高负载的工作负荷和大容量的数据存储。 而ext4Linux操作系统默认的文件系统格式,也是ext文件系统的最新版本。它在ext3的基础上增加了一些新的功能和改进,如更好的性能、更高的文件系统大小限制、更高的最大文件大小和更好的容错机制。ext4也具有很好的兼容性,可以在各种类型的硬件设备上良好运行。 选择使用哪种格式(XFS还是ext4)取决于具体的使用场景和需求。如果你需要一个适用于大容量数据存储的高性能文件系统,推荐使用XFS。而如果你只是在一般环境下使用,并且需要更好的兼容性和稳定性,则选择ext4可能更合适。 综上所述,LVM可以配合XFSext4这两种不同的文件系统格式使用,具体选择取决于应用场景和需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值