三、创建物理卷
使用 pvcreate 命令将块设备初始化为 LVM 物理卷。以下以 /dev/vdb 为例:
注意:警告:
注意:pvcreate 会在目标设备上写入 LVM 标签和元数据。若设备中已存在文件系统或其他签名,继续操作可能破坏原有数据。请你在执行前确认目标设备正确,并已备份需要保留的数据。
pvcreate /dev/vdb
输出示例:
Physical volume "/dev/vdb" successfully created.
若目标设备中已存在文件系统签名,命令会提示你确认是否清除该签名,输出示例如下:
WARNING: ext4 signature detected on /dev/vdb at offset 1080. Wipe it? [y/n]:
创建时默认会以设备目前可用最大大小创建。
四、查看物理卷
·pvdisplay 命令用于显示物理卷(Physical Volume)的属性信息,包括物理卷的名称、UUID、大小、状态、分配情况等等。
pvdisplay /dev/vdb
输出示例:
— Physical volume — PV Name /dev/vdb VG Name test PV Size 200.00 GiB / not usable 4.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 51199 Free PE 51199 Allocated PE 0 PV UUID gQB42U-IKt2-517n-RB3q-p9ob-bAz7-Ggvjtd
直接执行 pvdisplay 命令(不带任何参数),可列出系统中所有物理卷的信息。也可以指定一个或多个物理卷名称作为参数,仅显示指定物理卷的信息。pvdisplay 命令的输出结果包括以下信息:
·PV Name:物理卷的名称
·UUID:物理卷的 UUID
·Total PE / Free PE:物理卷的大小
·Allocatable / Exported / Missing:物理卷的状态
·物理卷的属性(例如,是否加密、是否只读等等)
·VG Name:物理卷所属的卷组
·LV Name:物理卷上的逻辑卷
·pvs 用于查看物理卷的状态:
pvs
输出示例:
PV VG Fmt Attr PSize PFree /dev/vdb test lvm2 a– <200.00g <200.00g
五、修改物理卷属性
pvchange 命令是 Linux 系统中 LVM(逻辑卷管理)的一个命令,用于更改物理卷的属性。以下是 pvchange 命令的使用方法:
pvchange [options] [PhysicalVolumePath…]
其中,PhysicalVolumePath 是需要更改属性的物理卷路径,可以指定多个物理卷路径,用空格分隔。以下是一些常用的选项:
·-a, –all:更改所有物理卷的属性。
·-x, –allocatable y/n: 设置物理卷是否可分配。y 表示可分配,n 表示不可分配。
·-t, –test: 测试模式,不会实际更改物理卷的属性,而是显示将要执行的操作。
注意:在使用 pvchange 命令时,请注意备份重要数据,并谨慎操作,以免造成数据丢失或其他不必要的损失。
以下示例将分别修改单个物理卷、全部物理卷以及使用测试模式验证配置:
1. 将物理卷 /dev/sdb1 设置为不可分配(需要先将其分配给逻辑卷组,下同):
pvchange -x n /dev/sdb1
2. 将所有物理卷设置为可分配:
pvchange -x y -a
3. 测试将物理卷 /dev/sdb1 设置为不可分配的操作:
pvchange -x n -t /dev/sdb1
六、删除物理卷
删除物理卷会清除该物理卷上的 LVM 元数据。删除前请确认该物理卷已不属于任何卷组,并已备份需要保留的数据:
注意:警告:
注意:若物理卷仍属于某个卷组,请先使用 vgreduce 将其从卷组中移除,否则 pvremove 会执行失败;强行删除属于卷组的物理卷可能导致该卷组中的数据丢失。
pvremove /dev/vdb
输出示例:
Labels on physical volume "/dev/vdb" successfully wiped.
八、创建卷组
vgcreate 命令用于创建卷组(Volume Group,VG),并将一个或多个物理卷(Physical Volume,PV)加入该卷组。执行前,请你确认目标物理卷已通过 pvcreate 初始化,且未被其他卷组使用。
以下示例创建名为 myvg 的卷组,并加入物理卷 /dev/sdb1:
vgcreate myvg /dev/sdb1
输出示例:
Volume group "myvg" successfully created
如需在创建卷组时加入多个物理卷,请在命令末尾依次指定设备路径:
vgcreate myvg /dev/sdb1 /dev/sdc1 /dev/sdd1
常用选项如下:
·-s, –physicalextentsize:指定物理区段(PE)的大小。
·-l, –maxlogicalvolumes:指定卷组中允许创建的最大逻辑卷数量。
·-p, –maxphysicalvolumes:指定卷组允许包含的最大物理卷数量。
·-A, –autobackup y|n:指定变更后是否自动备份卷组元数据,建议保持为 y。
以下示例创建 PE 大小为 16MiB 的卷组 myvg:
vgcreate -s 16M myvg /dev/sdb1
创建完成后,请执行 vgdisplay myvg 或 vgs myvg 验证卷组状态。PE 大小在卷组创建后难以调整,请你在创建前根据业务需要合理规划。
九、查看卷组
vgdisplay 命令用于查看卷组的 UUID、大小、状态、物理卷数量、逻辑卷数量和空闲 PE 等详细信息。以下示例查看卷组 myvg:
vgdisplay myvg
输出示例(节选):
— Volume group — VG Name myvg VG Status resizable Cur LV 0 Cur PV 1 VG Size <200.00 GiB PE Size 4.00 MiB Total PE 51199 Alloc PE / Size 0 / 0 Free PE / Size 51199 / <200.00 GiB
如需以表格形式查看所有卷组,可执行:
vgs
输出示例:
VG #PV #LV #SN Attr VSize VFree myvg 1 0 0 wz–n- <200.00g <200.00g
你可以根据输出中的 VG Status、Cur PV、Cur LV、VG Size 和 VFree 等字段判断卷组是否可用以及剩余空间是否充足。
十、修改卷组属性
vgchange 命令用于修改卷组及其逻辑卷的激活状态、卷组是否允许增删物理卷等属性。常用选项如下:
·-a, –activate y|n|ay:激活或停用卷组中的逻辑卷。y 表示激活,n 表示停用,ay 表示自动激活。
·-x, –resizeable y|n:允许或禁止通过 vgextend、vgreduce 增加或移除物理卷。
·-u, –uuid:为卷组生成新的随机 UUID。修改 UUID 前必须确保卷组处于非激活状态。
注意:警告:
注意:停用卷组会使其中的逻辑卷无法访问,可能导致正在使用这些逻辑卷的业务中断。执行前请你先卸载相关文件系统,并确认没有进程正在使用对应逻辑卷。
1. 停用卷组 myvg 中的逻辑卷(执行成功时无输出):
vgchange -a n myvg
2. 重新激活卷组 myvg 中的逻辑卷:
vgchange -a y myvg
输出示例:
1 logical volume(s) in volume group "myvg" now active
修改完成后,可执行 lvs -o lv_name,vg_name,lv_attr 验证逻辑卷的激活状态。
十二、扩展
vgextend 命令用于将一个或多个物理卷添加到已有卷组中,从而增加卷组可分配给逻辑卷的空间。执行前,请你确认待添加设备未被其他卷组使用。
以下示例将物理卷 /dev/sdc1 添加到卷组 myvg:
vgextend myvg /dev/sdc1
输出示例:
Volume group "myvg" successfully extended
如需一次添加多个物理卷,请在命令末尾依次指定设备路径:
vgextend myvg /dev/sdc1 /dev/sdd1
常用选项如下:
·-A, –autobackup y|n:指定变更后是否自动备份卷组元数据,建议保持为 y。
·-t, –test:测试操作,不写入卷组元数据。
·-v, –verbose:显示详细执行信息。
卷组的 PE 大小由 vgcreate -s 在创建时确定,不能通过 vgextend 修改。扩展完成后,请执行以下命令验证卷组空间:
vgs myvg
请确认输出中的物理卷数量和空闲空间符合预期。
十三、缩减
vgreduce 命令用于从卷组中移除一个或多个未被使用的物理卷。若待移除物理卷仍包含已分配的 PE,请先使用 pvmove 将数据迁移到同一卷组中的其他物理卷。
注意:警告:
注意:移除仍承载数据的物理卷会导致逻辑卷不完整和数据丢失。执行前请你使用 pvs -o pv_name,pv_used 确认目标物理卷的 PUsed 为 0,并备份重要数据。
命令语法如下:
vgreduce [options] <VG> <PV> [<PV>…]
其中,<VG> 表示卷组名称,<PV> 表示需要移除的物理卷路径。常用选项如下:
·-a, –all:移除卷组中所有空闲、未承载数据的物理卷。
·-f, –force:强制执行操作,可能导致数据丢失,不建议在常规场景使用。
·-t, –test:测试操作,不写入卷组元数据。
示例命令如下:
1. 从卷组 vg01 中移除物理卷 /dev/sdb1:
vgreduce vg01 /dev/sdb1
2. 移除卷组 vg01 中所有空闲物理卷:
vgreduce -a vg01
3. 使用测试模式检查从卷组 vg01 移除 /dev/sdb1 的操作:
vgreduce -t vg01 /dev/sdb1
实际移除完成后,请执行 pvs 或 vgs -o vg_name,pv_count 验证卷组中的物理卷数量。
十四、删除卷组
vgremove 命令用于删除卷组以及卷组中的逻辑卷。删除后,卷组中的物理卷仍保留 LVM 物理卷标签,可重新用于其他卷组。
注意:警告:
注意:删除卷组会删除其中的全部逻辑卷及其数据,且不可恢复。执行前请你卸载卷组内逻辑卷对应的文件系统,确认相关数据已备份,并优先使用测试模式验证。
命令语法如下:
vgremove [options] <VG>
其中,<VG> 表示需要删除的卷组名称。常用选项如下:
·-f, –force:强制执行操作并绕过部分确认,不建议在常规场景使用。
·-t, –test:测试操作,不写入卷组元数据。
示例命令如下:
1. 使用测试模式检查删除卷组 vg01 的操作:
vgremove -t vg01
2. 确认无误后,删除卷组 vg01:
vgremove vg01
输出示例:
Volume group "vg01" successfully removed
删除完成后,请执行 vgs 确认卷组列表中已无 vg01。
十六、创建逻辑卷
lvcreate 命令用于从卷组的空闲空间中创建逻辑卷。该命令只创建块设备,不负责创建 ext4、xfs 等文件系统。
命令语法如下:
lvcreate -L <size> -n <LV> <VG>
其中,<size> 表示逻辑卷大小,<LV> 表示逻辑卷名称,<VG> 表示卷组名称。常用选项如下:
·-L, –size:指定逻辑卷的大小,可使用 K、M、G、T 等单位。
·-l, –extents:按 PE 数量或卷组空间百分比指定逻辑卷大小。
·-n, –name:指定逻辑卷名称。
·-r, –readahead:指定逻辑卷的预读扇区数,也可设置为 auto 或 none。
注意:警告:
注意:在逻辑卷上执行 mkfs 会清除该逻辑卷中的现有数据。请你仅对新建或确认无需保留数据的逻辑卷执行格式化操作。
示例命令如下:
1. 在卷组 vg01 中创建大小为 10GiB 的逻辑卷 lv01:
lvcreate -L 10G -n lv01 vg01
输出示例:
Logical volume "lv01" created.
2. 创建大小为 100MiB 的逻辑卷 lv02,然后创建 ext4 文件系统:
lvcreate -L 100M -n lv02 vg01mkfs.ext4 /dev/vg01/lv02
3. 创建大小为 1TiB、预读扇区数为 256 的逻辑卷 lv03:
lvcreate -L 1T -n lv03 -r 256 vg01
创建完成后,请执行 lvs -o lv_name,vg_name,lv_size,lv_attr 验证逻辑卷状态。
十七、查看逻辑卷
lvdisplay 命令用于查看逻辑卷的名称、路径、大小、状态和卷组等详细信息。
示例命令如下:
1. 查看逻辑卷 lv01 的详细信息:
lvdisplay /dev/vg01/lv01
输出示例(节选):
— Logical volume — LV Path /dev/vg01/lv01 LV Name lv01 VG Name vg01 LV Status available LV Size 10.00 GiB
2. 查看系统中的全部逻辑卷:
lvdisplay
3. 以冒号分隔格式查看逻辑卷 lv01:
lvdisplay -c /dev/vg01/lv01
如需以表格形式查看逻辑卷,建议使用 lvs 命令。
十八、扩展逻辑卷
lvextend 命令用于从卷组的空闲空间中为逻辑卷增加容量。常用选项如下:
·-L, –size:指定扩展后的绝对大小;使用 + 前缀时,表示在当前大小基础上增加容量。
·-l, –extents:按 PE 数量或卷组空间百分比扩展逻辑卷。
·-r, –resizefs:扩展逻辑卷后,同时调整受支持的文件系统大小。
注意:扩展前请你确认卷组剩余空间充足,并备份重要数据。若未使用 -r,扩展逻辑卷后还需根据文件系统类型单独扩展文件系统。
示例命令如下:
1. 将逻辑卷 lv01 的容量扩展到 20GiB:
lvextend -L 20G /dev/vg01/lv01
2. 将逻辑卷 lv02 扩展到 200MiB,并同步调整文件系统大小:
lvextend -L 200M -r /dev/vg01/lv02
扩展完成后,请执行 lvs /dev/vg01/lv01 /dev/vg01/lv02 验证逻辑卷容量。若未使用 -r,ext4 文件系统可使用 resize2fs 扩展,已挂载的 xfs 文件系统应使用 xfs_growfs <挂载点> 扩展。
十九、调整逻辑卷大小
lvresize 命令既可扩展逻辑卷,也可缩小逻辑卷。常用选项如下:
·-L, –size:指定调整后的绝对大小;使用 + 或 – 前缀时,表示增加或减少指定容量。
·-l, –extents:按 PE 数量或卷组空间百分比调整逻辑卷大小。
·-r, –resizefs:同时调整受支持的文件系统大小。
注意:警告:
注意:缩小逻辑卷可能截断文件系统数据并造成不可恢复的数据丢失。执行前请你完成数据备份,确认文件系统支持缩小,并确保文件系统已先安全缩小到不大于目标逻辑卷容量。xfs 文件系统不支持原地缩小。
示例命令如下:
1. 将逻辑卷 lv01 扩展到 20GiB,并同步扩展文件系统:
lvresize -L 20G -r /dev/vg01/lv01
2. 以下命令仅适用于已确认可安全缩小的文件系统,将逻辑卷 lv02 缩小到 100MiB,并同步调整文件系统:
lvresize -L 100M -r /dev/vg01/lv02
调整完成后,请执行 lvs 和对应文件系统的检查命令验证逻辑卷与文件系统状态。
20、删除逻辑卷
lvremove 命令用于删除逻辑卷。删除后,逻辑卷中的文件系统和数据也将一并丢失。
注意:警告:
注意:删除逻辑卷会永久删除其中的数据,且不可恢复。执行前请你备份重要数据,并先卸载该逻辑卷上的文件系统。-f 和 -y 会绕过部分确认,请勿在未核对目标逻辑卷时使用。
命令语法如下:
lvremove [options] <LV>
常用选项如下:
·-f, –force:强制执行操作并绕过部分检查。
·-y, –yes:对确认提示自动回答“是”。
示例命令如下:
1. 卸载逻辑卷 lv01 上的文件系统,然后删除该逻辑卷:
umount /dev/vg01/lv01lvremove /dev/vg01/lv01
输出示例:
Logical volume "lv01" successfully removed.
2. 在已确认目标无误的情况下,强制删除逻辑卷 lv02:
lvremove -f /dev/vg01/lv02
删除完成后,请执行 lvs 确认逻辑卷列表中已无目标逻辑卷。
21、文件系统管理
逻辑卷创建完成后,可将其作为普通块设备创建文件系统并挂载使用。以下以逻辑卷 /dev/vg01/lv01 和 ext4 文件系统为例。
注意:警告:
注意:创建文件系统会清除目标逻辑卷中的全部现有数据,且不可恢复。请你在执行前确认目标逻辑卷正确,并已备份需要保留的数据。
1. 确认逻辑卷存在且状态正常:
lvs /dev/vg01/lv01
输出示例:
LV VG Attr LSize lv01 vg01 -wi-a—– 10.00g
2. 在逻辑卷上创建 ext4 文件系统:
mkfs.ext4 /dev/vg01/lv01
输出示例(节选):
Creating filesystem with 2621440 4k blocks and 655360 inodesAllocating group tables: doneWriting inode tables: doneCreating journal: doneWriting superblocks and filesystem accounting information: done
3. 创建挂载点(执行成功时无输出):
mkdir -p /mnt/myfs
4. 将逻辑卷临时挂载到 /mnt/myfs(执行成功时无输出):
mount /dev/vg01/lv01 /mnt/myfs
5. 验证文件系统已成功挂载:
findmnt /mnt/myfs
输出示例:
TARGET SOURCE FSTYPE OPTIONS/mnt/myfs /dev/mapper/vg01-lv01 ext4 rw,relatime
上述 mount 命令创建的是临时挂载,系统重启后失效。如需永久挂载,请先执行 blkid /dev/vg01/lv01 获取文件系统 UUID,再将以下配置添加到 /etc/fstab,并将示例 UUID 替换为实际值:
UUID=<实际UUID> /mnt/myfs ext4 defaults 0 2
保存后,执行以下命令验证 /etc/fstab 配置。执行成功时无输出:
mount -a
如需卸载文件系统,请先确认没有进程正在使用挂载点,再执行:
umount /mnt/myfs
卸载完成后,可执行 findmnt /mnt/myfs 验证;无输出表示该挂载点已卸载。