什么是数据盘的扩容和缩容?如何完成Linux数据盘的扩容和缩容?一文详解
1. 先明确:PE是LVM架构中的“最小存储管理单元”
要理解PE(Physical Extent,物理扩展块),需先掌握其所属的LVM(Logical Volume Manager,逻辑卷管理器)——它是Linux系统中一种灵活的存储管理工具,核心作用是将多个分散的物理存储设备(如硬盘、分区、RAID阵列)抽象成一个统一的“存储池”,再从“存储池”中按需划分可动态调整大小的逻辑卷,解决传统分区“大小固定、难以调整”的问题。
2. LVM的三大核心组件(PE藏在PV中)
LVM的架构由“物理层→池层→逻辑层”三层组成,PE是连接物理层与逻辑层的关键:
1)物理卷(PV,Physical Volume)
是LVM的“物理存储基础”,可以是物理硬盘(如/dev/sdb)、磁盘分区(如/dev/sdb1)、SAN存储卷或RAID阵列等。
使用前需先将这些存储介质“初始化”为PV,初始化的核心操作就是将PV划分为多个大小相等的“物理扩展块(PE)”——PE是LVM管理存储的“最小单元”(默认大小4MB,可自定义),后续LVM的所有存储分配、迁移都以PE为单位。
2)卷组(VG,Volume Group)
是多个PV的“集合”,相当于一个“存储池”。
比如将/dev/sdb1和/dev/sdc1两个PV加入同一个VG(如datavg),这个VG就拥有了两个PV的所有PE总和,后续划分逻辑卷时,直接从这个“池”中分配PE即可。
3)逻辑卷(LV,Logical Volume)
是从VG中“按需划分”的逻辑存储块,相当于传统分区(如/dev/mapper/datavg-datalv),可直接格式化(如XFS、EXT4)后挂载使用。
LV的最小组成单位是“逻辑扩展块(LE,Logical Extent)”,1个LE会直接映射到1个PE——也就是说,LV的实际存储,本质是占用了VG中若干个PV的PE。
3. PE的核心作用:让存储“可迁移、可灵活调整”
正因为LVM以PE为最小管理单元,才实现了存储的灵活性:
当需要更换旧硬盘、调整存储分布(如把数据从慢盘迁移到快盘)或优化性能时,无需重新分区或迁移文件,只需用pvmove命令将“旧PV上的PE”整体迁移到“同一VG内的新PV”即可——迁移完成后,LV的LE会自动重新映射到新PV的PE,上层系统和应用完全感知不到底层存储的变化。
要不要我帮你整理一份LVM核心概念(PV/VG/LV/PE)的对比表?把每个概念的“定义、作用、关联对象”列清楚,方便你快速查阅。
4.开始测试
添加2块测试盘

两块盘都制作为逻辑卷
[root@myoracle ~]# fdisk /dev/sdb

[root@myoracle ~]# fdisk /dev/sdc

测试开始
[root@myoracle ~]# pvcreate /dev/sdb1 [root@myoracle ~]# vgcreate datavg /dev/sdb1 [root@myoracle ~]# lvcreate -l 100%free -n datalv datavg [root@myoracle ~]# mkfs -t ext4 /dev/datavg/datalv [root@myoracle ~]# mkdir -p /data [root@myoracle ~]# mount /dev/datavg/datalv /data
/data目录下创建测试数据
方案1:[root@myoracle ~]# fallocate -l 4G /data/virtual_4g_file 方案2:[root@myoracle ~]# dd if=/dev/zero of=/data/virtual_4g_file bs=1G count=4 status=progress

选其中1种即可。
[root@myoracle ~]# df -h

查看数据分布
[root@myoracle ~]# pvdisplay /dev/sdb1 -v -m

可以看到有1279个PE,都分给了/dev/datavg/datalv。
添加PV到VG
将第二块盘添加到卷组:
[root@myoracle ~]# pvcreate /dev/sdc1 [root@myoracle ~]# vgextend datavg /dev/sdc1 [root@myoracle ~]# pvdisplay /dev/sdc1 -v -m
再来看新加入的PV上的PE,没有被占用,都是free的。
PE迁移
指定PE迁移这里演示指定PE情况下,将指定的PE(0-1278)从sdb迁移到sdc,指定PE迁移时,一定要确保目标PV上有足够空闲的PE,否则迁移会失败。
[root@myoracle ~]# pvmove /dev/sdb1:0-1278 /dev/sdc1:0-1278

[root@myoracle ~]# pvdisplay /dev/sdb1 -v -m [root@myoracle ~]# pvdisplay /dev/sdc1 -v -m

将 /dev/sdb踢出VG
[root@myoracle ~]# pvdisplay /dev/sdb1 -v -m [root@myoracle ~]# pvs
[root@myoracle ~]#vgreduce datavg /dev/sdb1

到这里就完成了sdb1的数据往sdc1的数据迁移。

