Proxmox Virtual Environment(PVE)是基于KVM的虚拟化解决方案,相较于Vmware Esxi封装了底层的细节,提供了更好的用户友好性;PVE则可直接在底层的Linux进行各种操作,并且有着开源社区的强大支持,提供了更多的可定制化性。但是这也提高了使用门槛,用户需要使用Linux命令进行操作,本文是对在PVE中添加/移除存储的记录。
PVE有多种存储类型1,这里主要使用其中2种:
- Directory:文件类型存储,用于存储各种文件,例如ISO镜像、虚机image和容器模版等
- LVM/LVM-thin:块(block)存储,用于存储各类虚机镜像文件。
LVM早已被广泛应用于Linux中,PVE的底层操作系统是Debian
,所以能够直接支持LVM。LVM-thin提供了虚机镜像的精简(thin)制备
,大大提高了磁盘空间利用率。Esxi创建虚机的过程中也可以选择虚机磁盘空间是否采用thin制备,而我理解PVE则是根据存储类型来区分,如果是将虚机的磁盘存储在LVM-thin的空间中,则自动为thin制备。
本文记录添加一块新的硬盘,并相应创建一个Directory和LVM-thin存储空间的过程。Directory用于存储各种文件,LVM-thin空间用于存储虚机磁盘,如下图:
1. 创建LVM卷
- 使用
fdisk
初始化硬盘并格式化:
# fdisk /dev/sda
Command (m for help): g
Created a new GPT disklabel (GUID: ...).
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
# mkfs.ext4 /dev/sda
...
Allocating group tables: done
Writing inode tables: done
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done
- 创建一个物理卷(Physical Volume):
# pvcreate /dev/sda
WARNING: ext4 signature detected on /dev/sda at offset 1080. Wipe it? [y/n]: y
Wiping ext4 signature on /dev/sda.
Physical volume "/dev/sda" successfully created.
# pvs
PV VG Fmt Attr PSize PFree
/dev/sda lvm2 --- 931.51g 931.51g
- 在PV之上创建一个新的卷组(Volume Group):
# vgcreate vgssda /dev/sda
Volume group "vgssda" successfully created
# vgs
VG #PV #LV #SN Attr VSize VFree
vgssda 1 0 0 wz--n- 931.51g 931.51g
- 在VG之上创建一个160G的逻辑卷(LV),用于Directory类型存储:
# lvcreate -L 160G vgssda -n ssda_dire
Logical volume "ssda_dire" created.
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
ssda_dire vgssda -wi-a----- 160.00g
- 在VG之上使用剩余空间创建LV-thin,用于存储虚机磁盘:
# lvcreate --thin -l +100%FREE -n ssda_vm vgssda
Thin pool volume with chunk size 512.00 KiB can address at most 126.50 TiB of data.
WARNING: Pool zeroing and 512.00 KiB large chunk size slows down thin provisioning.
WARNING: Consider disabling zeroing (-Zn) or using smaller chunk size (<512.00 KiB).
Logical volume "ssda_vm" created.
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
ssda_dire vgssda -wi-a----- 160.00g
ssda_vm vgssda twi-a-tz-- <771.32g
这样就完成了用于Directory和虚机磁盘存储空间的创建,接下来分别对Directory和LVM-thin进行设置。
1.1 设置Directory存储
- 创建Directory对应的挂载点:
# mkdir -p /mnt/pve/ssda_dire
- 格式化之前创建的相应逻辑卷并挂载:
# mkfs.ext4 /dev/mapper/vgssda-ssda_dire
# 注意需要使用/dev/mapper/...挂载
# mount /dev/mapper/vgssda-ssda_dire /mnt/pve/ssda_dire/
- 挂载写入
fstab
,这样在系统启动时能够自动挂载:
# /etc/fstab
/dev/mapper/vgssda-ssda_dire /mnt/pve/ssda_dire/ ext4 defaults 0 0
- 在
datacenter
中添加Directory存储:
- ID:Directory存储类型的名字
- Directory:挂载点路径
- Content:存储内容,这里全选
点击添加后成功创建:
1.1.1 如何移除Directory存储空间
如果需要移除Directory存储,首先找到路径/etc/systemd/system/
中的目标Directory的entry,例如:
'mnt-pve-ssda\x2ddirectory.mount'
参考2使用命令先将目标entry从datacenter中移除:
# systemctl stop 'mnt-pve-ssda\x2ddirectory.mount'
# systemctl disable 'mnt-pve-ssda\x2ddirectory.mount'
Removed /etc/systemd/system/multi-user.target.wants/mnt-pve-ssda\x2ddirectory.mount.
# rm 'mnt-pve-ssda\x2ddirectory.mount'
这样datacenter中就移除了目标Directory,之后可以使用fdisk
命令对目标分区重新进行初始化。
1.2 设置LVM-thin存储
之前已经创建了LVM-thin的存储块,可以在PVE中直接添加。
- 在
datacenter
中添加LVM-thin存储:
-
选择创建好的VG以及thin pool卷:
点击添加后成功创建:
至此Directory和LVM-thin存储空间都创建成功。