移动云计算libvirt LVM卷管理存储池

移动云架构 由于ARM架构的 Asahi Linux 内核对ZFS支持不佳,所以采用更为成熟可靠的 Linux LVM逻辑卷管理 作为 libvirt LVM卷管理存储池 :

创建LVM存储卷

准备工作

磁盘分区规划: 分区9作为 Linux LVM逻辑卷管理 构建 Ceph Atlas 的KVM虚拟机集群

移动云计算的磁盘分区

分区名

LVM卷

大小

用途

btrfs-data

50G

个人数据存储

btrfs-docker

48G

/var/lib/docker

lvm-libvirt

216G

用于libvirt的LVM卷(合计)

base-1

16G

基础虚拟机1

base-2

16G

基础虚拟机2

base-3

16G

基础虚拟机3

ceph-1

56G

ceph数据盘1

ceph-2

56G

ceph数据盘2

ceph-3

56G

ceph数据盘3

parted分区: 50G data, 48G docker, 216G libvirt
# 50G data,48G docker,216G libvirt(3个vm 共48G + 3个Ceph存储 168G)
parted -a optimal /dev/nvme0n1 mkpart primary 181GB 231GB
parted -a optimal /dev/nvme0n1 mkpart primary 231GB 279GB
parted -a optimal /dev/nvme0n1 mkpart primary 279GB 495GB
parted /dev/nvme0n1 name 7 btrfs-data
parted /dev/nvme0n1 name 8 btrfs-docker
parted /dev/nvme0n1 name 9 lvm-libvirt

创建LVM存储卷

  • 检查当前存储卷:

    virsh pool-list --all
    

arch linux ARM KVM虚拟化 部署安装的 Libvirt虚拟机管理器 没有自动创建存储池,所以当前没有任何存储池:

 Name   State   Autostart
---------------------------
创建vg-libvirt卷
# 将分区9的LVM标记激活
parted /dev/nvme0n1 set 9 lvm on

# 在分区9上创建LVM的PV和VG
pvcreate /dev/nvme0n1p9
vgcreate vg-libvirt /dev/nvme0n1p9

这里有一个提示(未明):

Using metadata size 960 KiB for non-standard page size 16384.
Using metadata size 960 KiB for non-standard page size 16384.
Volume group "vg-libvirt" successfully created
  • 此时检查 vgs 输出可以看到已经建立的卷组:

    VG         #PV #LV #SN Attr   VSize    VFree
    vg-libvirt   1   0   0 wz--n- <201.08g <201.08g
    

在livirt中使用LVM卷组

  • 定义 images_lvm 存储池: 使用逻辑卷组 vg-libvirt 目标磁盘 /dev/nvme0n1p9 ,并且启动激活:

定义使用LVM卷组的libvirt存储池
# 定义libvirt存储池images_lvm,指定使用LVM卷组vg-libvirt,目标设备/dev/nvme0n1p9
virsh pool-define-as images_lvm logical --source-name vg-libvirt --target /dev/nvme0n1p9

# 启动存储卷images_lvm并设置为自动启动
virsh pool-start images_lvm
virsh pool-autostart images_lvm
  • 此时使用 virsh pool-list 可以看到存储池:

     Name         State    Autostart
    ----------------------------------
     images_lvm   active   yes
    
  • 接下来就可以使用以下命令为 arch linux ARM KVM虚拟化 创建VM使用的磁盘(卷),类似: