Заметки о решаемых задачах АйТишников

Сделал - запиши. Нашёл - сохрани :)

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

Virsh: Управление виртуальными машинами в Linux через командную строку

Virsh: Управление виртуальными машинами в Linux через командную строку

 

 

 

Virsh — это мощная командная утилита для управления виртуальными машинами (ВМ) в системах на базе libvirt, таких как QEMU/KVM. Она позволяет администраторам и разработчикам создавать, запускать, останавливать и настраивать ВМ без графического интерфейса. Virsh особенно полезен для автоматизации задач, работы на серверах без GUI и интеграции в скрипты. В этой статье мы разберём основы работы с virsh, ключевые команды и практические примеры.

Что такое Virsh и зачем он нужен?

Virsh — часть пакета libvirt, который является стандартным интерфейсом для управления виртуализацией в Linux. Он поддерживает гипервизоры вроде QEMU, KVM, Xen и VMware. В отличие от графических менеджеров вроде virt-manager, virsh работает в терминале, что делает его идеальным для:

  • Автоматизации (скрипты, cron-задания).
  • Удалённого управления серверами.
  • Быстрых операций без загрузки GUI.

Virsh можно запускать в интерактивном режиме (sudo virsh) или выполнять команды напрямую (sudo virsh list).

Установка и подготовка

Установка

Virsh входит в пакет libvirt. Установите его:

  • Ubuntu/Debian: sudo apt update && sudo apt install libvirt-clients qemu-kvm
  • CentOS/RHEL/Fedora: sudo dnf install libvirt-client или sudo yum install libvirt-client
  • Arch: sudo pacman -S libvirt

Убедитесь, что служба libvirtd запущена: sudo systemctl start libvirtd && sudo systemctl enable libvirtd.

Запуск

  • Интерактивный режим: sudo virsh (введите команды, выход — quit).
  • Однократная команда: sudo virsh <команда>.

Все команды требуют прав root или пользователя в группе libvirt.

Основные команды Virsh

Разделим команды по категориям для удобства.

Управление виртуальными машинами

  • list — Показать список ВМ.
    virsh list (активные ВМ), virsh list --all (все, включая остановленные), virsh list --autostart (с автозапуском).
  • start — Запустить ВМ.
    virsh start <имя_ВМ>
  • shutdown — Мягко выключить ВМ.
    virsh shutdown <имя_ВМ>
  • destroy — Принудительно остановить ВМ.
    virsh destroy <имя_ВМ> (аналог "выдергивания шнура").
  • suspend/resume — Приостановить/возобновить.
    virsh suspend <имя_ВМ>, virsh resume <имя_ВМ>
  • reboot — Перезагрузить.
    virsh reboot <имя_ВМ>
  • autostart — Включить/отключить автозапуск при старте сервера.
    virsh autostart <имя_ВМ>, virsh autostart <имя_ВМ> --disable

Конфигурация и информация

  • dominfo — Подробная информация о ВМ (UUID, состояние, память).
    virsh dominfo <имя_ВМ>
  • dumpxml — Экспортировать конфигурацию ВМ в XML.
    virsh dumpxml <имя_ВМ> > vm_config.xml
  • define — Загрузить ВМ из XML-файла.
    virsh define vm_config.xml
  • undefine — Удалить ВМ (без удаления дисков).
    virsh undefine <имя_ВМ>
  • edit — Редактировать XML-конфигурацию в текстовом редакторе.
    virsh edit <имя_ВМ> (откроется редактор, например, nano).

Сети и хранилища

  • net-list — Список виртуальных сетей.
    virsh net-list --all
  • net-start/net-destroy — Запустить/остановить сеть.
    virsh net-start <имя_сети>, virsh net-destroy <имя_сети>
  • pool-list — Список пулов хранения.
    virsh pool-list --all
  • pool-start/pool-destroy — Управление пулами.
    virsh pool-start <имя_пула>

Подключение и консоль

  • console — Подключиться к консоли ВМ.
    virsh console <имя_ВМ> (выход — Ctrl+]).
  • attach-device/detach-device — Подключить/отключить устройство (например, USB).
    virsh attach-device <имя_ВМ> device.xml

Другие команды

  • help — Справка по команде.
    virsh help <команда>
  • version — Версия libvirt.
    virsh version
  • nodeinfo — Информация о хост-системе.
    virsh nodeinfo

Практические примеры

1. Запуск и управление ВМ

# Проверить все ВМ
sudo virsh list --all

# Запустить ВМ
sudo virsh start my-vm

# Подключиться к консоли
sudo virsh console my-vm

# Выключить и включить автозапуск
sudo virsh shutdown my-vm
sudo virsh autostart my-vm

2. Работа с конфигурацией

# Экспортировать конфиг
sudo virsh dumpxml my-vm > my-vm.xml

# Изменить конфиг (добавить RAM)
sudo virsh edit my-vm  # В редакторе найти <memory> и изменить

# Перезагрузить конфиг
sudo virsh define my-vm.xml

3. Автоматизация

Для скриптов используй virsh в bash:

#!/bin/bash
VM_NAME="my-vm"
if sudo virsh list --name | grep -q "$VM_NAME"; then
    echo "ВМ $VM_NAME уже запущена"
else
    sudo virsh start "$VM_NAME"
fi

Советы и troubleshooting

  • Права доступа: Добавь пользователя в группу libvirt: sudo usermod -aG libvirt $USER, затем перезайди.
  • Логи: Смотри логи libvirtd: sudo journalctl -u libvirtd.
  • Ошибки: Если ВМ не запускается, проверь virsh dominfo <имя_ВМ> на ошибки.
  • Безопасность: Virsh требует root, но для скриптов используй sudo с NOPASSWD в /etc/sudoers.
  • Альтернативы: Для GUI — virt-manager; для продвинутого управления — Ansible с модулем libvirt.

Virsh — незаменимый инструмент для серьёзной работы с виртуализацией. Он прост в освоении и гибок. Если вы новичок, начните с virsh help и экспериментируйте на тестовой ВМ. Для углубления читайте документацию libvirt на официальном сайте.

 

10 сентября 2025, 15:16    Александр Linux 0    0 0

 

 

 

 



Комментарии ()

    Вы должны авторизоваться, чтобы оставлять комментарии.