一、将客户端(宿主机或kvm虚拟机)和ceph存储进行连通
1.客户端安装ceph包:yum install ceph 或 yum install ceph-common.x86_64(yum search ceph查询包名)
2.将ceph存储节点/etc/ceph目录下ceph.conf和ceph.client.admin.keyring拷贝到客户端的/etc/ceph目录下
3.检查连通性:在客户端执行ceph命令,如ceph -s,能看到ceph集群信息,说明客户端和ceph存储已连通
二、创建rbd盘并挂载给虚拟机
1、创建一个ceph user,下面的例子中使用client.libvirt用户和libvirt-pool池
ceph auth get-or-create client.libvirt mon 'profile rbd' osd 'profile rbd pool=libvirt-pool'
验证有效:ceph auth ls|grep client.libvirt
备注:以上命令,如果宿主机和ceph存储已连通,以上命令可在宿主机上执行,否则需在ceph存储上执行
2.创建secret.xml
cat > secret.xml <<EOF
<secret ephemeral='no' private='no'>
<usage type='ceph'>
<name>client.libvirt secret</name>
</usage>
</secret>
EOF
备注:以上命令在宿主机上全部复制并粘贴,最后回车
3.生成uuid
sudo virsh secret-define --file secret.xml
{uuid of secret}
4.获取client.libvirt的key并保存到文件
ceph auth get-key client.libvirt | sudo tee client.libvirt.key
5、设置secret的uuid
sudo virsh secret-set-value --secret {uuid of secret} --base64 $(cat client.libvirt.key) && rm client.libvirt.key secret.xml
将变量替换成实际的uuid和key
6、创建池libvirt-pool
ceph osd pool create libvirt-pool 64 64
7、创建rbd盘
rbd create --size 10G libvirt-pool/test1 --image-feature layering
查询存储池中的块:rbd ls libvirt-pool
8、关闭虚拟机,编辑虚拟机配置文件,并添加磁盘信息
关闭虚拟机:virsh shutdown vm
编辑虚拟机:virsh edit vm
在disk标签下增加如下信息:
<disk type='network' device='disk'>
<driver name='qemu' type='raw'/>
<auth username='libvirt'>
<secret type='ceph' uuid='{uuid of secret}'/>
</auth>
<source protocol='rbd' name='libvirt-pool/rbd_name'>
<host name='10.25.72.142' port='6789'/>
<host name='10.25.72.143' port='6789'/>
<host name='10.25.72.144' port='6789'/>
</source>
<target dev='vde' bus='virtio'/>
</disk>
备注:
需要修改上面5个参数:
1)username是建好的用户名:libvirt
2)uuid替换成第3步生成的uuid
3)host name后的ip为mon的ip和端口
mon的ip和端口,可以在/etc/ceph/ceph.conf中查看,可添加多个mon的ip
4)target dev为挂载后显示的盘符,例子中是vde,挂载后显示的盘符是/dev/vde
5)libvirt-pool/rbd_name是创建的rbd盘
9、查看虚拟机挂载的磁盘
virsh domblklist {vm-domain-name} --details
10、虚机开机,即可使用挂载的rbd盘
virsh start vm