部署LVM
备注
私有云数据层LVM卷管理 作为 私有云架构 基础服务Stack的卷管理
硬件设备环境
Open Virtual Machine Firmware(OMVF) 虚拟机pass-through读写 三星PM9A1 NVMe存储 ,即在虚拟主机上可以通过 fdisk -l
看到当前磁盘 GPT
分区如下:
Disk /dev/nvme0n1: 953.89 GiB, 1024209543168 bytes, 2000409264 sectors
Disk model: SAMSUNG MZVL21T0HCLR-00B00
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: D3860CB9-4291-4532-B16D-2FCCD292EFBA
Device Start End Sectors Size Type
/dev/nvme0n1p1 2048 976562175 976560128 465.7G Linux filesystem
可以看到磁盘已经有一个分区,这个分区是 私有云数据层 ZData Ceph 分区。我们将在剩余的空白磁盘上划分第2个分区用于LVM卷管理,规划空间300GB。
备注
通常生产环境建议将整个磁盘作为LVM卷设备,而避免采用分区。因为分区操作失误可能会同时摧毁LVM卷数据,所以整个磁盘由一个LVM卷管理相对较为容易。同理,我在部署 Btrfs 或者 ZFS 这样的卷管理文件系统,也会采用完整磁盘来实施。
不过 私有云架构 是我模拟云计算的测试环境,硬件条件有限,所以采用一个分区来构建LVM卷
创建分区:
sudo parted -a optimal /dev/nvme0n1 mkpart primary 500GB 800GB
sudo parted /dev/nvme0n1 name 2 lvm-data
sudo parted /dev/nvme0n1 set 2 lvm on
完成后检查分区:
sudo parted /dev/nvme0n1 print
可以看到分区2已经是LVM标记的分区:
Model: SAMSUNG MZVL21T0HCLR-00B00 (nvme)
Disk /dev/nvme0n1: 1024GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 500GB 500GB primary
2 500GB 800GB 300GB lvm-data lvm
LVM物理卷
使用 pvcreate
可以创建 LVM 物理卷(PV),并且支持使用空格分隔的多个设备,例如:
pvcreate /dev/vdb1 /dev/vdb2
上述命令在设备上加上标签,将其标记为属于 LVM 的物理卷
在分区2上创建LVM物理卷PV:
sudo pvcreate /dev/nvme0n1p2
此时提示:
Physical volume "/dev/nvme0n1p2" successfully created.
LVM卷组
使用 vgcreate
可以创建 LVM 卷组(VG),多个设备使用空格分隔,可以在一个卷组包含多个PV物理卷,例如:
vgcreate myvg /dev/vdb1 /dev/vdb2
上述命令创建一个名为 myvg
的卷组,而 /dev/vdb1
和 /dev/vdb2
是这个卷组的物理卷
在分区2上创建LVM的卷组VG:
sudo vgcreate vg-data /dev/nvme0n1p2
此时提示:
Volume group "vg-data" successfully created
检查VG:
sudo vgdisplay vg-data
输出:
--- Volume group ---
VG Name vg-data
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 279.39 GiB
PE Size 4.00 MiB
Total PE 71525
Alloc PE / Size 0 / 0
Free PE / Size 71525 / 279.39 GiB
VG UUID pDAS5T-jjd4-JPaD-3O1b-hMrX-CdWF-UTNTXc
如果今后要扩展卷组,可以使用 vgextend
命令,例如添加分区3:
vgextend vg-data /dev/nvme0n1p3
LVM逻辑卷
在
vg-data
卷组上创建名为lv-etcd
的LVM卷,大小 8G ,用于 etcd - 分布式kv存储 部署:
sudo lvcreate -n lv-etcd -L 8G vg-data
检查LV:
sudo lvdisplay vg-data/lv-etcd
显示输出:
--- Logical volume ---
LV Path /dev/vg-data/lv-etcd
LV Name lv-etcd
VG Name vg-data
LV UUID MVuffR-RycZ-IWoK-JsAR-wuQc-c8fF-0a80Zm
LV Write Access read/write
LV Creation host, time z-b-data-1, 2022-06-30 00:32:02 +0800
LV Status available
# open 0
LV Size 8.00 GiB
Current LE 2048
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1
文件系统XFS
在新构建的LVM卷上创建文件系统:
sudo mkfs.xfs /dev/vg-data/lv-etcd
创建
/etc/fstab
挂载条目:
echo "/dev/vg-data/lv-etcd /var/lib/etcd xfs defaults 0 0" | sudo tee -a /etc/fstab
然后创建挂载目录并挂载:
mkdir /var/lib/etcd
mount /var/lib/etcd
此时
df -h
检查可以看到LVM卷已经挂载:/dev/mapper/vg--data-lv--etcd 8.0G 90M 8.0G 2% /var/lib/etcd
现在我们已经初步完成了适合 私有云etcd服务 的存储,下一步我们可以开始部署 etcd - 分布式kv存储 服务