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/vdbVG Name testPV Size 200.00 GiB / not usable 4.00 MiBAllocatable yesPE Size 4.00 MiBTotal PE 51199Free PE 51199Allocated PE 0PV UUID gQB42U-IKt2-517n-RB3q-p9ob-bAz7-Ggvjtd
pvdisplay 命令(不带任何参数),可列出系统中所有物理卷的信息。也可以指定一个或多个物理卷名称作为参数,仅显示指定物理卷的信息。pvdisplay 命令的输出结果包括以下信息: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 命令时,请注意备份重要数据,并谨慎操作,以免造成数据丢失或其他不必要的损失。/dev/sdb1 设置为不可分配(需要先将其分配给逻辑卷组,下同):pvchange -x n /dev/sdb1
pvchange -x y -a
/dev/sdb1 设置为不可分配的操作:pvchange -x n -t /dev/sdb1
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。myvg:vgcreate -s 16M myvg /dev/sdb1
vgdisplay myvg 或 vgs myvg 验证卷组状态。PE 大小在卷组创建后难以调整,请您在创建前根据业务需要合理规划。vgdisplay 命令用于查看卷组的 UUID、大小、状态、物理卷数量、逻辑卷数量和空闲 PE 等详细信息。以下示例查看卷组 myvg:vgdisplay myvg
--- Volume group ---VG Name myvgVG Status resizableCur LV 0Cur PV 1VG Size <200.00 GiBPE Size 4.00 MiBTotal PE 51199Alloc PE / Size 0 / 0Free PE / Size 51199 / <200.00 GiB
vgs
VG #PV #LV #SN Attr VSize VFreemyvg 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 前必须确保卷组处于非激活状态。myvg 中的逻辑卷(执行成功时无输出):vgchange -a n myvg
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:显示详细执行信息。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:测试操作,不写入卷组元数据。vg01 中移除物理卷 /dev/sdb1:vgreduce vg01 /dev/sdb1
vg01 中所有空闲物理卷:vgreduce -a vg01
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:测试操作,不写入卷组元数据。vg01 的操作:vgremove -t vg01
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 会清除该逻辑卷中的现有数据。请您仅对新建或确认无需保留数据的逻辑卷执行格式化操作。vg01 中创建大小为 10GiB 的逻辑卷 lv01:lvcreate -L 10G -n lv01 vg01
Logical volume "lv01" created.
lv02,然后创建 ext4 文件系统:lvcreate -L 100M -n lv02 vg01mkfs.ext4 /dev/vg01/lv02
lv03:lvcreate -L 1T -n lv03 -r 256 vg01
lvs -o lv_name,vg_name,lv_size,lv_attr 验证逻辑卷状态。lvdisplay 命令用于查看逻辑卷的名称、路径、大小、状态和卷组等详细信息。lv01 的详细信息:lvdisplay /dev/vg01/lv01
--- Logical volume ---LV Path /dev/vg01/lv01LV Name lv01VG Name vg01LV Status availableLV Size 10.00 GiB
lvdisplay
lv01:lvdisplay -c /dev/vg01/lv01
lvs 命令。lvextend 命令用于从卷组的空闲空间中为逻辑卷增加容量。常用选项如下:-L, --size:指定扩展后的绝对大小;使用 + 前缀时,表示在当前大小基础上增加容量。-l, --extents:按 PE 数量或卷组空间百分比扩展逻辑卷。-r, --resizefs:扩展逻辑卷后,同时调整受支持的文件系统大小。-r,扩展逻辑卷后还需根据文件系统类型单独扩展文件系统。lv01 的容量扩展到 20GiB:lvextend -L 20G /dev/vg01/lv01
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:同时调整受支持的文件系统大小。lv01 扩展到 20GiB,并同步扩展文件系统:lvresize -L 20G -r /dev/vg01/lv01
lv02 缩小到 100MiB,并同步调整文件系统:lvresize -L 100M -r /dev/vg01/lv02
lvs 和对应文件系统的检查命令验证逻辑卷与文件系统状态。lvremove 命令用于删除逻辑卷。删除后,逻辑卷中的文件系统和数据也将一并丢失。-f 和 -y 会绕过部分确认,请勿在未核对目标逻辑卷时使用。lvremove [options] <LV>
-f, --force:强制执行操作并绕过部分检查。-y, --yes:对确认提示自动回答“是”。lv01 上的文件系统,然后删除该逻辑卷:umount /dev/vg01/lv01lvremove /dev/vg01/lv01
Logical volume "lv01" successfully removed.
lv02:lvremove -f /dev/vg01/lv02
lvs 确认逻辑卷列表中已无目标逻辑卷。/dev/vg01/lv01 和 ext4 文件系统为例。lvs /dev/vg01/lv01
LV VG Attr LSizelv01 vg01 -wi-a----- 10.00g
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
mkdir -p /mnt/myfs
/mnt/myfs(执行成功时无输出):mount /dev/vg01/lv01 /mnt/myfs
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 验证;无输出表示该挂载点已卸载。文档反馈