Управление kvm из командной строки

Обновлено: 21.11.2024

Существуют разные способы управления виртуальными машинами (ВМ), работающими на гипервизоре KVM. Например, virt-manager — популярный графический интерфейс для управления виртуальными машинами. Однако, если вы хотите использовать KVM на безголовом сервере, решения на основе графического интерфейса не будут идеальными. Фактически, вы можете создавать виртуальные машины KVM и управлять ими исключительно из командной строки, используя скрипт-оболочку командной строки kvm. В качестве альтернативы вы можете использовать virsh, который является более простым в использовании пользовательским интерфейсом командной строки для управления гостевыми виртуальными машинами. Под virsh он взаимодействует со службой libvirtd, которая может управлять несколькими различными гипервизорами, включая KVM, Xen, QEMU, LXC и OpenVZ.

Интерфейс управления из командной строки, такой как virsh, также полезен, когда вы хотите автоматизировать выделение виртуальных машин и управление ими. Кроме того, тот факт, что virsh поддерживает несколько гипервизоров, означает, что вы можете управлять разными гипервизорами через один и тот же интерфейс virsh.

В этом руководстве я покажу, как запустить KVM из командной строки с помощью virsh в Debian или Ubuntu.

Шаг 1. Проверка поддержки аппаратной виртуализации

В качестве первого шага убедитесь, что центральный процессор оснащен аппаратными расширениями виртуализации (например, Intel VT или AMD-V), которые необходимы для KVM. Подойдет следующая команда.

Если выходные данные не содержат флага vmx или svm, это означает, что ЦП хоста не поддерживает аппаратную виртуализацию. Таким образом, вы не можете использовать KVM на хосте. Убедившись, что центральный процессор поставляется с vmx или svm , перейдите к следующей установке KVM.

Для KVM не требуется запускать 64-битное ядро ​​на хосте KVM, но обычно это рекомендуется.

Шаг второй: установите KVM

С помощью apt-get установите KVM и связанные инструменты пользовательского пространства.

Во время установки будет создана группа libvirtd (или libvirt-qemu в Debian), и ваш идентификатор пользователя будет автоматически добавлен в группу. Это позволит вам управлять виртуальными машинами как обычный пользователь без полномочий root. Вы можете проверить это с помощью команды id, которая покажет идентификаторы вашей группы:

Если по какой-либо причине libvirtd (или libvirt-qemu ) не найден в вашем списке groupID, вы можете вручную добавить себя в группу следующим образом.

В Ubuntu:

В Debian:

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

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

Шаг третий: настройка сети с мостом

Один из способов разрешить виртуальным машинам KVM доступ к внешним сетям — это мост Linux, созданный на хосте KVM. Мост соединяет виртуальные интерфейсы виртуальных машин с физическим интерфейсом хоста, чтобы виртуальные машины могли отправлять или получать трафик через физический интерфейс. Это называется мостовой сетью.

Вот как создать и настроить мост Linux br0 для мостовой сети с KVM.

Сначала установите необходимый пакет и создайте мост Linux из командной строки.

Следующий шаг — настроить мост Linux в /etc/network/interfaces, чтобы мост настраивался автоматически при загрузке. Чтобы использовать /etc/network/interfaces , вам необходимо отключить Network Manager в вашей системе (если вы его используете).

После отключения Network Manager настройте Linux bridge br0 в /etc/network/interfaces следующим образом.

В вышеприведенном я предполагаю, что eth0 является основным сетевым интерфейсом, подключенным к внешним сетям. Кроме того, я предполагаю, что eth0 получает свой IP-адрес через DHCP. Обратите внимание, что в /etc/network/interfaces нет конфигурации IP для eth0. Мост Linux br0 использует конфигурацию eth0, так как eth0 подчинен мосту br0 .

Перезапустите сетевую службу и убедитесь, что мост Linux успешно настроен. В случае успеха br0 должен быть назначен IP-адрес DHCP eth0, а eth0 не должен иметь никакого назначенного IP-адреса.

Если по какой-либо причине eth0 по-прежнему сохраняет IP-адрес, назначенный br0 , возможно, вам придется явно удалить IP-адрес из eth0 .

Помимо сетевых мостов существует множество других способов соединения виртуальных машин. Другим решением для межсетевого взаимодействия является использование Open vSwitch, которое позволяет определять более гибкие политики переадресации и фильтрации для виртуальных машин. Настройка Open vSwitch выходит за рамки данного руководства.

Шаг четвертый. Создайте виртуальную машину из командной строки

При использовании KVM конфигурация виртуальной машины хранится в XML-файле домена.Таким образом, первым шагом к созданию виртуальной машины является подготовка XML-файла ее домена.

Ниже приведен пример XML-файла домена виртуальной машины. Вы можете настроить его по мере необходимости.

Приведенный выше XML-файл домена определяет следующую виртуальную машину.

  • 1 ГБ памяти, один виртуальный ЦП и один жесткий диск.
  • Образ диска: /home/dev/images/alice.img.
  • Загрузка с компакт-диска ( /home/dev/iso/CentOS-6.5-x86_64-minimal.iso ).
  • Сеть: один сетевой интерфейс подключен к br0.
  • Удаленный доступ через VNC.

Строка UUID внутри может быть сгенерирована случайным образом. Чтобы получить случайный UUID, вы можете использовать инструмент командной строки uuid.

Еще один способ создать XML-файл домена — вывести информацию о домене существующей виртуальной машины следующим образом.

Шаг пятый: Запустите виртуальную машину из командной строки

Перед запуском виртуальной машины необходимо создать ее исходный образ диска. Для этого вы можете использовать команду qemu-img, которая поставляется с установленным вами пакетом qemu-kvm. Следующая команда создает пустой образ диска размером 10 ГБ типа QCOW2:

Преимущество использования QCOW2 (в отличие от RAW ) в качестве формата образа диска заключается в том, что образ диска типа QCOW2 изначально не создается в полном размере (10 ГБ), а увеличивается по мере заполнения диска. Так он более экономичен.

Теперь вы готовы запустить виртуальную машину, используя XML-файл домена, который вы создали ранее. Следующая команда создаст виртуальную машину и автоматически запустит ее.

ПРИМЕЧАНИЕ. Если вы запустите приведенную выше команду с уже созданной виртуальной машиной, она уничтожит виртуальную машину без предупреждения. Если вы уже создали виртуальную машину, вы можете использовать следующую команду, чтобы просто запустить виртуальную машину.

Убедитесь, что новый домен создан и успешно запущен с помощью:

Кроме того, убедитесь, что виртуальный интерфейс для виртуальной машины (например, vnet0 ) успешно добавлен в созданный ранее мост Linux br0.

Шаг шестой: удаленный доступ к виртуальной машине

Для удаленного доступа к консоли работающей ВМ можно использовать любой клиент VNC.

Сначала узнайте номер порта VNC для виртуальной машины следующим образом.

В этом примере номер порта VNC для виртуальной машины Алисы — 5900 .

Затем запустите клиент VNC и подключитесь к серверу VNC, работающему по адресу :5900 . В нашем примере виртуальная машина должна загружаться с компакт-диска CentOS.

Управление виртуальными машинами с помощью virsh

Ниже перечислены распространенные варианты использования команды virsh.

Чтобы создать новый гостевой домен и запустить виртуальную машину:

Чтобы остановить виртуальную машину и уничтожить гостевой домен:

Чтобы выключить виртуальную машину (без разрушения домена):

Чтобы приостановить ВМ:

Чтобы возобновить приостановленную ВМ:

Чтобы получить доступ к консоли входа работающей ВМ:

Чтобы автоматически запускать ВМ при загрузке хоста:

Чтобы получить информацию о домене виртуальной машины:

Чтобы отредактировать XML домена виртуальной машины:

Вышеприведенное вызовет XML-файл домена виртуальной машины с помощью текстового редактора по умолчанию. Любое изменение в XML будет автоматически проверено libvirt на правильность.

Вы также можете управлять виртуальными машинами из сеанса virsh. Чтобы создать и войти в новую сессию virsh, просто запустите:

По запросу virsh вы можете использовать любые команды virsh.

Устранение неполадок

<р>1. Я получаю сообщение об ошибке при попытке создать виртуальную машину:

Эта ошибка может появиться, если ваше оборудование не поддерживает аппаратную виртуализацию (например, Intel VT или AMD-V), которая требуется для запуска KVM. Если вы получаете эту ошибку, даже если ваш ЦП поставляется с Intel VT или AMD-V, вот возможные решения:

Сначала проверьте, отсутствует ли модуль ядра kvm.

Если модуль ядра kvm не загружен, вы должны загрузить его следующим образом.

Второе решение заключается в добавлении аргумента --connect qemu:///system к команде virsh следующим образом. Этот аргумент может понадобиться, если вы используете более одного гипервизора (например, VMware, VirtualBox) на серверном оборудовании.

<р>2. Я получаю сообщение об ошибке при попытке получить доступ к консоли входа в свою виртуальную машину:

Эта ошибка возникает из-за того, что вы не определили консольное устройство в XML-файле виртуальной машины. Добавьте следующее в раздел устройства XML-файла.

Поддержка Xmodulo

Этот веб-сайт стал возможен благодаря минимальной рекламе и вашему любезному пожертвованию через PayPal (кредитная карта) или биткойн ( 1M161JGAkz3oaHNvTiPFjNYkeABox8rb4g ).

В этой четвертой части нашей серии KVM мы обсуждаем управление средой KVM с помощью CLI. Мы используем инструмент virt-install CL для создания и настройки виртуальных машин, инструмент virsh CL для создания и настройки пулов хранения и инструмент qemu-img CL для создания образов дисков и управления ими.

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

Шаг 1. Настройка пула хранения

Инструмент Virsh CLI — это пользовательский интерфейс для управления гостевыми доменами virsh. Программу virsh можно использовать либо для запуска одной команды, указав команду и ее аргументы в командной строке оболочки.

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

<р>1. Используя команду pool-define-as с virsh для определения нового пула хранения, вам также необходимо указать имя, тип и аргументы типа.

В нашем случае имя будет Spool1, тип — dir. По умолчанию вы можете указать пять аргументов для типа:

  1. хост-источник
  2. исходный-путь
  3. исходный код
  4. имя-источника
  5. цель

Для типа (Dir) нам нужен последний аргумент «target», чтобы указать путь к пулу хранения, для других аргументов мы могли бы использовать «-», чтобы не указывать их.

<р>2. Чтобы проверить все пулы хранения в вашей среде, используйте следующую команду.

<р>3. Теперь пришло время создать пул хранения, который мы определили выше с помощью следующей команды.

<р>4. Используйте команду virsh pool-start, чтобы активировать/включить пул хранения, который мы только что создали/построили выше.

<р>5. Проверьте состояние пулов хранения среды с помощью следующей команды.

Вы заметите, что статус Spool1 изменился на активный.

<р>6. Настройте Spool1 для автоматического запуска службы libvirtd каждый раз.

<р>7. Наконец, давайте отобразим информацию о нашем новом пуле хранения.

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

Шаг 2. Настройка томов хранения/образов дисков

Теперь очередь образа диска, используя qemu-img для создания нового образа диска из Spool1. Дополнительные сведения о qemy-img см. на справочной странице.

<р>8. Мы должны указать команду qemu-img «создать, проверить,….и т. д.», формат образа диска, путь к образу диска, который вы хотите создать, и размер.

<р>9. С помощью команды qemu-img можно получить информацию о новом образе диска.

Предупреждение. Никогда не используйте qemu-img для изменения образов, используемых работающей виртуальной машиной или любым другим процессом; это может разрушить изображение.

Пришло время создать виртуальные машины на следующем шаге.

Шаг 3. Создайте виртуальные машины

<р>10. Теперь с последней и последней частью мы создадим виртуальные машины с помощью virt-istal. virt-install — это инструмент командной строки для создания новых виртуальных машин KVM с использованием библиотеки управления гипервизором «libvirt». Для получения более подробной информации об этом используйте:

Чтобы создать новую виртуальную машину KVM, вам нужно использовать следующую команду со всеми подробностями, как показано ниже.

  1. Имя: имя виртуальной машины.
  2. Расположение диска: расположение образа диска.
  3. Графика: как подключиться к виртуальной машине «Обычно SPICE».
  4. vcpu : количество виртуальных процессоров.
  5. ram : объем выделенной памяти в мегабайтах.
  6. Расположение: укажите путь к источнику установки.
  7. Сеть: укажите виртуальную сеть «Обычно это мост vibr00».
<р>11. Вы также увидите всплывающее окно virt-vierwer для связи с виртуальной машиной через него.

Заключение

Это последняя часть нашего руководства по KVM, мы, конечно, еще не все рассмотрели. Это попытка поцарапать среду KVM, так что теперь ваша очередь искать и держать руки грязными, используя эти замечательные ресурсы.

Если вам понравилась эта статья, подпишитесь на уведомления по электронной почте о руководствах по Linux. Если у вас есть вопросы или сомнения? обратитесь за помощью в разделе комментариев.

Если вы цените то, что мы делаем здесь, в TecMint, вам следует подумать о следующем:

TecMint – это самый быстрорастущий и пользующийся наибольшим доверием сайт сообщества, где можно найти любые статьи, руководства и книги по Linux в Интернете. Миллионы людей посещают TecMint! для поиска или просмотра тысяч опубликованных статей, доступных всем БЕСПЛАТНО.

Если вам нравится то, что вы читаете, купите нам кофе (или 2) в знак признательности.

Мы благодарны за вашу бесконечную поддержку.

Похожие сообщения

Есть что сказать? Присоединяйтесь к обсуждению. Отменить ответ

Этот сайт использует Akismet для уменьшения количества спама. Узнайте, как обрабатываются данные ваших комментариев.

Команда virsh предоставляет сотни параметров для управления каждым аспектом ваших виртуальных машин. Это те, которые я использую чаще всего.

Опубликовано: 9 сентября 2021 г. | Рикардо Херарди (Red Hat, Sudoer)

Виртуальная оболочка, или virsh, представляет собой гибкую утилиту командной строки для управления виртуальными машинами (ВМ), управляемую libvirt, которая представляет собой набор инструментов и API для управления платформами виртуализации. Это средство управления по умолчанию для виртуальных машин на базе ядра Linux (KVM), а также оно поддерживает Xen, VMware и другие платформы.

Дополнительные ресурсы по Linux

Команда virsh позволяет управлять виртуальными машинами в интерактивном или пакетном режиме. Это также полезно для управления виртуальными машинами из оболочки Linux и интегрируется со сценариями или инструментами автоматизации. С помощью virsh вы можете быстро подключиться к серверу с помощью безопасной оболочки (SSH) и выполнять операции на своих виртуальных машинах без доступа к графическому интерфейсу.

Когда вы запускаете virsh без каких-либо параметров, он пытается подключиться к локальному гипервизору. Для Linux соединение по умолчанию указывает на локальную систему QEMU для управления локальными машинами KVM. Вы также можете подключиться к удаленному гипервизору, используя параметр -c или --connect и указав универсальный идентификатор ресурса (URI) удаленного гипервизора, используя синтаксис libvirt. Для получения дополнительной информации обратитесь к спецификации URI libvirt.

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

список вирш

virsh list — это базовая команда, которая выводит список всех работающих доменов (ВМ). Вы также можете перечислить все настроенные виртуальные машины, добавив параметр --all. Это полезно, если вы хотите увидеть все виртуальные машины, настроенные в целевом гипервизоре, которые вы можете использовать в последующих командах. Например, чтобы вывести список всех доступных виртуальных машин на локальном гипервизоре Linux KVM:

Вы можете использовать идентификатор или доменное имя в качестве входных данных для последующих команд.

запуск/перезагрузка/выключение virsh

Несмотря на то, что они разные, я сгруппировал подкоманды start , reboot и shutdown , поскольку они выполняют одну и ту же базовую операцию по управлению состоянием питания виртуальной машины.

Вы можете запустить его снова, используя подкоманду start:

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