可以看到sdb1是空闲的。
接下来验收整块盘迁移,这里也就是缩容了,从大盘迁移到小盘。只要小盘的空间够用。
[root@myoracle ~]# vgextend datavg /dev/sdb1 [root@myoracle ~]# pvmove /dev/sdc1 /dev/sdb1



这里可以看到已经迁移成功了。
/dev/sdc踢出VG,取消盘即可。
[root@myoracle ~]# vgreduce datavg /dev/sdc1
Linux初始化数据盘全流程
本文以 Ubuntu x86_64操作系统为例
查看新增数据盘
执行命令
fdisk -l
查看新增数据盘。

当前的云主机有两块磁盘,/dev/vda是默认的系统盘,且已经拥有了一个分区/dev/vda1,/dev/vdb是本次新增需要初始化的数据盘,容量为200G。
创建MBR分区
下面介绍使用fdisk工具为新增数据盘/dev/vdb创建MBR分区的操作。
执行命令
fdisk /dev/vdb
进入fdisk分区工具。

输入“n”,按“Enter”,开始新建分区。

从回显信息可以看到,磁盘有两种分区类型:“p”表示主要分区,“e”表示延伸分区。
以创建一个主要分区为例,输入“p”,按“Enter”,开始创建一个主分区。

“Partition number”表示主分区编号,用户可以选择1到4之间的数字。
以分区编号选择“1”为例,用户在这里可以输入主分区编号“1”,按“Enter”。
“First sector”表示初始磁柱区域,可以选择2048-419430399,默认为2048。
以选择默认初始磁柱编号2048为例,直接按“Enter”。
“Last sector”表示截止磁柱区域,可以选择2048-419430399,默认为83886079。
以选择默认截止磁柱编号419430399为例,直接按“Enter”。
分区已经创建成功,您已经为200GB的数据盘新建了1个分区。
输入“p”,按“Enter”,查看新建分区的详细信息。

输入“w”,按“Enter”,将分区结果写入分区表中。回显如下:

出现以上信息说明为磁盘/dev/vdb创建分区/dev/vdb1完成。如果之前分区操作有误,用户可输入“q”来退出fdisk分区工具,并且之前的分区结果也不会被保留。
最后,执行命令 partprobe,将新的分区表变更同步至操作系统即可。
创建文件系统并挂载
执行命令
mkfs -t ext4 /dev/vdb1
为新建的分区创建文件系统,本示例中创建的是ext4格式的文件系统,请根据您的业务需求选择合适的文件系统。
说明
对于容量较大的云硬盘,mkfs命令可能执行时间较长,如需要缩短命令执行时间,您可以为mkfs命令添加如下参数:
ext2、ext3、ext4文件系统:添加-E nodiscard参数
xfs文件系统:添加-K参数

格式化需要等待一段时间,不要退出,直到显示格式化完成。
执行命令 ,新建挂载点。本示例中/mnt/sdc为挂载点。
mkdir /mnt/sdc
执行命令将新建分区挂载到新建的挂载路径下。
mount /dev/vdb1 /mnt/sdc
执行命令 查看挂载结果。
df -TH

表示新建分区“/dev/vdb1”已挂载至“/mnt/sdc”。
设置开机自动挂载磁盘
如果您需要在主机系统启动时自动挂载磁盘,不能采用在/etc/fstab直接指定/dev/vdb1的方法,因为设备的顺序编码在关闭或者开启主机过程中可能发生改变,例如/dev/vdb1可能会变成/dev/vdb2。推荐使用UUID来配置自动挂载数据盘。磁盘的UUID(Universally Unique Identifier)是Linux系统为磁盘分区提供的唯一的标识字符串。
执行命令,查询磁盘分区/dev/vdb1的UUID和文件系统类型。
blkid /dev/vdb1

执行命令
vi /etc/fstab
使用VI编辑器打开“fstab”文件。按“i”,进入编辑模式,将光标移至文件末尾,按“Enter”,添加如下内容,其中UUID=处的内容请输入您在上一步中查询到的UUID,操作如图所示:

此处内容有所区别:
在ubuntu中 前缀是 /dev/disk/by-uuid
在centos中 前缀是 UUID=
与已有的配置保持一致。
注意最后一个参数 是 2

按“ESC”后,输入“:wq”,按“Enter”。保存设置并退出编辑器。
验证自动挂载功能,首先卸载已挂载的分区,执行命令
umount /dev/vdb1

执行命令 来重新加载/etc/fstab文件的所有内容
mount -a

执行命令 来查询文件系统挂载,操作及回显如图所示:
mount |grep /mnt/sdc

如果出现图中回显信息,说明自动挂载设置成功。
以上就是什么是数据盘的扩容和缩容?如何完成Linux数据盘的扩容和缩容的详细内容,更多相关资料请阅读主机测评网其它文章!
本文由主机测评网发布,不代表主机测评网立场,转载联系作者并注明出处:https:///linux/8810.html
