У меня есть две виртуальные машины на одном диске, на каждой из которых установлен clamav. Оба регулярно запускают обновления для одних и тех же сигнатур сканирования вирусов одновременно, что каждый раз приводит к ненужной нагрузке на производительность диска. Поскольку это те же самые подписи, которые загружаются, я хочу уменьшить избыточность в этом случае.
Первоначальная идея заключалась в том, чтобы позволить им совместно использовать виртуальный диск, на который эти подписи загружаются один раз, чтобы виртуальные машины просто считывали их оттуда. Следовательно, только одной виртуальной машине требуется доступ для записи на диск для загрузки, а другой - только для чтения.
Я подключил виртуальный диск к первой виртуальной машине с помощью: $ virsh attach-disk <VM1> <virtDisk> vdb --cache none
Однако при попытке подключить тот же виртуальный диск ко второй виртуальной машине после успешного подключения его к первой с помощью: $ virsh attach-disk <VM2> <virtDisk> vdb --cache none --mode readonly
Ошибка unable to execute QEMU command 'device-add': Failed to get shared "write" lock
произошло. Это просто невозможно, или мне не хватает варианта?
Как лучше всего использовать эти подписи между виртуальными машинами для этой цели?
Вам нужна некоторая файловая система с поддержкой кластера для совместного использования любого блочного устройства между несколькими потребителями, не использующими R / O. Смотрите всю историю здесь:
https://forums.starwindsoftware.com/viewtopic.php?f=5&t=1392
То же самое для любого блочного хранилища, такого как SAS, FC, iSCSI или виртуальное блочное устройство.
Гипервизор не поддерживает совместное использование виртуальной памяти двумя разными виртуальными машинами одновременно. Это не имеет смысла, поскольку для одной виртуальной машины (или, возможно, обеих) невозможно будет иметь согласованное представление о хранилище, даже если одна из них предназначена только для чтения. Гостевая ОС не будет ожидать, что что-либо еще будет записывать в хранилище.
Чтобы совместно использовать хранилище между виртуальными машинами, используйте существующее решение, такое как NFS или iSCSI, которые предназначены для этой цели, или кластерную файловую систему, если вы действительно хотите сделать ее намного сложнее, чем действительно требуется вашему варианту использования.