ZaLinux.ru

Как открыть диски виртуальных машин и скачивать и закачивать на них файлы (РЕШЕНО)

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 и их производные выполните:

sudo apt install libguestfs-tools

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

sudo pacman -S libguestfs

Утилиты 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 (интерактивный шелл) требует глубокого изучения, но позволит вам работать с содержимым виртуальных дисков в интерактивном режиме, или писать скрипты для автоматической обработки последовательности действий.

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

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

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

guestmount -a '/ПУТЬ/ДО/ВИРТУАЛЬНОГО/ДИСКА' -i --ro /ТОЧКА/МОНТИРОВАНИЯ

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

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

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

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

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

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

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

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

mkdir /tmp/guest

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

guestmount -a '/mnt/disk_d/Виртуальные машины/Windows Server 2019.vdi' -i --ro /tmp/guest

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

ls -l /tmp/guest

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

ls -l /tmp/guest/Users/Администратор/Downloads/

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

guestunmount /ТОЧКА/МОНТИРОВАНИЯ

Например:

guestunmount /tmp/guest

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

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

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

virt-win-reg '/ПУТЬ/ДО/ВИРТУАЛЬНОГО/ДИСКА' 'ИМЯ\КУСТА'

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

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

virt-win-reg '/mnt/disk_d/Виртуальные машины/Windows 10 (en).vdi' 'HKEY_LOCAL_MACHINE\SYSTEM' > SYSTEM.reg

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

virt-win-reg '/mnt/disk_d/Виртуальные машины/Windows Server 2019.vdi' 'HKEY_LOCAL_MACHINE\SAM' > SAM.reg

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

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

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

virt-df '/ПУТЬ/ДО/ВИРТУАЛЬНОГО/ДИСКА'

Пример команды:

virt-df '/mnt/disk_d/Виртуальные машины/Linux LMDE.vdi'

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

Файловая система     Блоки 1К Использовано Доступно Использование, %
Linux LMDE.vdi:/dev/sda1                292272       5220     287052    2%
Linux LMDE.vdi:/dev/sda3              96241020    6280016   85029116    7%

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

virt-df '/mnt/disk_d/Виртуальные машины/Windows 10 (en).vdi'

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

Файловая система     Блоки 1К Использовано Доступно Использование, %
Windows 10 (en).vdi:/dev/sda1           541692     436548     105144   81%
Windows 10 (en).vdi:/dev/sda2            97280      27139      70141   28%
Windows 10 (en).vdi:/dev/sda4        156624892   26634932  129989960   18% 

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

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

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

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

virt-inspector -a '/ПУТЬ/ДО/ВИРТУАЛЬНОГО/ДИСКА'

Примеры команд:

virt-inspector -a '/mnt/disk_d/Виртуальные машины/Windows 10 (en).vdi'
virt-inspector -a '/mnt/disk_d/Виртуальные машины/Linux LMDE.vdi'

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

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

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

virt-ls -a '/ПУТЬ/ДО/ВИРТУАЛЬНОГО/ДИСКА' '/ПАПКА'

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

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

virt-ls -a '/mnt/disk_d/Виртуальные машины/Windows 10 (en).vdi' '/'

Пример вывода:

$Recycle.Bin
$WinREAgent
Documents and Settings
DumpStack.log.tmp
PerfLogs
Program Files
Program Files (x86)
ProgramData
Recovery
System Volume Information
Users
Windows
pagefile.sys
swapfile.sys

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

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

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

virt-cat -a '/ПУТЬ/ДО/ВИРТУАЛЬНОГО/ДИСКА' '/ПАПКА/ФАЙЛ'

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

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

virt-cat -a '/mnt/disk_d/Виртуальные машины/Windows 10 (en).vdi' '/DumpStack.log.tmp'

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

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

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

virt-filesystems -a '/ПУТЬ/ДО/ВИРТУАЛЬНОГО/ДИСКА'

Пример команды и вывода для Windows:

virt-filesystems -a '/mnt/disk_d/Виртуальные машины/Windows 10 (en).vdi'
/dev/sda1
/dev/sda2
/dev/sda4

Пример команды и вывода для Linux:

virt-filesystems -a '/mnt/disk_d/Виртуальные машины/Linux LMDE.vdi' 
/dev/sda1
/dev/sda3

Смотрите также «Всё о монтировании: от системного администрирования до IT криминалистики».

Рекомендуемые статьи:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *