Какие форматы виртуальной машины virtualbox форматы образов дисков предусмотрены чем они отличаются
Какое изображение диска следует использовать с VirtualBox, VDI, VMDK, VHD или HDD?
Последние версии VirtualBox поддерживают несколько форматов для виртуальных дисков, но они забыли провести сравнение между ними.
Теперь меня интересует рекомендация или сравнение, которая учитывает следующее:
11 ответов
Отвечая на ваши вопросы
Все четыре формата поддерживают моментальные снимки в VirtualBox.
Формат не должен влиять на производительность, или, по крайней мере, влияние производительности незначительно.
Факторы, влияющие на производительность:
Я всегда использую VDI, так как это собственный формат VirtualBox; однако использование VMDK (формат VMWare) повысит совместимость с другим программным обеспечением для виртуальных машин.
VirtualBox будет работать нормально на Ubuntu, поэтому, если целью является совместимость Windows /Ubuntu, VDI будет совершенно правильным выбором.
Оба формата будут соответствовать вашим требованиям.
Mpack, объясняет ключевую разницу в производительности между VHD и VDI здесь:
Все мои комментарии относятся к динамическому формату VHD и динамическому VDI. Тесты производительности на виртуальных дисках с фиксированным размером бессмысленны, поскольку оба формата являются то же самое (просто образ диска), у них просто разные заголовки.
Если вам нужно экспортировать из той же виртуальной машины через определенные промежутки времени, например, каждый день, это может быть болью. Но если вы иногда переходите к другой технологии, это должно быть хорошо.
Файлы образа диска находятся на хост-системе и видны гостевыми системами как жесткие диски определенной геометрии. Когда гостевая операционная система считывает или записывает на жесткий диск, VirtualBox перенаправляет запрос в файл изображения.
Как и физический диск, виртуальный диск имеет размер (емкость), который должен быть указан при создании файла образа. Однако, в отличие от физического диска, VirtualBox позволяет вам развернуть файл образа после создания, даже если он уже имеет данные; VirtualBox поддерживает четыре варианта файлов образа диска:
VMDK: VirtualBox также полностью поддерживает популярный и открытый формат контейнера VMDK, который используется многими другими продуктами виртуализации, в частности, VMware. [25]
VHD: VirtualBox также полностью поддерживает формат VHD, используемый Microsoft.
Также поддерживаются файлы изображений Parallels версии 2 (формат HDD). [26] Из-за отсутствия документации формата более новые форматы (3 и 4) не поддерживаются. Однако вы можете преобразовать такие файлы изображений в формат версии 2 с помощью инструментов, предоставляемых Parallels.
Хорошей причиной для использования vmdk является то, что Virtualbox (по крайней мере до версии 4.1) с использованием формата VDI имеет тенденцию со временем заполнять полное выделенное дисковое пространство, хотя использование внутреннего виртуального диска по-прежнему много Меньше. С Virtualbox с использованием дисков vmdk это кажется менее проблематичным.
Но я говорю о продолжительности работы. Это может быть не проблема, с которой многие сталкиваются.
Это зависит от того, как вы планируете использовать виртуальный диск. Не каждая виртуальная машина хочет, чтобы на одном диске был один раздел.
У VDI, похоже, больше возможностей (при использовании с VirtualBox), но как только вы выберете VirtualBox из картинки, поддержка VDI становится несколько шаткой (по состоянию на конец 2014 года).
Например, мои решения должны иметь максимальную межплатформенную поддержку. Установка VDI (например, loopback-устройства) на Linux или Windows 7 сложнее и сложнее, чем вы могли ожидать. Почти как у VDI слишком много функций, что затрудняет создание полностью соответствующих утилит, которые могут работать на нем.
VMDK является менее безболезненным IMHO, когда вы хотите, чтобы он работал с любой виртуальной машиной на любой рабочей станции, когда вы хотите клонировать ее 3 раза в другие системы в сети одновременно, и когда вы хотите открыть ее без запуск экземпляра виртуальной машины.
Несмотря на то, что я использую VirtualBox в 90% случаев, те несколько раз, когда мои диски становятся недоступными в определенных рабочих процессах, я помог VMDK для подключаемых /разделяемых файловых систем.
Что под капотом у виртуальных дисков? (на примере VHD и VHDX)
Вы когда-нибудь работали с виртуальными машинами, создавали виртуальные диски? Если да, то наверняка вы обратили внимание на такие удобные возможности, как динамическое увеличение размера диска (возможность хранить только то, что было записано) и возможность создания snapshot’ов — моментальных снимков состояния диска. Если вам интересно узнать, каким именно способом достигаются эти возможности и как хранятся данные в VHD и VHDX файлах — добро пожаловать под кат.
Фиксированные диски
Виртуальный диск — это, обычно, простой файл внутри которого хранится все, что записывает виртуальная машина на некое дисковое устройство. Под фиксированные диски сразу выделяется файл полного объема, который в дальнейшем не изменяется в размере.
Однако, тут следует оговориться, и вспомнить про возможности многих файловых систем создавать «сжатые» файлы. Обычно сжатие достигается за счет того, что не хранятся заполненные нулями блоки файла (например, так делают NTFS, XFS и VMFS). Даже если в вашей файловой системе свободно 500ГБ, вы легко можете создать создать фиксированный виртуальных диск на 1ТБ и работать с ним, пока не исчерпаете свободное место.
Динамические VHD
Файловые системы ведут запись на диск в хаотичном порядке. Чтобы в таких условиях обеспечивать постепенное увеличение файла виртуального диска, необходима система трансляции. Один из самых простых способов трансляции — это таблица, которая для каждого логического блока укажет его размещение внутри файла или скажет, что такой блок еще не был выделен.
Именно такая идея заложена в формате динамических VHD (и не только). Логическое пространство виртуального диска (то, что ОС внутри виртуальной машины видит как диск) разбито на блоки равного размера, например, по 2 мегабайта, которые адресуются с помощью BAT – Block Allocation table.
При создании snapshot’ов может потребоваться наделить статусом «пустой-выделенный» не отдельный блок, а отдельный сектор в блоке. Поэтому каждый блок снабжается bitmap’ом, который записывается перед блоком. При размере логического сектора 512 байт и размере блока 2 мегабайта, bitmap для блока будет занимать ровно 1 сектор (512*8 = 2 097 152 / 512). Т.е. один обобщенный блок будет занимать 4097 секторов.
Помимо BAT и обобщенных блоков файл VHD содержит еще структуры Hard Disk Footer (512байт) в самом конце и копию в самом начале. И Dynamic Disk Header (1024байта) в начале файла. В них хранятся различные метаданные о виртуальном диске: его размер, версию формата, метки времени, размер блока, смещение BAT, количество записей в ней и тд.
Если обобщить, то содержимое VHD файла выглядит так (пропорции условны):
Динамические VHDX
Формат динамического VHDX общей идеей похож на VHD — логическое пространство также разбивается на блоки, которые адресуются специальной таблицей трансляции, тут также есть bitmap’ы, чтобы уточнить статус отдельного сектора. Но в деталях отличий много.
Начну с того, что в VHDX размер одного bitmap’а фиксированный — 1 мегабайт. И покрывает он уже несколько блоков. Например, при размере логического сектора 512 байт (VHDX также может «отдавать» сектор 4096 байт) и размере блока 2 мегабайта, один bitmap «покрывает» 2 048 блоков. Это значение еще называется chunk ratio.
Второе отличие — блок с bitmap’ом самостоятельно адресуется из BAT. Сначала идут 2048 ячеек (chunk ratio), которые адресуют соответствующие блоки данных, потом идет ячейка, адресующая блок bitmap и так далее.
В общем виде структура VHDX файла выглядит примерно так:
Snapshot’ы
Snapshot — это моментальный снимок состояния виртуального диска на какой-то момент времени. Имея такой снимок мы можем откатить все изменения, сделанные после этого момента.
Если речь идет о VHD и VHDX дисках, то при создании snapshot’а создается новый файл, в котором фиксируются все последующие изменения. Такой файл называют «дельтой» или «разностным диском» (от англ. Differencing).
Ранее мы говорили, что формат динамических дисков позволяет хранить только записанные данные. Этот же формат прекрасно подходит для того, чтобы хранить только измененные данные. Да, файлы дельт имеют абсолютно такой же формат, что и динамические диски. Изменяется только интерпретация свободных блоков. Для дельты свободный блок означает, что надо не просто вернуть нули, а попытаться прочитать блок с предыдущего слоя — если есть предыдущая дельта, то с нее, а если нет, то с базового диска.
Если убрать верхнюю дельту — получим предыдущее зафиксированное состояние, а если обе, то самое раннее.
Взгляд со стороны восстановления данных
С точки зрения восстановления данных виртуальные диски плохи прежде всего тем, что между файлом и диском вводятся дополнительные уровни трансляции.
Каждый уровень — это дополнительное перемешивание данных, которое увеличивает фрагментацию, и потенциальная точка отказа. У какого-нибудь BAD сектора теперь гораздо больше возможностей наделать много проблем.
Особенности работы с виртуальными дискaми VirtualBox
Статья рассматривает особенности использования виртуальных дисков в VirtualBox, применение разных режимов чтения-записи, принцип и организацию работы snapshot-ов, кэширование ввода/вывода данных, а также некоторые аспекты использования виртуальных дисков с точки зрения информационной безопасности. Для тех, кому интересен пример с безопасностью, можете сразу переходить по якорю к разделу об особых режимах записи.
Начнем с некоторых общих понятий. У VirtualBox существуют 3 основных метода предоставления гостевой операционной системе (ОС) доступа к данным. Сей текст концентрируется на использовании виртуальных дисков.
Виртуальные диски подключаются к виртуальной — гостевой ОС, методом эмуляции подключения через соответствующий контроллер, IDE, SATA (AHCI), SCSI, SAS.
Поведение контроллеров запрограммировано таким образом, чтобы имитировать физические прототипы, следовательно IDE контроллер будет работать медленнее SATA и потреблять больше ресурсов процессора, ОС без соответствующих драйверов и аппаратной поддержки не будут взаимодействовать с виртуальными дисками и т.д. Например, в семействе Windows до Windows Vista нет поддержки Advanced Host Controller Interface (AHCI), к которому относится SATA, поэтому в частности, виртуальная машина с ОС Windows XP с SATA работать не будет.
Файлы виртуальных дисков
VirtualBox позволяет работать с разными форматами файлов виртуальных дисков. Помимо собственного VDI, поддерживаются VMDK (VMware), VHD (Microsoft), Parallels version 2 HDD format (Parallels).
Каждому виртуальному диску присваивается уникальный идентификатор UUID, это помогает VirtualBox удостовериться, что каждый диск используется только один раз и не позволяет импортировать в гостевую ОС обычные копии дисков (для этого существует отдельная процедура клонирования).
Виртуальные диски могут быть, как фиксированного размера, так и динамически выделяемого, причем VirtualBox позволяет увеличить размер дискового пространства, независимо от объёма и формата диска и даже в том случае, если диск содержит данные. Ниже пример, как это сделать с помощью утилиты vboxmanage.
При выборе динамически выделяемого образа, файл контейнера будет «разрастаться» постепенно, по мере заполнения секторов данными, до тех пор, пока размер контейнера не достигнет указанного при создании виртуальной машины лимита.
Учитывая то, что в процессе регулярного увеличения размера контейнера задействуются дополнительные вычислительные ресурсы, скорость записи при использовании опции с фиксированным размером, как правило выше, в с равнении с динамическим диском. Тем не менее, если размер динамического диска в долгосрочной перспективе значительно не увеличивается, то разница в скорости записи практически нивелируется.
Управление виртуальными медиа (Virtual Media Manager)
VirtualBox ведет реестр всех виртуальных медиа носителей, которые используются всеми гостевыми ОС. Это так называемые ”known media”, доступ к списку (реестру) которых можно получить используя утилиту Virtual Media Manager (доступно из меню File). Эта утилита показывает детальную информацию о каждом виртуальном диске, включая полный путь к файлу, а также к какой именно виртуальной машине файл прикреплен. Информацию из реестра можно удалить используя встроенную функцию удаления “Remove”
Каждый отдельно взятый образ можно «открепить» от виртуальной машины за которой он закреплен, используя функцию ”Release”
Открепив образ, прикрепить его обратно нажатием одной кнопки не удастся, для этого необходимо будет добавить образ, как жесткий диск. Аналогичным способом «прикрепляются» и снэпшоты (снимки диска).
В очередной раз отмечу, что из-за наличия UUID, о которых говорилось выше, нельзя просто скопировать и прикрепить образ диска.
Snapshots (Снэпшоты)
Как известно snapshot в переводе с английского означает снимок. Принцип работы механизма прост. При создании снэпшота, VirtualBox переводит текущий образ (образы, если их несколько), прикрепленный к ВМ в режим только для чтения и создает отдельный виртуальный диск (диски) и все последующие процедуры записи производятся уже в новом виртуальном хранилище. Причем фиксируются только изменения в определенных секторах, проще говоря при создании снэпшота диска размером 10GB, новый снэпшот будет гораздо меньше, и будет увеличиваться в размере постепенно, как будут заполнятся сектора.
Логично предположить, что чем больше используется снэпшотов одной виртуальной машины, тем больше используется вычислительных ресурсов для выполнения операций чтения с диска. Действительно, если есть 2 снэпшота, то вначале VirtualBox смотрит есть ли нужный сектор в образе снэпшота2, если нет, то система обращается к снэпшоту1, если и там ничего не обнаружено, то тогда идет обращение к основному диску. Нагрузка все-же будет незначительной и мало заметной для конечного пользователя, т, к. вся таблица секторов постоянно присутствует в памяти.
Стоить помнить, что при удалении снэпшота, все изменения произведенные после его создания «сливаются» с ранее «замороженным» образом.
Кэширование ввода/вывода
Затронув тему производительности уместно будет упомянуть и о кэшировании. Изначально VirtualBox работает с файлами образов, как с обычными файлами, которые само-собой кэшируются хостовой ОС. Это сделано, как нистранно с целью увеличение скорости. Когда гостевая ОС производит операцию записи, то операция кэшируется хостовой ОС и сообщение об успешном завершении операции отправляется в гостевую ОС сразу-же, в то время как сама операция обрабатывается гостевой ОС асинхронно. Такой подход не всегда себя оправдывает, т.к. файлы образов диска имеют тенденцию увеличиваться в объеме и вся процедура начинает давать обратный эффект — происходит двойное кэширование на стороне гостевой и хостовой операционных систем и снижается скорость производимых операций.
Помимо расходa ресурсов еще одним недостатком кэширования является недостаточная надежность. Например, если внезапно случился перебой с электропитанием в момент, когда хоставая ОС уже сообщила гостевой об успешном выполнении записи, а сам процесс асинхронной записи еще не завершился. Такой сценарий безусловно приводит к потере данных.
Отключение кэширования выполняется следующим образом:
Bandwidth
VirtualBox позволяет ограничивать ширину пропускного канала для одного или нескольких виртуальных дисков.
Создаем группу “Limit” и устанавливаем лимит в 20 Mb/s
Добавляем нужные диски в группу.
Суммарный для обоих дисков bandwidth не будет превышать 20 MB/s. Этот лимит можно изменить в любой момент, не выключая виртуальной машины.
Особые режимы записи образов
Для каждого образа виртуального диска, поддерживаемого VirtualBox, не зависимо от формата, можно определить режим поведения при записи данных, будь это следствие операций внутри виртуальной машины или снимка дика (snapshot). Такие режимы называются «нестандартными», в то время, как по умолчанию все образы дисков функционируют в «нормальном» режиме. Для того, что бы перевести режим из «нормального» в «нестандартный» можно воспользоваться вышеупомянутым Virtual Media Manager или консольной утилитой vboxmanage
В «нормальном» режиме записи, гостевая ОС может осуществлять чтение и запись с физического диска без всяких ограничений a при создании снимков диска (snapshot), VirtualBox создает oтдельный файл в котором фиксируются все изменения.
В режиме «write through» функция снэпшотов работать не бует.
Режим работы «shareable» своего рода разновидность предыдущего. Тут тоже нет возможности работы со «снэпшотами», зато есть возможность использования несколькими одновременно работающими виртуальными машинами одного образа диска, сценарий кластеризации.
Схожий по названию, но отличающийся по принципам работы режим «multiattach», также позволяет использовать один образ диска для нескольких виртуальных машин, но в этом режиме каждая отдельная виртуальная машина использует свой независимый «снэпшот» и изменения произведенные в одной ВМ не доступны для других.
Режим «read only» используется в основном для работы с образами CD/DVD, т.к. предполагает только чтение.
Режим на который стоит обратить внимание называется «Immutable». Как следует из названия immutable образы не меняются с течением времени. Любые изменения в immutable диске актуальны ровно до тех пор, пока виртуальная машина работает. После отключения виртуальной машины все изменения пропадают. Прежде чем перевести диск в режим immutable стоит сначало создатъ «нормальный» диск, установить и настроить систему в оптимальное состояние, желательно не подключаясь к интеренету, и только после того, как гостевая система готова — «откреплять» диск и переводить его в режим immutable.
Одним из сценариев работы может быть схема при которой используются два диска – один в режиме immutable, на котором находится сама система, второй в нормальном или write-through режиме. На первый взгляд вполне безопасный и понятный сценарий работы — каждый раз загружается «свежая» система. Но не все так прозрачно и есть некоторые нюансы.
Во первых, для immutable дисков есть одно важное исключение. Они не “обнуляются” в случае, когда прикреплены к виртуальной машине, снимок диска которой был сделан пока та была запущенна — так называемый online-snapshot. Это означает, что если например, пользователь создал immutable disk, а потом в процессе работы, создал «снэпшот», не завершив работу виртуальной машины, то начиная с упомянутого «снэпшота» все последующие операции и действия внутри системы будут носить необратимый эффект, т.к. все действия будут де-факто происходить в «снэпшоте».
В случае если основной целью является «свежая система» при каждом запуске, то от использования снэпшотов, лучше воздержаться.
Во-вторых, вышеописанное «обнуление» отдельного образа происходит только в случае, когда команда включения/отключения виртуальной машины посылается самой средой VirtualBox, а не происходит внутри гостевой ОС. Проще говоря, если например перезагрузить гостевую ОС Windows стандартным методом (Меню пуск, перезагрзить систему), то обнуление immutable диска не произойдет.
Наконец последнее и самое важное — все изменения происходившие внутри виртуальной машины сохраняются на физическом диске и остаются там до тех пор, пока виртуальная машина не будет запущена заново.
После того, как текущий контейнер установлен в режим immutable, VirtualBox перестает использовать этот контейнер и фактически диск переходит в режим «read only». Все операции записи перенаправляются в отдельный образ и каждый раз, когда виртуальная машина начинает работу этот новый «отдельный» образ «обнуляется». В реальности на жестком диске создается временный «снэпшот», который находится в папке Snapshots, соответствующей виртуальной машины, внутри которого и происходит вся работа. После завершения работы виртуальной машины вышеупомянутый временный скриншот остается нетронутым.
Рассмотрим простой пример
Боб создал виртуальную машину, настроил ОС и перевел диск в режим immutable. Боб регулярно использует свою виртуальную машину для тайного общения с Алисой. При каждом запуске, загружается «свежая» система, не содержащая никаких логов предыдущего общения, текстов, видео или фото. В очередной раз закончив переписку, Боб спокойно выключает виртуальную машину и идет спать.
Предположим также, что перед каждым запуском ОС Боб проверяет, что режим диска установлен как “immutable”.
Ева имеет доступ к компьютеру на котором установлена виртуальная машина. Ей достаточно зайти в папку Snapshots внутри директории соответствующей виртуальной машины и там будет требуемый «снэпшот».
Все что остается сделать Еве, что бы увидеть всю переписку, равно как и результат всех действий производимых Бобом внутри ОС, это перевести диск в «нормальный» режим и перед тем, как запустить виртуальную машину прикрепить к ней снэпшот. Более того, Ева может каждый день делать резервные копии таких «снэпшотов», главное, что бы это было сделано до того, как Боб снова запустит виртуальную машину.
Решением для Боба в данной ситуации будет после завершения работы, вручную удалять все содержимое папки Snapshots. Не говоря уже о том, что надо постоянно проверять в каком режиме работает диск и желательно, либо вообще заблокировать некоторые элементы GUI, что достаточно просто реализуется
Справедливости ради стоит сказать, что у тех-же Parallels, с самых ранних версий для того, что бы перевести диски из одного режима в другой необходим пароль суперпользователя, а временные «снэпшоты» удаляются моментально, после завершения работы.
Какие форматы виртуальной машины virtualbox форматы образов дисков предусмотрены чем они отличаются
Так как виртуальным машинам обычно требуется жесткий диск, то VirtualBox должен предоставлять «реальное хранилище» данных гостю в качестве виртуального жесткого диска. Существует три способа достичь этого:
Чаще всего VirtualBox использует большие файлы на реальном диске и предоставляет его гостю как виртуальный жесткий диск. Они описаны в разделе “Disk image files (VDI, VMDK, VHD, HDD)”.
Если у вас есть сервер iSCSI storage, вы можете подключить VirtualBox к нему, который описывается в разделе “iSCSI servers”.
Наконец, в качестве экспериментальной функции, вы можете разрешить виртуальным машинам непосредственно использовать жесткие диски хоста; эта расширенная функция описывается в разделе “Using a raw host hard disk from a guest”.
Каждое виртуальное устройство хранения (файл образа, iSCSI target или физический жесткий диск) необходимо подключить к виртуальному контроллеру жестких дисков виртуальной машины. Механизм подключения раскрывается в следующем разделе.
Контроллеры жестких дисков: IDE, SATA (AHCI), SCSI, SAS
В настоящем компьютере, жесткие диски и CD/DVD устройства подключаются к устройству, которое называют контроллером жесткого диска и которое управляет дисковыми операциями и передачей данных. VirtualBox может эмулировать четыре наиболее используемых типа контроллеров жестких дисков, которые встечаются в современных ПК: IDE, SATA (AHCI), SCSI и SAS. [20]
Даже если ваша гостевая ОС не поддерживает SCSI или SATA устройства, она всегда обнаружит IDE контроллер, который по умолчанию всегда подключен.
Вы также можете точно указать тип IDE контроллера, который должен быть предоставлен виртуальной машине (PIIX3, PIIX4 или ICH6). Тип не влияет на производительность, но в случае если вы импортирует виртуальную машину от других виртуальных сред, операционная система в этой машине может не заработать, если ей не предоставить нужный тип контроллера.
Serial ATA (SATA) это новый стандарт, появившийся в 2003. По сравнению с IDE, он поддерживает более высокую скорость обмена и позволяет подключить большее количество жестких дисков к контроллеру. Так же как на реальном компьютере, устройства могут быть добавлены и удалены во время работы системы. Стандарт интерфейса для SATA контролеров называется Advanced Host Controller Interface ( AHCI ).
По соображениям совместимости, AHCI контроллеры по умолчанию работают с дисками в режиме называемом IDE совместимом, пока явно не указать использование SATA. Этот режим («IDE compatibility mode») означает, что устройства будут определяться и управляться через BIOS компюютера. Still, disks assigned to those slots will operate in full-speed AHCI mode once the guest operating system has loaded its AHCI device driver.
Как и реальный SATA, виртуальный SATA контроллер работает быстрее и также меньше нагружает процессор, чем IDE контроллер. Кроме того, возможно подключение до 30 виртуальных жестких дисков к одной ВМ, а не трех как в IDE (плюс уже подключенный DVD привод ). Первые четыре слота (с номерами 0-3 в окне настроек) по умолчанию работают в режиме IDE совместимости.
Поэтому, начиная с версии 3.2, в зависимости от вида гостевой операционной системы, VirtualBox использует SATA их по умолчанию для новых создаваемых вириуальных машин. По умолчанию, создается один виртуальный SATA контроллер и новый создаваемый виртуальный жесткий диск подключается к нему.
Предупреждение
SATA контроллер и виртуальные диски подключенные к нему (включая диски в режиме IDE совместимости) будут видны только операционным системам с поддержкой AHCI. Например, AHCI не поддерживается в системах Windows до Windows Vista, т.е. в Windows XP (даже с SP3) вы не увидите диски пока не установите дополнительные драйвера. Возможно сменить IDE на SATA после установки ОС, установив SATA драйвера и изменив тип контроллерв в диалоге настроек ВМ. [22]
Для добавления SATA контроллера к виртуальной машине у которой его нет (возможно по причине создания ее в ранних версиях VirtualBox или потому, что SATA не поддерживается гостевой ОС), перейдите на закладку «Носители» диалога настроек и кликните на кнопке «Добавить контроллер» под списком «Носители информации», выбрав далее «Добавить SATA котроллер». После этого, дополнительный контроллер появится в виртуальной машине как PCI устройство и вы сможете подключать виртуальные диски к нему
Для совместимости с другими программами виртуализации, VirtualBox поддерживает LsiLogic и BusLogic SCSI контроллеры, которые позволяют подключать до 15 виртуальных жестких дисков.
Для добавления SСSI контроллера к виртуальной машине перейдите на закладку «Носители» диалога настроек и кликните на кнопке «Добавить контроллер» под списком «Носители информации», выбрав далее «Добавить SCSI котроллер». После этого, дополнительный контроллер появится в виртуальной машине как PCI устройство.
Предупреждение
Как и в случае с другими типами контроллеров, SCSI контроллер будет видны только операционным системам, которые могут работать с ними. Windows 2003 и позднии версии поставляется с драйвервми для LSI Logic контроллера, а Windows NT 4.0 и Windows 2000 поставляются с драйверами BusLogic контроллера. Windows XP не имет драйверов ни для одного из них.
Serial Attached SCSI (SAS) это другой стандарт, который использует систему комманд SCSI. As opposed to SCSI, however, with physical devices, serial cables are used instead of parallel ones, which simplifies physical device connections. In some ways, therefore, SAS is to SCSI what SATA is to IDE: it allows for more reliable and faster connections.
Для гостевых систем требующих SAS контроллеров, VirtualBox эмулирует LSI Logic SAS контроллер, который может быть подключен тем же путем, что и SCSI контроллер. В настоящее время, можно подключить до 8 устройств к SAS контроллеру.
Предупреждение
Как и SATA, SAS контроллер будет доступен только в ОС которые могут с ним работать. Например, SAS не поддерживается в системах Windows до Windows Vista, т.е. в Windows XP (даже с SP3) вы не увидите диски пока не установите дополнительные драйвера.
Суммируя вышесказанное, VirtualBox предоставляет вам следующие виртуальные устройства хранения:
четыре слота для подключения к стандарным IDE контроллерам, которые всегда представлены (один из них как виртуальный привод CD/DVD);
30 слотов для подключения к SATA котроллеру, при условии что, что ваша гостевая ОС может работать с ними
в режиме IDE совместимости (по умолчанию слоты 0-3) или
15 слотов для подключения к SCSI контроллеру, если гостевая ОС их поддерживает;
8 слодов для подключения к SAS контроллеру, если гостевая ОС их поддерживает;
Учитывая большой выбор контроллеров, перед вами может возникнуть вопрос выбора нужного. Вы должны избегать использование IDE, конечно если он не является единственно поддерживаемым контроллером в вашем госте. Реальной разницы между SATA, SCSI и SAS не существует. Такое разнообразие контроллеров нужно только для совместимости VirtualBox с другими гипервизорами и аппаратными требованиями гостей.
Файлы образа диска (VDI, VMDK, VHD, HDD)
Файлы дисковых образов располагаются на хост системе и определяются гостевыми системами как жесткие диски определенного размера. При чтении или записи данных с диска гостевой ОС, VirtualBox перенаправляет дисковые запросы к файлу образа.
Как и у физического диска, у виртуального диска есть размер (емкость), который должен быть указан при его создании. Но в отличии от физических дисков, VirtualBox позволяет вам увеличивать образ файла после его создания, даже в случае когда он содержит данные; см. подробности в раздел “VBoxManage modifyhd”. [23]
VirtualBox поддерживает 4 типа файлов образов диска:
VirtualBox также полностью поддерживает популярный и открытый формат VMDK, который используется в множестве других продуктах виртуализации, например в VMware. [24]
VirtualBox таже полностью поддерживает формат VHD разработанный Microsoft.
Файлы образов Parallels 2 версии (HDD format) также поддерживаются. [25] Новые версии этого формата (3 and 4) не поддерживаются из за отсуствия его спецификаций. Однако, вы можете конвертировать эти образы с помощью уструментов предоставляемых Parallels.
Менеджер виртуальных носителей
VirtualBox хранит данные обо всех жестких дисках, CD/DVD-ROM и образах гибких дисков которые используются в виртуальных машинах. Обычно они упоминаются как «известные носители» и которые могут быть получены из 2 источников:
все носители которые в настоящее время подключены к виртуальным машинам;
из базы «зарегистрированных» носителей для обеспечения совместимости с VirtualBox версий меньше чем 4.0. Для получения детальной информации об изменениях в версии 4.0 связаной с регистрацией носителей, обращайтесь к разделу “Where VirtualBox stores its files”.
Носители сгруппированы на трех вкладках по их форматам. Форматы дисков:
Образы жестких дисков, в виде собственного VirtualBox Virtual Disk Image (VDI) или формата стороннего поставщика, которые перечисленны в предыдущем разделе;
CD/DVD образы в ISO стандарте;
образы дискет в стандартном формате RAW (полная копия носителя).
Менеджер виртуальных носителей позволяет вам
удалить образ из хранилища (и при необходимости также удалить образ файла);
Начиная с версии 4.0, для создания новых образов дисков, используйте закладку «Носители» в диалоговом окне настроек виртуальной машины ( т.к. образы дисков по умолчанию сохраняются в папку виртуальной машины).
Файлы образов жестких дисков можно скопировать на другой хост и импортировать в другие виртуальные машины.
Замечание
Особые режимы записи образа
Для normal образов (по умолчанию) не существует ограничений на операции чтения и записи на диск.
Когда вы делаете снимок состояния вашей виртуальной машины (см. Раздел, “Снимки состояний” ), состояние диска в режиме «normal» будет всегда сохранено в снимке и при возврате к снимку, его состояние будет полностью сброшено к состоянию на момент создания снимка.
(Technically, strictly speaking, the image file itself is not «reset». При создании снимка, VirtualBox «замораживает» файл образа и не записывет данные в него. При операциях записи в ВМ, создается другой «разностный» файл образа, в который записываются все изменения.
Когда вы подключаете «normal» образ к более чем одной виртуальной машине, то только одна из этих виртуальных машин может работать с этим файлом образа в одно и то же время, иначе не возможно было бы разрешить конфликты одновременной записи данных в образ. [26 ]
Предупреждение
Далее, immutable образы хранят записанные на них данные только при работе виртуальной машины; все изменения будут потерены, когда ВМ будет запущена в следующий раз. В отличие от «normal» образов, immutable образы могут использоваться в нескольких виртуальных машинах без ограничений.
Создание immutable образа не имеет смысла, поскольку изначально он не содержит данных и все данные на нем будут потерены при перезапуске машины (конечно если вы действительно хотите иметь такой диск, то создавайте). Обычно, вначале вы должны создаете «normal» образ и когда вы заполните его нужными данными можете сделать его immutable.
Если вы сделаете снимок виртуальной машины с immutable образом, то при каждом ее включенииэтот образ будет соответствовать последнему состоянию (текущему) снимка (а не состоянию оригинального immutable образа).
Замечание
As a special exception, immutable images are not reset if they are attached to a machine whose last snapshot was taken while the machine was running (a so-called «online» snapshot). As a result, if the machine’s current snapshot is such an «online» snapshot, its immutable images behave exactly like the «normal» images described previously. To re-enable the automatic resetting of such images, delete the current snapshot of the machine.
Фактически VirtualBox никогда не пишет напрямую never в immutable образ. Все операции записи в машине перенаправляются в разностный образ; при следующем включении ВМ, разностный образ очищается. [27] Differencing образ очищается только при включении виртиуальной машины VirtualBox’ом, а не при перзапуске запрошеной внутри виртуальной машины. This is also why immutable images behave as described above when snapshots are also present, which use differencing images as well.
Если автоматическое сбрасывание разностного образа, при старте ВМ вам не нужно, то вы можете его отключить используя параметр autoreset в команде VBoxManage modifyhd ; подробности в разделе “VBoxManage modifyhd”.
Образ в режиме multiattach может быть подключен одновременно к более чем одной виртуальной машине, даже если эти машины работают одновременно. Для каждой ВМ к которой этот образ подключен, создается разностный образ. В результате, данные которые пишутся на виртуальный диск одной машины не доступны на другой, для каждой машины создается своя собственная история записи данных multiattach образа.
В техническом плане, «multiattach» образ идентичен «immutable» образу за исключением того, что его содержимое не очищается при каждом запуске машины.
Наконец, read-only образ используется для CD/DVD образов, т.к. на CD/DVD нельзя записать.
Для иллюстрации отличий между разными типами образов рассмотрим работу со снимками состояний: предположим вы установили гостевую ОС в виртуальной машине и сделали ее снимок состояния. Представим что ваша ВМ была заражена вирусом и вы хотите вернуться к сохраненному ранее состоянию. Для normal образа диска, вы просто восстанавливаете состояние ВМ и предыдущее состояние вашего диска будет восстановлено (вирус будет удален). Для immutable диска, вне зависимости от снимка, все что нужно сделать так это перезапустить ВМ, изменения сделанные вирусом в файловой системы будут удалены. Для write-through образа однако, вы не можете просто удалить последствия действий вируса средствами виртуализации, вам необходимо будет «вылечить» вашу виртуальную машину как реальный компьютер.
Использование write-though образов удобно, когда вы захотите сохранять важные данные вне зависимости от снимков состояний и вам необходимо использовать образ в нескольких ВМ: вы можете использовать один immutable диск для ОС, а другой write-through диск для файлов с данными.
Differencing образы
В предыдущем разделе упоминались разностные образы, как они мспользуятся в снимках состояний ВМ, immutable образы и диски для множественного подключения. Для любознательных пользователей VirtualBox в этом разделе более подробно описываются детали их работы.
Разностный образ это специальный образ диска, который содержит только изменения/отличия данных из другого образа. Отделное использование его бесполезно, он должен быть всегда ссылаться на другой образ. Разностный образ обычно рассматривается как «дочерний», который хранит изменения для его «родителя».
В активный разностный образ записываются все данные по операциям записи от виртуальной машины. Разностный образ состоит только из секторов виртуального жесткого диска, которые были изменены с момента его создания. Когда машина читает сектор с этого виртуального жеского диска, она вначале ищет его в разностном образе. Если такой сектор найден, то но считывается из него; если нет, то VirtualBox ищет его в образе родителя. Другими словами, родитель это образ «только для чтения»; он никогда не используется для записи, но если сектор на не был изменен то он используется для чтения данных.
Разностыне образы могут образовывать цепочки. Если создается другой разностный образ для виртуального диска, который уже имеет разностный образ, то он становится «внуком» для родительского образа. Первый разностный образ также становится доступным только для чтения, а операции записи выполняются только на разностном образе второго уровня. При чтении с виртуального диска, VirtualBox необходимо сначала обработать второй разностный образ, затем первый и если сектор не будет найден то оригинальный образ.
In all of these situations, from the point of view of the virtual machine, the virtual hard disk behaves like any other disk. While the virtual machine is running, there is a slight run-time I/O overhead because VirtualBox might need to look up sectors several times. This is not noticeable however since the tables with sector information are always kept in memory and can be looked up quickly.
Разностные образы могут использоваться в следующих ситуациях:
Снимки состояний. Когда вы создаете снимок, как описывалось в предыдущей секции, VirtualBox «замораживает» образы подключенные к виртуальной машине и создает разностный образ для каждого из них (если быть точным: один для каждого образа, который не находится в режиме «write-through»). С точки зрения виртуальной машины, виртуальные диски продолжают работу, но все операции записи передаются в разностные образы. В любое время вы можете создать другой снимок, для каждого подключенного жесткого диска, будет создан и подключен другой разностный образ, формируя цепочку или дерево.
На рисунке выше, вы можете увидеть, что к исходному образу диска теперь подключен снимок состояния, который представляет состояние диска в момент создания снимка.
VirtualBox восстановит настройки виртуальной машины, которые были сохранены в снимке состояния. В результате, если вы изменяли настройки машины, то они будут отменены.
If the snapshot was taken while the machine was running, it contains a saved machine state, and that state is restored as well; after restoring the snapshot, the machine will then be in «Saved» state and resume execution from there when it is next started. Otherwise the machine will be in «Powered Off» state and do a full boot.
Для каждого образа диска подключенного к машине, с видом differencing, будут отменены все действия выполненные операциями записи на него и его состояние будет восстановлено из оригинального родительского образа. (If you restored the «root» snapshot, then this will be the root disk image for each attachment; otherwise, some other differencing image descended from it.) This effectively restores the old machine state.
Если вы позже удаляете снимок для освобождения места на диске хоста, у каждого подключенного диска один из differencing образов становится не нужным. В данном случае, подключенный differencing образ не может быть просто удален. VirtualBox нужно просмотреть каждый сектор в разностном образе и скопировать нужные в родительский; это называется «объединение» образов и эта операция может быть длительным процессом, что зависит от размера разностного образа. Также для этой операции временно может потребоваться большое количество свободного дискового пространства.
Immutable образы. Если образ находится в режиме «immutable», то разностные образы также создаются. Как и в случае снимков, родительский образ переходит в режим только для чтения, а запись производится в разностный образ. Каждый раз при запуске виртуальной машины, все immutable образы отбрасывают свои собственные разностные образы.
Клонирование образов дисков
Вы можете сделать копии образов жестких дисков для того чтобы быстро создать другую виртуальную машину с такой же ОС. Однако, вам необходимо обязательно делать копию виртуального образа диска используя утилиту поставляемую с VirtualBox; см. the section called “VBoxManage clonehd”. Ее необходимо использовать, так как VirtualBox присваивает уникальный идентификационный номер (UUID) каждому образу диска, который хранится внутри файла образа и VirtualBox не будет работать с двумя образами с одинаковыми идентификаторами. В случае если вам нужно повторно импортировать дисковый образ, который вы скопировали обычным методом, вы можете использовать другую утилиту VirtualBox: импортируйте его вместо копирования.
Заметьте что новые дистрибутивы Linux идентифицируют загрузочные диски по ID устройств. ID который VirtualBox предоставляет устройствам получает из UUID образа виртуального диска. Поэтому если вы получили копию диска и попытаетесь загрузиться с него, но так как UID изменился, то гостевая система может не определить свой загрузочный диск и не загрузиться. В данном случае вы должны будете изменить ID диска в настройке загрузчика (например /boot/grub/menu.lst). The disk ID looks like this:
ID для копии образа можно определить командой
Host I/O caching
Начиная с версии 3.2, в VirtualBox можно по желанию отключать кэширование I/O (буферизация ввода/вывода), которое по умолчанию выполняется ОС хоста для файлов виртуальных дисков.
Заметьте, что это относится только к файловым образам; буферизация вывода никогда не применялась к виртуальным дискам расположенным на удаленных iSCSI хранилищах (см. раздел “iSCSI servers”).
Отложенная запись, через кэш ОС, менее безопасна. Когда гостевая ОС записывает данные, то считается что данные сохранены, даже если не было физической записи на диск. Если по каким то причинам запись не происходит (сбой питания или ОС хоста), то увеличивается вероятность потери данных.
Образы дисков обычно имеют очень большие размеры. Поэтому, их кэширование может быстро занять весь кэш ОС хоста. Это может привести к замедлению работы хоста, особенно, если одновременно запущено несколько ВМ. Например, на Linux, возможна задержка всех операций записи процессе ожидания заполнения всего кеша и последующей его одновременной записи на диск, что может приводить к приостановке работы ВМ до нескольких минут. Это может привести к ошибкам I/O в гостевой ОС по таймауту.
Физическая память часто тратится впустую, т.к. у гостевых систем есть собственный кэш ввода/вывода, что приводит к дублированию операций буферизации (в кеше гостя и хоста).
Если вы решите отключить кэширование I/O хоста, то VirtualBox будет использовать свой собственный, маленький кеш только для буферизации записи, а для операций нет, т.к. чтение обычно буферизируется в гостевой ОС. Дополнительно, VirtualBox полностью поддерживает асинхронный ввод/вывод для SATA, SCSI и SAS контроллеров, посредством многопоточного ввода/вывода.
Асинхронный I/O не поддерживается для IDE контроллеров, поэтому вы возможно захотите включить кеширование в ваших ВМ с виртуальными IDE контроллерами.
Поэтому, VirtualBox позволяет вам настраивать кеширование операций вводв/вывода для каждого контроллера отдельно. Снимите галку с «кеширование операций ввода/вывода» на вкладке «Носители» или используйте следующую команду VBoxManage, для отключения кеширования виртуального контроллера :
По упомянутым выше причинам, VirtualBox теперь использует по умолчанию SATA контроллер для новых виртуальных машин.
Ограничение пропускной способности для дисковых образов
Начиная с версии 4.0, VirtualBox позволяет ограничить максимальную полосу пропускания для асинхронного ввода/вывода. Возможно задание ограничений для нескольких образов, посредством групповых лимитов. Возможно задать более, чем один такой лимит.
Для всех дисков в группе задан общий лимит, для примера выше это значит, что пропускная общая способность обоих дисков никогда не превысит 20 MB/s. Однако, если одному диску не требуется канал ввода/вывода, то оставшиеся диски в группе используют пропускную способность канала всей группы.
Ограничения для каждой группы может быть изменено при работающей ВМ и эти изменения сразу же вступают в силу. В следующем примере, для группы созданной в примере выше, задается лимит в 10 MB/s:
Поддержка CD/DVD
Виртуальные приводы CD/DVD по умолчанию работают только в режиме чтения. Настройки носителей можно изменять во время работы ВМ. Вы можете выбирать тремя настройками :
Host Drive определяет, что гостем будет использоваться носитель в приводе хоста.
Image file (обычно ISO файл) гость будет иметь доступ только для чтения к данным файла образа.
Empty задает состояние отсутствия носителя в приводе.
Переключения описанных выше настройек, изменения носителя в приводе хоста или файла образа сразу передаются гостевой операционной системе, которая может реагировать на эти изменения (например запускать установщик программы).
Замечание
Наименование устройства предоставляемого гостю (которое в гостевой системе будет отображаться в утилитах настроек таких как Windows Device Manager) будет всегда «VBOX CD-ROM», независимо от текущей настройки виртуального привода. Это сделано для того, чтобы исключить срабатывания механизма поиска новых устройств в госте при изменении настроек ВМ.
Эмуляция стандартных CD/DVD приводов позволяет читать данные только со стандартных форматов CD и DVD. Гостю можно дать право на запись CD/DVD, посредством прямого доступа к приводу хоста, но данная функция имеет статус экспериментальной: В зависимости от аппаратной части хоста, это позволяет:
Записывать CD/DVD из гостевой системы, если привод CD/DVD хоста пишущий;
проигрывать звуковые CD;
читать зашифрованные DVD.
Даже в случае включенного режима прямого доступа, небезопасные команды, такие как прошивка привода. будут заблокированы. Формат Video CD не поддерживается даже в режиме прямого доступа, и поэтому не может быть просмотрен в виртуальной машине.
On Solaris hosts, pass-through requires running VirtualBox with real root permissions due to security measures enforced by the host.
Сервера iSCSI
iSCSI это стандарт для «Internet SCSI», который позволяет использовать протокол SCSI через Internet (TCP/IP) соединения. Подключение устройства iSCSI к компьютерным сетям (лучше с гигабитным Ethernet) позволяет их использовать как удаленный жесткий диск. В терминах iSCSI сервер предоставляющий ресурсы хранилища называется «iSCSI target», а клиент подключенный к серверу и использующий эти ресурсы «iSCSI initiator».
VirtualBox позволяет подключать удаленные хранилища iSCSI к виртуальной машине как виртуальный жесткий диск. Гостевая ОС не «видит» различий между образом виртуального диска (файлом VDI) и iSCSI target. Для этой цели в VirtualBox интегрирован iSCSI initiator.
Поддержка в VirtualBox iSCSI была разработана с соответствии со стандартом iSCSI, что позволяет работать со стандартными устройствами iSCSI targets. Для использования iSCSI с VirtualBox, вы должны использовать командную строку; см. раздел “VBoxManage storageattach”.
[20] поддержка SATA добавлена в VirtualBox 1.6; экспериментальная поддержка SCSI добавлена в 2.1 а полная в 2.2. Подключения носителей было сделано более гибким в VirtualBox 3.1; см. ниже. Поддержка контроллера LSI Logic SAS была добавлена в VirtualBox 3.2.
[21] The assignment of the machine’s CD/DVD drive to the secondary master was fixed before VirtualBox 3.1; it is now changeable, and the drive can be at other slots of the IDE controller, and there can be more than one such drive.
[22] VirtualBox recommends the Intel Matrix Storage drivers which can be downloaded from http://downloadcenter.intel.com/Product_Filter.aspx?ProductID=2101.
[23] Image resizing was added with VirtualBox 4.0.
[24] Initial support for VMDK was added with VirtualBox 1.4; since version 2.1, VirtualBox supports VMDK fully, meaning that you can create snapshots and use all the other advanced features described above for VDI images with VMDK also.
[25] Support was added with VirtualBox 3.1.
[26] This restriction is more lenient now than it was before VirtualBox 2.2. Previously, each «normal» disk image could only be attached to one single machine. Теперь возможно подключать к нескольким, но при этом только одна из них может работать.
[27] This behavior also changed with VirtualBox 2.2. Previously, the differencing images were discarded when the machine session ended ; now they are discarded every time the machine is powered on.