如何在 EBS 卷创建的分区上创建 LVM 逻辑卷?
上次更新日期:2022 年 3 月 15 日
如何使用逻辑卷管理器 (LVM) 在 Amazon Elastic Block Store (Amazon EBS) 卷创建的分区上创建逻辑卷 (LV)?
简短描述
LVM 允许您分配磁盘空间和条带、重新镜像和调整逻辑卷的大小。使用 LVM,您可以将一个 EBS 卷或一组 EBS 卷分配给一个或多个物理卷。
要在 EBS 卷上使用 LVM 并扩展分区,请执行以下步骤:
- 从您的 EBS 卷创建物理卷 (PV)。
- 创建一个卷组 (VG) 并将物理卷添加到该卷组。
- 在 LVM 上创建逻辑卷 (LV) ,并将目录挂载到 LVM 上。
- 创建并挂载文件系统。
- 调整逻辑卷的大小。
注意:有关将 LVM 与基于 Nitro 的实例一起使用的更多信息,请参阅 Red Hat 客户门户网站上的第 11 章“LVM(逻辑卷管理器)”。
解决方法
注意:如果您已在卷上创建并挂载 LVM 以供使用,请按照扩展逻辑卷中的说明开始操作。
在 EBS 卷的分区上创建物理卷
LVM 逻辑卷的底层物理存储单元是一个块储存设备,例如 EBS 卷的分区或整个 EBS 卷。
注意:基于 Nitro 的实例,会将卷作为 NVMe 设备公开。块储存设备名称遵循模式 /dev/nvme1n1、/dev/nvme2n1、/dev/nvme3n1 等等。如果您使用的是基于 Nitro 的实例,请使用适当的设备名称替换以下步骤中的设备名称。有关设备命名的更多信息,请参阅 Linux 上实例的设备名称。
1. 打开 Amazon Elastic Compute Cloud (Amazon EC2) 控制台。
2. 创建 EBS 卷,然后将此卷附加到您的实例。
3. 使用 gdisk 命令创建一个分区。对于变量十六进制代码或 GUID,输入 8e00。以下示例在 /dev/xvdh 上创建分区 /dev/xvdh1。
$ sudo gdisk /dev/xvdh
Command (? for help): n
Partition number (1-1218, default 1): 1
First sector (34-20971486, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-20971486, default = 20971486) or {+-}size{KMGTP}:
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 8e00
Changed type of partition to 'Linux LVM'
...
OK; writing new GUID partition table (GPT) to /dev/xvdh.
The operation has completed successfully.
使用 lsblk 命令确认创建分区:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 8G 0 disk
└─xvda1 202:1 0 8G 0 part /
xvdh 202:80 0 10G 0 disk
└─xvdh1 202:81 0 10G 0 part
4. 使用 pvcreate 命令从分区创建物理卷。以下示例从 /dev/xvdh1 创建一个物理卷:
$ sudo pvcreate /dev/xvdh1
Physical volume "/dev/xvdh1" successfully created.
创建卷组并将物理卷添加到该卷组
使用 vgcreate 命令创建一个卷组,以合并新的物理卷。以下示例使用一个物理卷创建卷组 examplegroup1:
$ sudo vgcreate examplegroup1 /dev/xvdh1
Volume group "examplegroup1" successfully created
使用 vgs 或 vgdisplay 查看卷组详细信息:
$ sudo vgs
VG #PV #LV #SN Attr VSize VFree
examplegroup1 1 0 0 wz--n- <10.00g <10.00g
创建逻辑卷 (LV) 和挂载目录
1. 使用 lvcreate 命令从您的卷组创建逻辑卷(分区)。以下示例从 examplegroup1 卷组创建一个 9GB 逻辑卷 lvexample1:
$ sudo lvcreate -n lvexample1 -L 9G examplegroup1
Logical volume "lvexample1" created
使用 lvs 或 lvdisplay 命令查看逻辑卷详细信息:
$ sudo lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lvexample1 examplegroup1 -wi-a----- 9.00g
2. 使用 mkdir 命令创建一个挂载目录。以下示例创建目录 /mnt1:
$ sudo mkdir /mnt1
创建并挂载文件系统
1. 使用以下命令创建文件系统并挂载分区以供使用。
运行 mkfs -t 命令以创建文件系统。注意:将 xfs 替换为您的文件系统类型(如果不同)。例如,ext2、ext3 或 ext4。
$ sudo mkfs -t xfs /dev/examplegroup1/lvexample1
运行 lsblk -f 命令以验证是否创建了新文件系统。注意:您在上一步中创建的文件系统类型将显示在 FSTYPE 下方。
$ lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
xvda
├─xvda1
└─xvda2 xfs 66e5e079-770e-4359-a9da-5205c3d8d5af /
xvdh
└─xvdh1 LVM2_member 0UnOic-e2ng-XxH5-z0UW-7aTh-RxQK-KMrDqo
└─examplegroup1-lvexample1 xfs 5db36052-81d5-4762-8502-6986ff3964e7
运行 mount 命令以将在上一步中创建的文件系统挂载到挂载目录上:
$ sudo mount /dev/examplegroup1/lvexample1 /mnt1
2. 编辑 /etc/fstab 文件中的挂载选项,以便在重启后新挂载仍然存在。
/dev/examplegroup1/lvexample1 /mnt1 xfs defaults,nofail 0 0
注意:如果您的文件系统类型并非 xfs,请将 xfs 替换为 /etc/fstab 文件中的类型。
扩展逻辑卷
有两个用于扩展逻辑卷的选项:
- 选项 1:增加现有 EBS 卷的大小。
- 选项 2:将其他 EBS 卷添加到您的卷组。
选项 1:增加现有 EBS 卷的大小
注意:当增加现有卷的大小时,大小更改通常在卷进入优化状态后的几秒钟内生效。在优化状态下,卷的性能会受到影响,但不会低于源配置规范。根据您的卷类型,性能更改可能需要几分钟到几小时。有关更多信息,请参阅监控卷修改的进度。
1. 修改现有 EBS 卷的大小。
2. 安装 growpart 实用工具:
$ sudo yum install cloud-utils-growpart
注意:使用以下命令在基于 Debian 或 Ubuntu 的系统上安装 growpart 实用工具:
$ sudo apt install -y cloud-guest-utils
3. 运行 growpart 命令以扩展分区,然后运行 pvresize 命令以调整 PV 的大小。在以下示例中,分区 /dev/xvdh1 已得到扩展:
$ sudo growpart /dev/xvdh 1
CHANGED: disk=/dev/xvdh partition=1: start=2048 old: size=20971519,end=16777182 new: size=41940958,end=41943006
$ sudo pvresize /dev/xvdh1
Physical volume "/dev/xvdh1" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized
使用 pvs 或 pvdisplay 查看物理卷详细信息:
$ sudo pvs
PV VG Fmt Attr PSize PFree
/dev/xvdh1 examplegroup1 lvm2 a-- <20.00g <13.00g
使用 vgs 或 vgdisplay 查看卷组详细信息:
$ sudo vgs
VG #PV #LV #SN Attr VSize VFree
examplegroup1 1 1 0 wz--n- <20.00g <13.00g
4. 运行 lvextend 命令以扩展逻辑卷:
$ sudo lvextend -L 19G /dev/examplegroup1/lvexample1
使用 lvs 或 lvdisplay 命令查看逻辑卷详细信息:
$ sudo lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lvexample1 examplegroup1 -wi-a----- 19.00g
5. 扩展文件系统:
注意:确保在 /etc/fstab 条目中输入正确的文件系统类型。
Ext2、Ext3 和 Ext4 文件系统:
$ sudo resize2fs /dev/examplegroup1/lvexample1
XFS 文件系统:
$ sudo yum install x rogs
$ sudo xfs_growfs /dev/examplegroup1/lvexample1
选项 2:将其他 EBS 卷添加到卷组
1. 创建另一个 EBS 卷(大小为 10GB),然后将卷附加到实例。按照在 EBS 卷的分区上创建物理卷的步骤 3,在设备 /dev/xvdi 上创建分区。然后运行 pvcreate 命令。在以下示例中,该卷的块储存设备名称为 /dev/xvdi1。
$ sudo pvcreate /dev/xvdi1
Physical volume "/dev/xvdi1" successfully created.
2. 使用 vgextend 命令扩展卷组并添加新卷。以下示例将卷组 examplegroup1 扩展为包括卷 /dev/xvdi1:
$ sudo vgextend examplegroup1 /dev/xvdi1
Volume group "examplegroup2" successfully extended
要确认扩展,请运行 vgs 或 vgdisplay 命令。以下示例显示 examplegroup1 卷组中现在有两个 PV:
$ sudo vgs
VG #PV #LV #SN Attr VSize VFree
examplegroup1 2 1 0 wz--n- 29.99g 20.99g
3. 运行 lvextend 命令以扩展逻辑卷:
$ sudo lvextend -L 29G /dev/examplegroup1/lvexample1
4. 调整文件系统的大小:
注意:根据您的使用案例,请按照适用于 XFS 或 Ext2、Ext3 和 Ext4 文件系统的步骤执行操作。
Ext2、Ext3 和 Ext4 文件系统:
$ sudo resize2fs /dev/examplegroup1/lvexample1
XFS 文件系统:
$ sudo xfs_growfs /dev/examplegroup1/lvexample1