libvirt使用rbd作为储存后端

  • 利用ceph的rbd储存类型,来为libvirt提供储存pool,进而在pool上创建volume;
  • 由于libvirt(virt-install)对ceph的认证支持有点问题,也比较麻烦,将ceph纯作用libvirt后端的情况下,建议将ceph认证关闭:

略,参见ceph手册.

/etc/ceph/ceph.conf
auth_cluster_required = none
auth_service_required = none
auth_client_required = none

3台机器,6个OSD,依据ceph计算器算的ph,pgp数目:

ceph osd pool create libvirt-pool 512 512
ceph osd lspools

cat > pool.xml <<'EOF'
<pool type='rbd'>
  <name>rbd</name>
  <source>
    <host name='10.28.200.28' port='6789'/>
    <host name='10.28.200.29' port='6789'/>
    <host name='10.28.200.30' port='6789'/>
    <name>rbd</name>
  </source>
</pool>
EOF
 
virsh pool-define pool.xml
virsh pool-autostart rbd
virsh pool-start rbd
virsh pool-info rbd
virsh pool-refresh rbd

virsh vol-create-as rbd vm02 --capacity 50G --format raw
virsh vol-list rbd
# 删除vol
virsh vol-delete rbd/vm02

因为Ceph镜像支持分层,所以推荐导入vm镜像,然后对其protect,新vm只需要对原镜的快照做clone就行了:

# 导入镜像, raw 数据格式是使用 RBD 时的唯一可用 format 选项;
# 从技术上讲,你可以使用 QEMU 支持的其他格式(例如 qcow2 或 vmdk),但是这样做可能会带来额外开销,而且在开启缓存模式下进行虚拟机的热迁移时会导致卷的不安全性;
rbd import --image-format 2 Debian-Wheezy-7.11.raw instances/Debian-Wheezy-7.11 --name client.admin

–disk一定要用bus=virtio,不然ide接口性能很差.

virt-install --name vm02 \
    --ram 8196 \
    --vcpus=8,sockets=1,cores=8,threads=1 \
    --arch=x86_64 \
    --os-type=linux \
    --os-variant=generic \
    --accelerate \
    --cdrom /tmp/CentOS-7-x86_64-Minimal-1804.iso \
    --boot menu=on \
    --disk vol=rbd/vm02,size=50,format=raw,bus=virtio,cache=none \
    --network bridge=br1,model=virtio \
    --graphics vnc,port=-1,listen=0.0.0.0 \
    --channel char_type='unix',target_type='virtio',name='org.qemu.guest_agent.0'

7.1 为现有vm添加磁盘

之前是直接用virt-install来安装一个rbd后端的vm,也可以为现有的vm添加rbd的磁盘:

cat > disk-rbd.xml <<'OEF'
<disk type='network' device='disk'>
        <source protocol='rbd' name='libvirt-pool/new-libvirt-image'>
                <host name='{monitor-host}' port='6789'/>
        </source>
        <target dev='vda' bus='virtio'/>
</disk>
EOF
# 导入xml配置
virsh attach-device vm01 disk-rbd.xml --persistent
# 验证
virsh qemu-monitor-command --hmp vm01 'info block'

7.2 虚拟机迁移

在使用了共享型的后端储存后,libvirt就能支持在前迁移了,实测ping丢2个数据包.1)

virsh migrate vm02 qemu+ssh://host2.bbdops.com/system --verbose --live --persistent --compressed --abort-on-error --undefinesource

1)
host之间的hostname要求是能正确解析的FQDN.
  • virtualization/kvm/libvirt_with_rbd.txt
  • 最后更改: 2019/04/16 18:31
  • (外部编辑)