Как открыть диск виртуальной машины

Добавил пользователь Morpheus
Обновлено: 21.09.2024

libguestfs для работы с дисками виртуальных машин

Для работы с образами виртуальных машин необходим пакет libguestfs.

libguestfs — это набор инструментов для доступа и изменения образов дисков виртуальных машин (ВМ). Вы можете использовать его для просмотра и редактирования файлов внутри гостей, создания сценариев для изменений виртуальных машин, мониторинга статистики использования/свободного диска, создания гостей, P2V, V2V, выполнения резервного копирования, клонирования виртуальных машин, создания виртуальных машин, форматирования дисков, изменения размера дисков и многого другого.

libguestfs может получить доступ практически к любому образу диска, который только можно вообразить. Он может делать это безопасно — без необходимости root и с несколькими уровнями защиты от вредоносных образов дисков. Он может получить доступ к образам дисков на удалённых машинах или на компакт-дисках/USB-накопителях. Он может получить доступ к проприетарным системам, таким как VMware и Hyper-V.

Все эти функции доступны через оболочку с поддержкой сценариев под названием guestfish или интерактивную спасательную оболочку virt-rescue.

libguestfs — это библиотека C, которая может быть связана с программами управления C и C++ и имеет привязки примерно для десятка других языков программирования. Используя модуль FUSE, вы также можете монтировать гостевые файловые системы на хосте.

libguestfs — это способ создания, доступа и изменения образов дисков. Вы можете заглядывать внутрь образов дисков, изменять файлы, которые они содержат, создавать их с нуля, изменять их размер и многое другое. Это особенно полезно из сценариев и программ, а также из командной строки.

Для установки в Debian, Kali Linux, Linux Minut, Ubuntu и их производные выполните:

Для установки в Arch Linux, Manjaro, BlackArch и их производные выполните:

Утилиты libguestfs

Данный пакет включает в себя большое количество утилит:

  • guestfs — главная документация по API
  • guestfish — интерактивный шелл
  • guestmount — монтирует файловую систему гостевой машины в основную
  • guestunmount — размонтирует гостевую файловую систему
  • virt-alignment-scan — проверить выравнивание разделов виртуальной машины
  • virt-builder — быстрый построитель образов
  • virt-builder-repository — создаёт репозитории virt-builder
  • virt-cat — показывает файл
  • virt-copy-in — копирует файлы и директории в виртуальную машину
  • virt-copy-out — копирует файлы и директории из виртуальной машины
  • virt-customize — настраивает виртуальные машины
  • virt-df — показывает свободное место на виртуальных дисках
  • virt-dib — безопасный diskimage-builder
  • virt-diff — показывает разницу между виртуальными дисками
  • virt-edit — редактирует файл
  • virt-filesystems — показывает информацию о файловых системах, устройствах, LVM
  • virt-format — стирает и делает пустые диски
  • virt-get-kernel — получает ядро с диска
  • virt-inspector — инспектирует образы виртуальных машин
  • virt-list-filesystems — выводит список файловых систем
  • virt-list-partitions — выводит список разделов дисков
  • virt-log — показывает файлы журналов
  • virt-ls — показывает список файлов
  • virt-make-fs — создаёт файловую систему
  • virt-p2v — конвертирует физическую машину для запуска на KVM
  • virt-p2v-make-disk — делает P2V ISO
  • virt-p2v-make-kickstart — делает P2V kickstart
  • virt-rescue — спасательный шелл
  • virt-resize — изменяет размер виртуальных машин
  • virt-sparsify — сделать виртуальные машины разреженными (с тонким предоставлением)
  • virt-sysprep — отключает виртуальную машину перед клонированием
  • virt-tail — показывает изменения в файле журнала
  • virt-tar — архивирует и выгружает файлы
  • virt-tar-in — архивирует и выгружает файлы
  • virt-tar-out — архивирует и загружает файлы
  • virt-v2v — конвертирует гостевую машину для запуска на KVM
  • virt-win-reg — экспортирует и объединяет ключи реестра Window
  • libguestfs-test-tool — тест libguestfs
  • libguestfs-make-fixed-appliance — сделать libguestfs фиксированным устройством
  • hivex — извлекает куст реестра Windows
  • hivexregedit — объединяет и экспортирует изменения в реестре из файлов в формате regedit
  • hivexsh — оболочка кустов реестра Windows
  • hivexml — конвертирует куст реестра Windows в XML
  • hivexget — извлекает данные из куста реестра Windows
  • guestfsd — демон guestfs

Ключевыми являются программы:

  • guestmount — монтирует файловую систему гостевой машины в основную
  • guestunmount — размонтирует гостевую файловую систему

Программа guestfish (интерактивный шелл) требует глубокого изучения, но позволит вам работать с содержимым виртуальных дисков в интерактивном режиме, или писать скрипты для автоматической обработки последовательности действий.

Многие из перечисленных программ являются скриптами, автоматизирующими действия. То есть они выполняют монтирование образа виртуального диска, делают указанное действие и размонтируют.

Монтирование дисков виртуальных машин

Типичная команда монтирования виртуального диска:

После опции -a нужно указать виртуальный диск для монтирования.

Рассмотрим ещё несколько опций:

Опция -i (--inspector) означает использовать код virt-inspector для проверки дисков в поисках операционной системы и монтирование файловых систем, как если бы они были смонтированы на реальной виртуальной машине.

Опция --live позволяет подключиться к работающей виртуальной машине, эта опция является экспериментальной.

Опция -r (--ro) добавляет устройство и монтирует всё только для чтения. Также запрещает запись и делает диск доступным только для чтения для FUSE. Это настоятельно рекомендуется, если вы не собираетесь редактировать гостевой диск. Если гость работает, а эта опция не указана, существует высокий риск повреждения диска в гостевой системе.

Опция -w (--rw) изменяет параметры -a, -d и -m, так что диски добавляются, а монтирование выполняется для чтения-записи.

Итак, смонтируем диск виртуальной машины Windows Server 2019.vdi.

Создадим точку монтирования:

Монтируем диск /mnt/disk_d/Виртуальные машины/Windows Server 2019.vdi в папку /tmp/guest:

Смотрим содержимое смонтированного диска:


Теперь посмотрим содержимое папки C:/Users/Администратор/Downloads/:


Для размонтирования используется команда вида:

Извлечение кустов реестра Windows из диска виртуальной машины

С помощью virt-win-reg можно извлекать кусты реестра Windows, в том числе те, которые доступны только для учётной записи System.

Общий вид команды:

По умолчанию содержимое будет выведено на экран, поэтому для сохранения данных в файл нужно воспользоваться перенаправлением вывода.

Например, команда для извлечения куста HKEY_LOCAL_MACHINE\SYSTEM из операционной системы Windows, чей виртуальный диск расположен в /mnt/disk_d/Виртуальные машины/Windows 10 (en).vdi и сохранение полученных данных в файл SYSTEM.reg:

Ещё один пример, извлечение куста реестра HKEY_LOCAL_MACHINE\SAM из образа диска /mnt/disk_d/Виртуальные машины/Windows Server 2019.vdi и сохранение данных в файл SAM.reg:

Просмотр свободного места диска виртуальной машины

Программа virt-df покажет разделы дисков и количество свободного места на них.

Общий вид команды:

Пример вывода для ОС Linux:

Ещё один пример команды:

Пример вывода для ОС Windows:

Обратите внимание, что разделы в Windows названы по аналогии с разделами Linux.

Анализ дисков виртуальной машины

Команда virt-inspector проведёт анализ файловых систем и покажет установленные программы, а также некоторую другую информацию об операционных системах.

Общий вид команды:

Вывод списка файлов диска виртуальной машины

Вы можете посмотреть содержимое любой папки на виртуальном диске с помощью virt-ls.

Общий вид команды:

Обратите внимание, что даже в Windows путь начинается с / (обозначение корневой папки).

