Windows虚拟机通过libvirt使用CEPH RBD

kvm虚拟机通过 libvirt 挂在 ceph rbd作为数据盘

一、首先确定我们的ceph环境是HEALTH_OK

[root@cephmon ceph]# ceph -s
cluster:
    id:     272ac8d0-c758-42db-9a51-59e826f96ac2
    health: HEALTH_OK
 
  services:
    mon: 1 daemons, quorum cephmon (age 51m)
    mgr: cephmon(active, since 6h)
    osd: 2 osds: 2 up (since 6h), 2 in (since 23h)
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 B
    usage:   2.2 GiB used, 7.3 TiB / 7.3 TiB avail
    pgs:     

二、开始配置ceph存储池
1、创建一个存储池,这里pg和pgm均设置为32(不固定)

#ceph osd pool create testpool 32 32

2、查看存储池是否创建成功,同时再次确认ceph是否健康,且pgs是否为active+clean
在这里插入图片描述
3、用 QEMU 在 RBD 存储池中创建映像。本例中映像名为 image 、存储池为 pool 。

#qemu-img create -f rbd rbd:testpool/myimage 200G

如果报错qemu-img找不到,执行:

//创建kvm环境依赖:
#yum -y install qemu-kvm libvirt virt-install bridge-utils
//验证kvm:
#lsmod | grep kvm 
#systemctl start libvirtd 
#systemctl enable libvirtd 

4、验证映像是否存在。

#rbd -p testpool ls
myimage

5、创建一个windows虚拟机(我也推荐使用virt-manager),目前只有一个系统盘,创建结果如图:
安装虚拟机管理器VirtManager :
ubuntu:
sudo apt-get install virt-manager
centos7:
yum -y intsall virt-manager
在这里插入图片描述
6、关闭虚拟机,把我们创建的myimage-ceph数据盘添加到虚拟机的XML文件:
把你创建的 Ceph RBD 映像创建为 disk 条目加入到device标签里面。

#sudo virsh edit {虚拟机的名字}
<disk type='network' device='disk'>
        <source protocol='rbd' name='testpool/myimage'>  //指定存储池
                    <host name='ceph主机管理节点名' port='6789'/>  //6789默认端口
        </source>
        <target dev='vda' bus='virtio'/>
</disk>

7、Ceph 存储集群启用了 Ceph 认证(默认已启用),那么必须生成一个 secret。
可以通过查看ceph.conf配置文件如何查看是否启用认证:

auth_cluster_required = cephx (none) //none为未启用
auth_service_required = cephx (none) //cephx为启用认证
auth_client_required = cephx  (none)

生成secret密钥,这里以admin为例::

cat > secret.xml <<EOF
<secret ephemeral='no' private='no'>
        <usage type='ceph'>
                <name>client.admin secret</name>
        </usage>
</secret>
EOF

#sudo virsh secret-define --file secret.xml
 //会生成一串数字
#ceph auth get-key client.admin | sudo tee client.libvirt.key

#sudo virsh secret-set-value --secret {secret uuid} --base64 $(cat client.libvirt.key) && rm client.libvirt.key secret.xml

查看密钥:
virsh secret-list
重定义密钥
sudo virsh secret-undefine {uuid}

8、包密钥uudi添加在虚拟机XML的格式:

<disk type='network' device='disk'>
      ...
      <auth username='对应的auth'>
        <secret type='ceph' uuid='密钥'/>
      </auth>
      ...
      <target dev='vdb' bus='virtio'/>
</disk>

9、总结
一旦完成上面的配置,你就可以启动 VM 了。为确认 VM 和 Ceph 在通信,你可以执行如下过程。
检查 Ceph 是否在运行:
#ceph health
检查 VM 是否在运行。
#sudo virsh list
如果看起来一切正常,你就可以在虚拟机内使用 Ceph 块设备了

注意:首次使用该块设备windows会对其分区格式化才能识别为数据盘
具体流程图如下:
在这里插入图片描述
新建磁盘卷:
在这里插入图片描述

等待格式化完成,我们的ceph数据盘就被挂载为windows虚拟机里面的D盘:
在这里插入图片描述
我们不仅可以通过ceph模式挂载数据盘作,同样可以把它设置为虚拟机系统盘,这样就成为真正意义上的云主机了,而且ceph模式的好处不局限与同一台物理机,其他物理机通过配置同样可以挂载数据盘,管理和扩容都很方便。

官网已经给出很详细的操作流程:http://docs.ceph.org.cn/rbd/libvirt/


版权声明:本文为m0_47130798原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。