[ Вам также может быть интересно узнать, как редактировать sshd_config с помощью сценария Bash. ]

вирш дампксмл

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

Вывод XML можно использовать в скриптах и ​​инструментах автоматизации для автоматизации создания виртуальных машин.

вирш домифаддр

Подкоманда domifaddr выводит список всех IP-адресов, настроенных для всех виртуальных интерфейсов данной виртуальной машины. Это полезно, если виртуальная машина использует динамические IP-адреса, так как позволяет увидеть назначенный IP-адрес и подключиться к виртуальной машине:

По умолчанию в нем указан IP-адрес, арендованный DHCP-сервером. Если гипервизор не предоставляет эту информацию, вы также можете использовать параметр --source agent для запроса гостевой операционной системы (ОС) напрямую через агент виртуализации. Для этого в гостевой ОС должен быть установлен агент виртуализации.

виртуальная редакция

Подкоманда edit открывает текущую XML-конфигурацию в $EDITOR по умолчанию, что позволяет вам вносить оперативные изменения в виртуальную машину:

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

virsh net-edit

Подкоманда net-edit позволяет вносить оперативные изменения в конфигурацию виртуальной сети. Это полезно для изменения параметров виртуальной сети, например, для связывания заданного MAC-адреса с IP-адресом с использованием стандартной конфигурации libvirt DHCP. Это более продвинутая команда, которую я использую регулярно. Как и подкоманда редактирования, она открывает файл конфигурации в $EDITOR по умолчанию для внесения изменений. Сохраните файл, чтобы применить изменения:

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

Что дальше?

virsh — это мощная и гибкая утилита, позволяющая управлять всеми аспектами виртуализации Linux и других платформ. Для получения дополнительной информации обратитесь к справочным страницам или просмотрите онлайн-документацию.

В этом руководстве рассказывается, как запускать и останавливать виртуальные машины KVM из командной строки. Поскольку KVM предоставляет Virtual Machine Manager (virt-manager), настольное приложение для управления виртуальными машинами через libvirt, он также предоставляет утилиту командной строки под названием virsh, которая позволяет ориентированным на терминал пользователям управлять виртуальными машинами KVM из интерфейса командной строки.< /p>

Запуск и остановка виртуальных машин KVM из командной строки

Для запуска и остановки виртуальных машин KVM из командной строки можно использовать утилиту virsh.

Согласно справочным страницам ( man virsh );

Программа virsh является основным интерфейсом для управления гостевыми доменами virsh. Программу можно использовать для создания, приостановки и закрытия доменов. Его также можно использовать для списка текущих доменов.

Базовая структура большинства случаев использования вирша такова:

Для получения дополнительной информации см. man virsh.

Запуск виртуальных машин KVM из командной строки

Для начала перечислите доступные виртуальные машины, работающие, остановленные или приостановленные;

Как видите, сейчас у меня три виртуальных машины KVM; один работает и два остановились.

Вы можете запустить виртуальную машину KVM с помощью команды virsh start.Команду virsh start можно использовать для запуска домена либо из последнего состояния управляемого сохранения, либо путем новой загрузки, если состояние управляемого сохранения отсутствует.

Основной синтаксис использования команды virsh start:

Поэтому, если вы хотите запустить виртуальную машину, например Ubuntu20.04-клон, как в моем случае;

При желании вы можете передать и другие параметры.

Теперь ваша виртуальная машина должна быть запущена. Вы можете перечислить только запущенные виртуальные машины с помощью приведенной ниже команды;

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

Также можно остановить виртуальную машину KVM из командной строки с помощью команды virsh shutdown.

Например, чтобы выключить виртуальную машину под названием ubuntu20.04 ;

Вы также можете указать UUID или ID виртуальной машины вместо имени при завершении работы.

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

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

virsh domuuid ubuntu20.04

Аналогичным образом вы можете использовать virsh dominfo для получения других сведений, включая UUID виртуальной машины;

Выключение с использованием UUID;

Вы также можете указать другие параметры питания при выключении виртуальной машины.

На этом наше руководство о том, как запускать и останавливать виртуальные машины KVM из командной строки, заканчивается.

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