Следующая команда покажет содержимое корня диска C: для виртуального диска /mnt/disk_d/Виртуальные машины/Windows 10 (en).vdi:

Просмотр содержимого файла на диске виртуальной машины

Программа virt-cat покажет содержимое любого файла. Файл будет выведен прямо на экран (в стандартный вывод), поэтому если это бинарный файл, то используйте перенаправление вывода для его сохранения.

Общий вид команды:

Обратите внимание, что даже в Windows путь начинается с / (обозначение корневой папки).

Следующая команда покажет содержимое файла C:\DumpStack.log.tmp из виртуального диска /mnt/disk_d/Виртуальные машины/Windows 10 (en).vdi:

Просмотр разделов дисков виртуальной машины

Программа virt-filesystems просто покажет количество разделов дисков и их номера.

image

Статья рассматривает особенности использования виртуальных дисков в 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”

Virtual Media Manager

Hardware management

В очередной раз отмечу, что из-за наличия UUID, о которых говорилось выше, нельзя просто скопировать и прикрепить образ диска.

Snapshots (Снэпшоты)

Как известно snapshot в переводе с английского означает снимок. Принцип работы механизма прост. При создании снэпшота, VirtualBox переводит текущий образ (образы, если их несколько), прикрепленный к ВМ в режим только для чтения и создает отдельный виртуальный диск (диски) и все последующие процедуры записи производятся уже в новом виртуальном хранилище. Причем фиксируются только изменения в определенных секторах, проще говоря при создании снэпшота диска размером 10GB, новый снэпшот будет гораздо меньше, и будет увеличиваться в размере постепенно, как будут заполнятся сектора.

Snapshots

Логично предположить, что чем больше используется снэпшотов одной виртуальной машины, тем больше используется вычислительных ресурсов для выполнения операций чтения с диска. Действительно, если есть 2 снэпшота, то вначале VirtualBox смотрит есть ли нужный сектор в образе снэпшота2, если нет, то система обращается к снэпшоту1, если и там ничего не обнаружено, то тогда идет обращение к основному диску. Нагрузка все-же будет незначительной и мало заметной для конечного пользователя, т, к. вся таблица секторов постоянно присутствует в памяти.

Кэширование ввода/вывода

Помимо расходa ресурсов еще одним недостатком кэширования является недостаточная надежность. Например, если внезапно случился перебой с электропитанием в момент, когда хоставая ОС уже сообщила гостевой об успешном выполнении записи, а сам процесс асинхронной записи еще не завершился. Такой сценарий безусловно приводит к потере данных.

Отключение кэширования выполняется следующим образом:

Bandwidth

VirtualBox позволяет ограничивать ширину пропускного канала для одного или нескольких виртуальных дисков.

Создаем группу “Limit” и устанавливаем лимит в 20 Mb/s


Добавляем нужные диски в группу.


Суммарный для обоих дисков bandwidth не будет превышать 20 MB/s. Этот лимит можно изменить в любой момент, не выключая виртуальной машины.

Особые режимы записи образов

Наконец последнее и самое важное — все изменения происходившие внутри виртуальной машины сохраняются на физическом диске и остаются там до тех пор, пока виртуальная машина не будет запущена заново.

Рассмотрим простой пример

Решением для Боба в данной ситуации будет после завершения работы, вручную удалять все содержимое папки Snapshots. Не говоря уже о том, что надо постоянно проверять в каком режиме работает диск и желательно, либо вообще заблокировать некоторые элементы GUI, что достаточно просто реализуется

Вместо заключения


VirtualBox замечательная и очень гибкая в настройке система виртуализации, сопоставимая по возможностям с коммерческими продуктами от флагманов индустрии. Данная статья показывает некоторые особенности, на которые уместно обратить внимание и лишь мизерную часть всех возможностей VirtualBox.

Б удучи установленной на виртуальном жёстком VHD-диске, вторая операционная система Windows никоим образом не уступает той, которая размещается на другом разделе диска. Наоборот, у первой по сравнению со второй есть два значимых преимущества. Во-первых, для установки Windows на VHD-диск нет надобности перераспределять дисковое пространство, если изначально нет лишнего пустого раздела диска под вторую операционную систему.

