如何使用 LVM 在 EBS 卷的分区上创建逻辑卷?
我想使用逻辑卷管理器 (LVM) 在我的 Amazon Elastic Block Store (Amazon EBS) 卷的分区上创建 LV。
解决方法
如果您已经创建并挂载 LV,请继续查看 Extend the LV(扩展 LV)部分。
在卷的分区上创建 PV
LV 的底层物理存储单元是块设备,例如卷的分区或整个卷。
**注意:**基于 Nitro 的实例会将卷作为 NVMe 设备公开。块设备名称遵循模式 /dev/nvme1n1、/dev/nvme2n1、/dev/nvme3n1,以此类推。如果使用的是基于 Nitro 的实例,请将以下步骤中的设备名称替换为相应的设备名称。有关详细信息,请参阅 Amazon EC2 实例上卷的设备名称。
要在卷的分区上创建物理卷,请完成以下步骤:
-
运行以下命令安装 LVM:
sudo yum install lvm2 -y
**注意:**对于基于 Debian 或 Ubuntu 的系统,运行以下命令安装 growpart 实用程序:
sudo apt-get install -y lvm2
-
运行 gdisk 命令创建分区。对于命令提示符,输入 n。对于变量十六进制代码或 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
-
运行 pvcreate 命令从分区创建物理卷 (PV)。以下示例从 /dev/xvdh1 创建了 PV:
sudo pvcreate /dev/xvdh1
输出示例:
Physical volume "/dev/xvdh1" successfully created.
创建卷组并将 PV 添加到卷组中
完成以下步骤:
-
运行 vgcreate 命令创建组合新 PV 的卷组。以下示例使用一个 PV 创建 examplegroup1 卷组:
sudo vgcreate examplegroup1 /dev/xvdh1
输出示例:
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 和挂载目录
完成以下步骤:
-
运行 lvcreate 命令从您的卷组创建 LV。以下示例从 examplegroup1 卷组创建了一个 9GB 的 LV lvexample1:
sudo lvcreate -n lvexample1 -L 9G examplegroup1
输出示例:
volume "lvexample1" created
-
运行 lvs 或 lvdisplay 命令查看 LV 详细信息:
sudo lvs
输出示例:
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lvexample1 examplegroup1 -wi-a----- 9.00g
-
运行 mkdir 命令创建挂载目录。以下示例创建了 /mnt1 目录:
sudo mkdir /mnt1
创建和挂载文件系统
完成以下步骤:
-
运行 mkfs -t 命令以创建文件系统:
sudo mkfs -t xfs /dev/examplegroup1/lvexample1
**注意:**将 xfs 替换为您的文件系统类型。例如,使用 ext2、ext3 或者 ext4。
-
运行 lsblk -f 命令以验证文件系统是否已创建:
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
**注意:**文件系统类型显示在 FSTYPE 下。
-
运行 mount 命令将文件系统挂载到挂载目录上:
sudo mount /dev/examplegroup1/lvexample1 /mnt1
-
编辑 /etc/fstab 文件中的挂载选项,以便在重启后新挂载仍然存在:
/dev/examplegroup1/lvexample1 /mnt1 xfs defaults,nofail 0 0
**注意:**将 xfs 替换为您的文件系统类型。
扩展 LV
要扩展 LV,请增加现有 EBS 卷的大小,或将 EBS 卷添加到卷组中。
增加现有 EBS 卷的大小
**注意:**在增加现有卷的大小时,大小更改通常在卷进入 Optimizing(正在优化)状态后的几秒钟内生效。但是,如果卷处于 Optimizing(正在优化)状态,则卷性能介于源和目标配置规格之间。根据卷类型,性能更改可能需要几分钟到几小时不等。有关详细信息,请参阅监控 Amazon EBS 卷修改的进度。
要增加现有 EBS 卷的大小,请完成以下步骤:
-
安装 growpart 实用程序:
sudo yum install cloud-utils-growpart -y
**注意:**要在基于 Debian 或 Ubuntu 的系统上安装 growpart 实用程序,请运行以下命令:
sudo apt install -y cloud-guest-utils
-
运行 growpart 命令来扩展分区。在以下示例中,/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
-
运行 pvresize 命令来调整 PV 的大小:
sudo pvresize /dev/xvdh1
输出示例:
Physical volume "/dev/xvdh1" changed 1 physical volume(s) resized or updated / 0 physical volume(s) not resized
-
运行 pvs 或 pvdisplay 命令查看 PV 详细信息:
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
-
运行 lvextend 命令来扩展 LV:
sudo lvextend -L 19G /dev/examplegroup1/lvexample1
-
运行 lvs 或 lvdisplay 命令查看 LV 详细信息:
sudo lvs
输出示例:
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lvexample1 examplegroup1 -wi-a----- 19.00g
-
运行以下命令之一来扩展文件系统。
Ext2、Ext3 和 Ext4 文件系统:sudo resize2fs /dev/examplegroup1/lvexample1
xfs 文件系统:
sudo yum install xfsprogs
将 EBS 卷添加到卷组
完成以下步骤:
-
创建另一个 10 GB 的 EBS 卷,然后将该卷附加到实例。
-
在 /dev/xvdi 设备上创建分区。
-
运行 pvcreate 命令创建 PV。在以下示例中,卷的块设备名称为 /dev/xvdi1:
sudo pvcreate /dev/xvdi1
输出示例:
Physical volume "/dev/xvdi1" successfully created.
-
运行 vgextend 命令扩展卷组并添加新卷。以下示例扩展了 examplegroup1 卷组以包括 /dev/xvdi1 卷:
sudo vgextend examplegroup1 /dev/xvdi1
输出示例:
Volume group "examplegroup2" successfully extended
-
运行 vgs 或 vgdisplay 命令以确认扩展:
sudo vgs
以下输出示例显示 examplegroup1 卷组中现在有两个 PV:
#PV #LV #SN Attr VSize VFree examplegroup1 2 1 0 wz--n- 29.99g 20.99g
-
运行 lvextend 命令来扩展 LV:
sudo lvextend -L 29G /dev/examplegroup1/lvexample1
-
运行以下命令之一来扩展文件系统。
Ext2、Ext3 和 Ext4 文件系统:sudo resize2fs /dev/examplegroup1/lvexample1
XFS 文件系统:
sudo xfs_growfs /dev/examplegroup1/lvexample1