Skip to content

Proxmox Virtual Environment(PVE)新增硬盘存储

  • by

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卷

  1. 使用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
  1. 创建一个物理卷(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
  1. 在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
  1. 在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
  1. 在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存储

  1. 创建Directory对应的挂载点:
# mkdir -p /mnt/pve/ssda_dire
  1. 格式化之前创建的相应逻辑卷并挂载:
# mkfs.ext4 /dev/mapper/vgssda-ssda_dire
# 注意需要使用/dev/mapper/...挂载
# mount /dev/mapper/vgssda-ssda_dire /mnt/pve/ssda_dire/
  1. 挂载写入fstab,这样在系统启动时能够自动挂载:
# /etc/fstab
/dev/mapper/vgssda-ssda_dire /mnt/pve/ssda_dire/ ext4 defaults 0 0
  1. 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中直接添加。

  1. datacenter中添加LVM-thin存储:

  2. 选择创建好的VG以及thin pool卷:

点击添加后成功创建:

至此Directory和LVM-thin存储空间都创建成功。

Tags:

Leave a Reply

Your email address will not be published. Required fields are marked *