VHD-диск создаётся в рамках процесса установки Windows с помощью командной строки, с её же помощью и монтируется в систему, чтобы быть видимым в числе разделов для установки системы. Во-вторых, работать со второй Windows, установленной на виртуальном VHD-диске, можно как непосредственно загрузив её на компьютере, так и с помощью средств программ-гипервизоров.

Открыть Windows, с виртуального VHD-диска

Итак, имеем операционную систему, установленную на виртуальном VHD-диске.

VHD

Как её открыть внутри основной операционной системы с использованием программ-гипервизоров VMware Workstation и VirtualBox?

Открытие VHD-диска в VMware Workstation

Файл

Запустится мастер создания новой виртуальной машины, и в первом его окне кликаем выборочный тип конфигурации.

Выборочный тип конфигурации

Далее

Установка системы позже

VHD-диск

VMware Workstation

Настройка процессора

Оперативная память

Тип сети NAT

Контроллер ввода/вывода

Оставляем предустановленный

Использование существующего диска

В следующем окне жмём кнопку обзора и указываем путь к VHD-файлу. По умолчанию VMware Workstation не хочет видеть этот формат файлов , представляя на обозрение только файлы собственного производства. И чтобы увидеть VHD-файл, в окне проводника нужно установить параметр отображения всех файлов .

Отображения всех файлов

Путь размещения VHD-диска

Готово: настройка виртуальной машины завершена.

Готово

Вернёмся в главное окно VMware Workstation и увидим новую виртуальную машину в перечне существующих. Запускаем её.

Запускаем

Процесс запуска Windows начнётся с адаптации системы к условиям работы гипервизора. Будут обновлены драйвера, системные настройки, Metro-приложения Windows 8.1. В некоторых случаях запуск виртуальной машины может сопровождаться окном среды восстановления Windows. В этом случае необходимо просто выбрать продолжение использования системы.

Продолжение использования системы

Вскоре система загрузится.

Система

Открытие VHD-диска в VirtualBox

Создать

Размер оперативной памяти

Использование существующего диска

Возвращаемся в главное окно VirtualBox и запускаем только что созданную виртуальную машину.

Запускаем

VirtualBox также осуществит адаптацию гостевой операционной системы под свою специфику работы – будут установлены драйвера, применены системные настройки и т.п.

VirtualBox

Через минуту-две в окне программы будем наблюдать ту самую Windows, установленную на VHD-диске.


Виртуальные машины, такие как Virtualbox, используются для эмуляции виртуальное оборудование и запуска нескольких операционных систем на компьютере. Чем лучше будет у вас CPU и чем больше будет оперативной памяти, тем быстрее будут выполнятся виртуальные машины на вашем компьютере.
Я предлагаю несколько советов которые помогут вам сэкономить время при начальной настройке виртуальных машин. Это будет полезно для работы с виртуальными машинами VirtualBox, VMware, Parallels, или любой другой.

Обязательно установите дополнения гостевой ОС VirtualBox или VMware Tools

Убедитесь, что вы имеете самую последнюю версию Guest Additions — если вы видите уведомление, что доступно обновление для Guest Additions или VMware Tools, вы должны установить его.

Создание фиксированного размера дисков при первоначальной настройке

При создании виртуальной машины, вы можете создать два различных типа виртуальных дисков. По умолчанию программа обычно предлагает использовать динамически выделяемые диски, которые растут, вместе с занимаемым местом гостевой ОС.

Например, если вы создаете новую виртуальную машину с динамически выделяемым диском с максимальным размером 30 Гб, это не займет до 30 Гб места на жестком диске сразу.После установки операционной системы и программ, диск может только занять до 10 Гб. По мере добавления файлов на виртуальном диске, он будет расширяться до максимального размера в 30 Гб.

