Мы используем виртуальные машины со снимками состояния как часть наших процессов поддержки и тестирования выпуска, что делает тестирование исправлений для клиентских систем удобным (создание снимков, применение изменений, тестирование, возврат, пена, промывание, повторение (и повторное применение обновлений и фиксация снимков). изменяется после выхода обновлений)), настройка, которую я пытаюсь улучшить.
Одна из наших проблем - это производительность базы данных, которая, как я знаю, всегда будет плохой на виртуальной машине со снэпшотом из-за того, сколько дополнительной работы выполняется для каждой записи по сравнению с той же записью на физической машине, но я хотел бы улучшить это как можно больше.
На физической машине мы склонны разделять вещи на три отдельных диска (или три отдельных массива, поскольку RAID1 или 10 являются стандартными для наших производственных блоков) при запуске SQL Server, как правило, сохраняя файлы данных в одном, основных файлах журнала базы данных. на другом и tempdb (и ОС) на третьем.
Это невозможно с VirtualBox со снимками, поскольку я не могу найти способ разделить снимки для каждого диска в разных местах. Я могу хранить три виртуальных диска на отдельных дисках на физическом хосте, что будет иметь такую же разницу, если бы снимки не использовались, но со снимком все операции записи (и последующие операции чтения для затронутых областей) будут сосредоточены на одном диск, так как все файлы сравнения попадают в одно и то же место. Я могу хранить разностные файлы на отдельном диске от дисков, содержащих базовые виртуальные диски, содержащие зафиксированную активность, что, несомненно, поможет, но не в такой степени, как возможность полностью разделить ввод-вывод для каждого виртуального диска на разные физические диски.
tl; dr: Есть ли способ попросить VirtualBox (или другое решение для виртуализации, поскольку я могу рассмотреть альтернативы на этом этапе) сохранить разностные файлы для моментальных снимков с базовыми файлами виртуального диска, к которым они относятся, вместо того, чтобы все они входили в один общий каталог? Параметр местоположения моментального снимка доступен только на уровне виртуальной машины, но не на уровне виртуального диска, похоже, не принимает относительные пути. Или нам будет лучше просто сохранить виртуальную машину на физическом томе RAID0 с 4 дисками (конечно, с резервными копиями в гораздо более безопасном массиве!)?
Вы не говорите, какая у вас серверная ОС для VBox. Но если вы использовали Linux, вы могли бы поместить свои виртуальные диски на LVM и сделать их снимки.
Альтернативы для VirtualBox (я использую VBox только на ПК, а не на серверах): - XEN (очень хорошо подходит для использования паравиртуального Linux с ОС Linux vserver) - KVM (если вы хотите использовать Linux в качестве vserver) - Hyper-V (Microsoft / Microsoft )
Другая альтернатива: сделайте полное резервное копирование перед тестированием и полное восстановление после тестирования - без создания снимков.
Или: используйте снимок для создания полного клона, затем удалите снимок ...
Я взглянул на .vbox-файл виртуальной машины DOS после его снэпшота:
HardDisk-Section этого XML-файла выглядит многообещающе:
<HardDisks>
<HardDisk uuid="{e3f3bbd7-1a6d-45b1-9c3b-1a22c12e97d7}"
location="DOS.vdi"
format="VDI"
type="Normal">
<HardDisk uuid="{b299df93-905b-4030-b66d-04828a194d7c}"
location="Snapshots/{b299df93-905b-4030-b66d-04828a194d7c}.vdi"
format="VDI"/>
</HardDisk>
</HardDisks>
Я предполагаю, что вы можете изменить путь, указанный в "местоположении" для моментального снимка, по своему желанию (с приостановленной или выключенной виртуальной машиной). Попытайся...