Proxmox. Часть 3. Запуск первой виртуальной машины

В первой статье мы установили Proxmox. Во второй статье сделали первые настройки системы. На очереди следующая часть цикла статей про Proxmox, в которой мы займемся своим первым запуском своей первой виртуальной машины!

Создать виртуальную машину можно при помощи интерфейса Proxmox. Мы же пойдем немного иным путем — https://pve.proxmox.com/wiki/Cloud-Init_Support.

Сloud-init — это программа для инициализации экземпляра виртуальной машины. С помощью Cloud-init возможна настройка сетевых устройств и SSH ключей на стороне гипервизора. Установка необходимого ПО, создание директорий и пользователей, и многое другое.

В нашем примере мы будем использовать Cloud-init локально.

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

Найдем образ сервера Ubuntu Server 24.04 LTS (Noble Numbat) по адресу https://cloud-images.ubuntu.com/:

Ubuntu Server 24.04 LTS (Noble Numbat)
current

Выбираем noble-server-cloudimg-amd64.img (2024-11-28 08:55  580M  QCow2 UEFI/GPT Bootable disk image):

И скачиваем образ операционной системы при помощи wget:

wget https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img

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

qm create 9000 --memory 2048 --net0 virtio,bridge=vmbr0 --scsihw virtio-scsi-pci

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

Добавляем в уже существующую виртуальную машину диск:

qm set 9000 --scsi0 local-lvm:0,import-from=/root/noble-server-cloudimg-amd64.img

Для работы Cloud init нужно добавить специальный диск, на котором будут храниться конфигурационные файлы Cloud init:

qm set 9000 --ide2 local-lvm:cloudinit

Установим порядок загрузки. Выбираем наш диск, который мы добавляли шаг назад:

qm set 9000 --boot order=scsi0

Для подключения и работы через последовательный порт добавим его:

qm set 9000 --serial0 socket --vga serial0

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

Уменьшим количество выделяемой оперативной памяти до 1024 МБ:

Увеличим объем диска до 15 ГБ:

Для этого к нашим 3.5 ГБ (3584 МБ) добавим еще 11.5 ГБ, чтобы в итоге получилось 15 ГБ:

Если вы используете ssd накопитель, хорошей практикой является включение опций Discard (Discard используется для освобождения места на вашем физическом хранилище, например, вы удаляете файл внутри гостевой виртуальной машины. Без discard, когда вы удаляете файл, пространство на физическом хранилище все еще используется, поэтому вы не можете использовать его в другой виртуальной машине. SSD работают тем лучше, чем больше у них свободного места) и SSD emulation в настройках Hard Disk:

В cloud-init зададим настройки:

  1. User – ubuntu
  2. Password – nickcode
  3. Upgrade packages – отключим, чтобы система при первом запуске автоматически не обновилась

В IP Config зададим IP адрес 10.10.10.2/24:

DNS сервер установим 8.8.8.8:

В опциях выберем тип ОС – Linux:

Там же в опциях включим QEMU Agent для лучшего взаимодействия с виртуальной машиной:

Запускаем виртуальную машину:

И откроем консоль

Дожидаемся установки:

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

Обновим систему:

sudo apt update && sudo apt update

Установим QEMU Guest Agent:

sudo apt install qemu-guest-agent

После установки перезагружаем виртуальную машину:

sudo reboot

После перезагрузки убедимся, что QEMU Guest Agent установился успешно:

В пункте меню Summary в блоке IPs появился ip адрес машины.

Qemu-guest-agent – это вспомогательный демон, который устанавливается в гостевой система и используется для обмена информацией между хостом и гостем.

Какие проблемы решает Qemu-guest-agent в Proxmox:

  1. Корректное завершение работы гостевой операционной системы;
  2. “Заморозка” файловой системы при создании резервной копии/снимка;
  3. Возобновление системы после “заморозки”;
  4. Получение информации о состоянии сети гостевой машины;

Попробуем выключить виртуальную машину:

Если машина выключилась, то QEMU Guest Agent установился корректно.

До данного момента интернет в виртуальной машине был благодаря сети NAT, давайте заменим сетевой адаптер на сетевой мост.

Вернемся в файл /etc/network/interfaces:

Закомментируем gateway у интерфейса enp0s3, раскомментируем наш сетевой мост vmbr0 и переименуем сеть NAT с vmbr0 на vmbr1:

Сохраняем файл и перезагружаем сетевую службу:

systemctl restart networking.service

Включим DHCP для нашей виртуальной машины:

Запустим виртуальную машину 9000.

После запуска выполним команду ip a и убедимся, что виртуальная машина динамически получила ip адрес:

ip a

DHCP работает!

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