Это может быть удобно — каждая виртуальная машина не будет занимать неоправданно много места на вашем жестком диске. Тем не менее, это медленнее, чем создание фиксированного размера диска (диск с заранее выделенным местом). При создании фиксированного размера диска, все 30 Гб, будет занято немедленно на вашем компьютере.


Здесь есть компромисс — фиксированный размер диска занимает больше места на жестком диске, но работает с виртуальным жестким диском быстрее. Вы также избавитесь от фрагментации файла — место будет занято большим блоком вместо того, чтобы добавлять по всему диску более мелкие куски.

Исключите каталог виртуальных машин в вашем антивирусе

Ваш антивирус может сканировать файлы виртуальной машины, когда к ним происходит обращение, снижая производительность. Антивирус не сможет определить вирус внутри виртуальной машины, работающий на вашей гостевой операционной системе, так что эта проверка только вредит.


Чтобы ускорить процесс, вы можете добавить свой виртуальный каталог машины в список исключений антивирусного автора. Как только он находится в списке, ваш антивирус будет игнорировать все файлы в этом каталоге.

Выделите больше памяти

Виртуальные машины любят много виртуальной памяти. Microsoft рекомендует 2 Гб RAM для 64-битной Windows 7, и эта рекомендация относится и к Windows 7 x32, когда он работает в виртуальной машине. Если вы работаете большими приложениями в виртуальной машине, вы можете выделить более 2 Гб оперативной памяти.


Вы можете выделить больше оперативной памяти в диалоге настроек вашей виртуальной машины (виртуальная машина должна быть выключена, чтобы сделать это). Если на Вашем компьютере не хватает памяти, чтобы комфортно работать вместе с виртуальной машиной, вы можете заметить очень большое снижение производительности компьютера при использовании файла подкачки на жестком диске.

Выделите больше процессоров

Если у Вас компьютер с несколькими процессорами или ядрами, вы можете выделить дополнительные процессоры для вашей виртуальной машины из окна настроек VM. VM с двухъядерным (или четырехъядерным) процессором будет более шустро реагировать.


Если вы собираетесь инсталлировать ОС семейства MS-Windows и в будущем чтобы можно было использовать больше ядер при инсталляции указывайте 2 ядра для того чтобы поставился корректный HAL, после инсталляции вы можете выключить машину и поставить 1 ядро по умолчанию для повседневного использования. Но для будущего вы всегда сможете добавить ядра без деинсталляции ОС. Linux VM может динамически определять любое количество ядер при загрузке ОС.

Настройте параметры видео


Тонкая настройка параметров видео и выделение большего объема видеопамяти поможет также улучшить скорость вашей виртуальной машины. Например, включение функции 2D ускорение в VirtualBox улучшает воспроизведение видео в виртуальных машинах, включение 3D-ускорения позволит вам использовать некоторые 3D-приложения.

По большому счету нужно минимизировать использование 3D например ОС Windows 7 — отключив Aero.

Убедитесь, что функции Intel VT-x или AMD-V включены

Intel VT-x и AMD-V являются специальными расширениями процессора, которые улучшают скорость виртуализации. Новые Intel и AMD процессоры обычно включают в себя эти функции. Тем не менее, некоторые компьютеры не включают автоматически VT-x или AMD-V — вам придется включить этот параметр в BIOS вашего компьютера.


Чтобы определить, поддерживает ли Ваш Intel процессор расширение Intel VT, воспользуйтесь утилитами показывающими системную информацию. Если ваш процессор поддерживает эту функцию, но опция недоступна в вашей виртуальной машине, вы должны в BIOS вашего компьютера включить эту функцию. Этот параметр обычно включен по умолчанию в материнских платах с процессорами AMD.

Поместите файлы виртуальной машины на другой диск


Производительность диска может ограничить скорость вашей виртуальной машины. Размещение файлов виртуальной машины на отдельном физическом диске или не на системном диске — может улучшить производительность. Ваша виртуальная машина и система не будут конкурентно читать и писать с одного диска.

Однако, вы не должны запускать виртуальную машину с внешнего диска (USB) — это будет гораздо медленнее.

Читайте также: