If you just want to replicate the server A qcow2 images on the server B, but they don't have to be accessed at the same time on both A and B, then you may use DRBD with any file system on it (like ext4), running as Primary on A and Secondary on B. When A fails you will be able to switch DRBD on B to Primary and use the images there.
In case you want those images available and used on A and B at the same time – then this will be more tricky. A clustered file system may help, but I don't think performance will be right.
If you just want to make a one time copy of the images, then just stop the VMs on A, copy the images with scp/rsync/over-NFS/whatever. If the VMs must be running on A, then, for a consistent image, you will need to make some kind of snapshot. I don't know KVM and QCOW2, but maybe they provide some snapshot functionality. If not, then LVM snapshots may have if you store the images on an LVM volume.
Для обеспечения высокой доступности с виртуальными машинами вы можете попробовать Ganeti и DRBD в качестве ресурса, но при настройке ganeti потребуется немного дополнительной работы, но боль того стоит, поскольку она сделает вашу виртуальную машину управление действительно гладкое.
Другой вариант, о котором я мог подумать, - это использование глянцевых томов. Его будет очень легко настроить и установить, и если у вас хорошее оборудование, производительность должна быть хорошей.
На данный момент я использую простой стиль DRBD, как объяснил Яцек, я также изучаю другие способы.
Я работал над этим же вопросом. Я заставил это работать двумя разными способами.
Setup
Я выбираю сборку своих kvm гостевых систем поверх LV с использованием формата raw. Я не знаю, что это лучше, чем иметь их в файлах изображений на LV, но это то, к чему я иду. Было бы намного проще использовать drbd для синхронизации физического раздела LVM, но я хочу запустить несколько LV, и один из них должен быть запущен на hostA (требуется drbd основная роль). а другой - на хостВ (также требует drbd основной роли). Так что я застрял, если только не пойду в тупик, но в данный момент я не хочу перенимать еще одну технологию. Мой стек хранения уже:
Самая большая проблема, с которой мне приходится работать, это то, что virt-manager не распознает и не позволяет вам работать с томами drbd ( virt-install и vmbuilder не работает на меня). Итак, вот что я сделал:
hostA и hastB работают с Ubunut 14.04LTS, установленными с пакетами OpenSSH Server и Virtualization Host, также установлены lvm2 и drbd8-utils. Каждый из них имеет 4 NICS, связанных парами. bond0 является мостом к br0 и используется гостями, bond1 не является мостом и использует подсеть, зарезервированную для drbd.
KVM + DRBD Метод 1
Часть A - Создайте KVM гостя
Создайте LV на hostA.
Копия ubuntu-14.04.1-server-amd64. iso на /var/lib/libvirt/images
На клиенте, работающем с Ubuntu Desktop, запустите virt-manager.
Подключитесь к hostA.
Откройте окно Details и с помощью вкладки Storage добавьте группу LVM томов.
Настройте новую машину, используя установочный ISO, LV для хранения, br0 для сети.
Перезагрузите и т.д.., Убедитесь, что Ваш LV работает нормально.
Часть B - Настройка репликации
Выключите гостевую систему KVM.
Используйте lvresize для увеличения размера LV на 1 лн. lvresize -l +1 vg/guestlv
Создайте файл ресурса drbd.
файл:/etc/drbd.d/guest.res
гость ресурса {
устройство /dev/drbd1;
внутренний мета-диск;
запуск {
стать хозяином в праймериз;
30-й тайм-аут;
устаревший тайм-аут 20;
degr-wfctimeout 30;
}
сеть {
крэм-мак-альг-ша1;
shared-secret sync_disk;
}
синхронизация
ставка 100М;
Верифи-альг-ша1;
}
на хостеА
адрес 192.168.2.1:7789;
диск /dev/vg/guestlv;
}
на хостеБ
адрес 192.168.2.2:7789;
диск /dev/vg/guestlv;
}
}
На hostB
создайте LV идентичного размера (новый размер +1!), используя группу томов и имена lv, как в файле ресурсов.
Запустите drbdadm create-md /dev/vg/guestlv
Запустите drbdadm connect --discard-my-. data guest
Run drbdadm up guest
On hostA
Run drbdadm up guest
Run drbdadm primary guest
Part C - Переключите drbd устройство в KVM config
On hostA, запустите virsh edit guestlv
Найдите строку и измените ее на
Сохраните и выйдите, запустите свою виртуальную машину, убедитесь, что она работает. Выключите его.
Подождите синхронизации drbd для завершения.
Запустите вторичный гость drbdadm.
На hostB запустите первичный гость drbdadm.
На своей рабочей станции используйте virt-manager для создания нового гостя с некоторой мусорной громкостью для хранилища. Выключите его, как только начнётся установка.
На hostB используйте virt-редактор guestlv и установите хранилище на /dev/drbd1. Запустите ВМ, убедитесь, что она работает и т.д.
KVM + DRBD Метод 2.
Очень похоже на то, что было сказано выше, но
Установите /dev/drbd1, синхронизируйте его.
Создайте гостя KVM, используя мусорный том хранилища, прервите установку.
Используйте virsh-edit для подкачки в хранилище /dev/drbd1.
Запустите его и запустите установку.
Иногда это срабатывало, иногда я получал ошибку остановки шоу при установке grub на /dev/vda.
Если вы заставили его работать, выключите ВМ, поменяйте местами первичные и вторичные drbd, сконфигурируйте другой хост, протестируйте и т.п.