我有两台KVM服务器和一些虚拟机。
服务器(一)KVM与qcow2图像
服务器(B)KVM挂载NFS分区(服务器A上存在qcow2映像)。
我的问题很简单,在服务器B上创build虚拟磁盘备份的最佳解决scheme是什么(虚拟机运行明显)。 DRBD是一个解决scheme?
如果你只是想在服务器B上复制服务器A的qcow2镜像,但是在A和B上都不需要同时访问它们,那么你可以在任何文件系统上使用DRBD(如ext4) ,在A上运行为Primary,在B上运行为Secondary。当A失败时,您可以将B上的DRBD切换到Primary,并在那里使用镜像。
如果你想要在A和B上同时使用这些图像,那么这将更加棘手。 一个集群文件系统可能会有所帮助,但我认为性能不会是正确的。
如果你只是想要复制镜像的一次,那么就停止A上的虚拟机,用scp / rsync / over-NFS /不pipe。 如果虚拟机必须在A上运行,那么为了获得一致的映像,您需要创build某种快照。 我不知道KVM和QCOW2,但也许他们提供了一些快照function。 如果没有,则LVM卷上存储图像时可能会有LVM快照。
为了在虚拟机上实现高可用性,您可以尝试将Ganeti和DRBD作为您的资源,但是在设置ganeti时将会有一些额外的工作,但是这种痛苦是值得的,因为这会让您的虚拟机pipe理真正stream畅。
我能想到的另一个select是使用gluster卷。 这将是超级简单的设置和安装,如果你有良好的硬件,那么性能应该是好的。
截至目前,我使用Jacek解释过的简单DRBD风格,我也在探索其他方法。
我一直在解决这个问题。 我已经得到这个工作2种不同的方式。
build立
我select使用原始格式在LV之上构build我的kvm访客系统。 我不知道这比在LV上的图像文件上做得更好,但这就是我要做的。 使用drbd来同步LVM物理分区将会简单得多,但是我想要运行多个LV,并且在hostA (需要drbd主angular色)上运行一个LV,另一个在hostB (也需要drbd主angular色)上运行。 所以我被卡住了,除非我去嘎嘎,但我不愿意采取另一种技术在这一点上。 我的存储堆栈已经是:
KVM guest drbd (drbd1) lvm2 logical volume (guestlv) lvm2 volume group (vg) lvm2 physical volume (crypt) dm-crypt (crypt) gpt partitions (md_d0p1=root, md_d0p2=swap, md_d0p3=crypt) mirror-RAID (md_d0) gpt partition (single) hard drive (2)
我必须解决的最大问题是, virt-manager无法识别或让你使用drbd卷( virt-install和vmbuilder不适用于我)。 所以这就是我所做的:
hostA和hastB正在运行Ubunut 14.04LTS,与OpenSSH服务器和虚拟化主机软件包一起安装,还安装了lvm2和drbd8-utils 。 每个都有4个NICS,成对结合。 bond0桥接到br0并由guest bond1使用, bond1不桥接,并使用为drbd保留的子网。
KVM + DRBD方法1
部分A – 创buildKVM来宾
hostA上创build一个LV。 ubuntu-14.04.1-server-amd64.iso到/var/lib/libvirt/images virt-manager 。 hostA 。 Details窗口并使用“存储”选项卡添加LVM卷组。 br0用于networking。 B部分 – configuration复制
lvresize来增加1 lun的LV大小。 lvresize -l +1 vg/guestlv drbd元数据。 drbdadm create-md /dev/vg/guestlv drbd资源文件。 file:/etc/drbd.d/guest.res resource guest { device /dev/drbd1; meta-disk internal; startup { become-primary-on hostA; wfc-timeout 30; outdated-wfc-timeout 20; degr-wfc-timeout 30; } net { cram-hmac-alg sha1; shared-secret sync_disk; } syncer { rate 100M; verify-alg sha1; } on hostA { address 192.168.2.1:7789; disk /dev/vg/guestlv; } on hostB { address 192.168.2.2:7789; disk /dev/vg/guestlv; } } hostB
drbdadm create-md /dev/vg/guestlv drbdadm connect --discard-my-data guest drbdadm up guest hostA
drbdadm up guest drbdadm primary guest C部分 – 将drbd设备切换到KVMconfiguration
hostA ,运行virsh edit guestlv <source dev='/dev/vg/guestlv'/>并将其更改为<source dev='/dev/drbd1'/> drbd同步完成。 drbdadm secondary guest 。 hostB ,运行drbdadm primary guest 。 virt-manager为存储创build一个具有一些垃圾卷的新guest virt-manager 。 安装开始后立即closures。 hostB ,使用virsh edit guestlv并将存储设置为/dev/drbd1 。 启动虚拟机,validation它的工作,等等 KVM + DRBD方法2与上面非常相似,但是
/dev/drbd1 ,让它同步。 virsh-edit在/dev/drbd1存储中进行交换。 /dev/vda一个停止显示错误。 drbd主要和辅助,configuration你的其他主机,testing等。