Proxmox 3.1: нюансы установки из «коробки»

Системе виртуализации «Proxmox» на Хабре посвещено несколько постов, и, конечно, прежде, чем писать этот пост мне довелось их изучить для собственного эксперимента. Мое исследование сводилось к установке Proxmox 3.1 на «голое железо», его настройке и переносе существующих виртуальных машин с VMWare на новую систему. Установка ОС производилась, как следует из названия поста, с дистрибутива Proxmox 3.1, «как есть». В процессе инсталляции, настройки и импорта виртуальных машин возникли интересные моменты, с которыми я и хотел бы поделиться с сообществом.

Момент первый: Установка системы и сообщение «GRUB LOADING...»

После инсталляции ОС с диска происходит перезагрузка и первый пуск Proxmox, в этот момент выводится сообщение «GRUB LOADING..» и запуск замирает.
Проблема «GRUB LOADING..» связана с 2-мя факторами, которые следует учесть при инсталляции proxmox:
  1. жесткий диск, на который производится установка ос, при запуске должен быть всегда первым (к сожалению, соответствующая установка опции порядка загрузки в BIOS не дает должного результата, парадокс, но необходимо найти искомый sata0 порт и загружать систему в правильной конфигурации)
  2. привод всегда должен быть подключен (без привода будем наблюдать «GRUB LOADING..», очевидно, устройство привода фигурирует в скриптах запуска)

Момент второй: Настройка сети в контейнере openvz (proxmox) или активация интерфейса типа bridge

После создания в веб интерфейсе контейнера возникает проблема с настройкой сети. При настройке возможно указать ip адрес, однако это будет виртуальный NAT, т.е. доступ в контейнер возможен с vhost, но не из всей сети. Для того чтобы контейнер был доступен из всей сети, необходимо настроить ethernet (eth0). На этапе установки eth0 также можно сконфигурировать, но ip адрес назначен не будет. Причем в самом контейнере eth0 отсутствует (команда ifconfig его не показывает). Вот здесь и возникает проблема: как настроить интерфейс «мост».
Согласно материалам по настройке сетей OpenVZ, необходимо сделать следующее: войти в контейнер («100» — id контейнера)
vzctr enter 100
в системе контейнера определить интерфейс eth0 (без этого шага следующий шаг будет действителен до перезагрузки контейнера)
ifconfig eth0 0
затем сконфигурировать интерфейс eth0
ifconfig eth0 192.168.XXX.XXX netmask 255.255.255.0
ip route add 192.168.XXX.YYY dev eth0
ip route add default via 192.168.XXX.YYY

или на постоянно внести в /etc/network/interfaces
auto eth0
iface eth0 inet static
		address 192.168.XXX.XXX
		netmask 255.255.255.0
		gateway 192.168.XXX.YYY

Момент третий: Импорт виртуальных машин VMWare в KVM Proxmox

  1. Импорт freebsd.vmdk
    Перед импортом существующей виртуальной машины VMWare с FreeBSD необходимо создать ее прототип на Proxmox KVM с теми же самыми параметрами, выбрав формат диска «vmdk», тип IDE. После создания прототипа копируем диск «freebsd.vmdk» в /var/lib/vz/images/id/, переименовываем его (присваивая имя созданного диска) и запускаем виртуальную машину. Если загрузка заканчивается поиском корневого раздела, то в привод машины загружаем диск frenzy и повторяем запуск с live-cd в режиме hdrw (запись на диск). Смотрим смонтированные слайсы df -h, находим маркировку диска (ad или da), редактируем файл /etc/fstab, меняя маркировку диска на полученную в предыдущей команде. После удачной загрузки ОС нужно будет отредактировать и сетевой интерфейс.
  2. Импорт windows.vmdk
    Необходимо предварительно загрузить импортируемую виртуальную машину VMWare на родном ПО, затем в загруженной машине добавить в реестр информацию о драйверах IDE ссылка, скопировать pciide.sys в %SystemRoot%System32/Drivers. Деинсталлировать из виртуальной системы VMWare Tools, отключить виртуальную машину и скопировать файл виртуального диска vmdk в Proxmox (KVM). Загрузить виртуальную систему с импортированным диском (тип IDE).

Момент четвертый: Сжатие виртуальных дисков формата VMDK в Proxmox

Процедура сжатия для дисков vmdk, на мой взгляд, очень важна, т.к. объем физического диска всегда ограничен.
  1. Сжатие WINDOWS.vmdk
    Сжатие виртуальных дисков связано с эффектом «раздувания» файла vmdk (увеличение размера файла) при работе гостевой виртуальной системы. Для сжатия виртуального диска формата VMDK с ОС MS Windows можно воспользоваться парой утилит от VMWare: vmware-mount и vmware-vmdiskmanager — в составе пакета VDDK, можно скачать с оф. сайта. Т.к. Proxmox работает на Debian, то скачиваем linux64 архив и устанавливаем:
    tar -xzf VMware-vix-disklib-5.1.0-774844.x86_64.tar.gz
    cd ./vmware-vix-disklib-distrib
    ./vmware-install.pl
    После установки необходимо добавить строку в /etc/ld.so.conf:
    /usr/lib/vmware-vix-disklib/lib64

    Далее утилиты готовы к работе с дисками. Выключаем гостевую виртуальную систему, диск которой будет подвержен сжатию. Процедура сжатия vmdk-диска состоит из трех фаз:
    • дефрагментация диска vmdk
      vmware-vdiskmanager -d /path/to/name.vmdk
    • подготовка к сжатию диска
      vmware-mount /path/to/name.vmdk /mnt/vmdk/
      если на этапе монтирования возникает ошибка о неизвестной файловой системе NTFS, необходимо загрузить поддержку данной системы в Debian:
      apt-get install ntfs-3g
      vmware-vdiskmanager -p /mnt/vmdk/
    • сжатие диска
      vmware-mount -x # отмонтирование vmdk носителя
      losetup -d /dev/loop0 # в случае ошибки при выполнении первой команды: "device is busy"
      vmware-mount -x # и повтор команды
      vmware-vdiskmanager -k /path/to/name.vmdk # команда сжатия диска

    Эффект сжатия диска vmdk — до истинного размера диска в гостевой виртуальной системе.
  2. Сжатие FREEBSD.vmdk
    Для сжатия виртуального диска с ОС FREEBSD указанные выше утилиты не подойдут, т.к. возникает проблема монтирования vmdk-диска в хостовую систему: Debian не знает файловой системы UFS. Однако, выход существует, можно воспользоваться встроенными возможностями FreeBSD: создать дампы файловой системы исходной гостевой ОС и восстановить их на вновь созданный виртуальный диск, а затем поменять диски — процедура переноса freeBSD на новый hdd.

Момент пятый: Восстановление виртуальной гостевой системы в Proxmox через консоль

Процедура восстановления виртуальной гостевой системы в Proxmox посредством веб-интерфейса хорошо знакома, однако, как это происходит в консоли не понятно. Гостевые системы (речь о KVM) бэкапятся в файл vzdump-qemu-id-date-time.vma.gz. Это архив предварительно упакованного виртуального диска и файла конфигурации гостевой ОС.
Логично сначала достать файл .vma:
gzip -d vzdump-qemu-103-date-time.vma.gz
где 103 — номер гостевой системы в Proxmox
Далее необходимо распокавать файл vzdump-qemu-103-date-time.vma. Для этого в Proxmox 3.1 существует специальная утилита vma
vma extract vzdump-qemu-103-date-time.vma /var/103
Примечание: команда сработает без ошибок, если в каталоге /var не создавать предварительно каталог «103». В итоге в /var/103/ будет пара файлов:
vm-103-disk-1.raw
qemu-server.conf
Примечание: если мы восстанавливали гостевую систему с диском vmdk, то восстановленный диск будет в формате «raw». Исправить это можно, осуществив конвертирование в нужный формат:
qemu-img -f raw -O vmdk vm-103-disk-1.raw vm-103-disk-1.vmdk

Момент шестой: Правильное выключение гостевой Windows на Proxmox (KVM)

«Правильное выключение ОС» для гостевых систем Proxmox (KVM) означает имитация события «нажатия кнопки выключения системы на физической машине». Такое отключение срабатывает корректно в unix-системах. Это достигается командой в QEMU:
qm shutdown 103
Однако, в гостевых Windows системах в фоне команда возвращает ошибку и система не выключается. Отключение происходит «правильно» только в случае успешного входа в систему, либо «принудительно» (событие «отключение кабеля питания») — другой командой (qm stop 103). Исправить данную ситуацию возможно, скорректировав локальную политику гостевой Windows ОС:
Пуск — Панель управления — Администрирование — Локальная политика безопасности — Параметры безопасности — Локальные политики — Параметры безопасности — Завершение работы: разрешить завершение работы системы без выполнения входа в систему («Включить»)

Похожие публикации

Средняя зарплата в IT

111 000 ₽/мес.
Средняя зарплата по всем IT-специализациям на основании 7 000 анкет, за 2-ое пол. 2020 года Узнать свою зарплату
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 18

      +1
      Упустил, спасибо
      0
      Скажите а Proxmox из коробки уже умеет ставится на программный RAID?
        +1
        Увы, нет. При начальной установке предлагается выбор физического диска, а после его разметка и создание LVM томов в пределах этого диска.
          0
          В сети есть руководства как потом переделать на software RAID. Там не сложно.
          +1
          Вариант миграции в программный рейд habrahabr.ru/post/186818/
            0
            Спасибо вам за полезный материал
            0
            У меня он на soft raid и стоит. Единственно, при первоначальной установке пришлось конфиг слегка поправить.
            0
            Никак не могу победить известную проблему: гостевой MS SQL постоянно жрёт CPU как не в себя. Что 2005й, что 2012й. Никакие сервис паки, патчи реестра не помогают.
              0
              странно, у меня их целая ферма на RHEV уже 4 года бегают без проблем
                0
                Да не, они работают, но очень много потребляют CPU даже при холостом ходе.
                Вот общеизвестная проблема — таймер в mssql генерит слишком много прерываний.
                К сожалению меня даже флаг T8038 не спасает.
                Думал, может кто решал такую беду.
                  0
                  А если прочитать тред до конца и таки отключить балун-драйвер.
                  Вопрос закрыт, спасибо!
                    0
                    О каком треде идёт речь?
                    И что, отключение балун-драйвера помогает снизить количество прерываний на процессор гостевой ОС?
              +1
              Со временем архивы образов виртуальных систем начинают увеличиваться в размере, так как заполнение нулями незанятого (удаляемого) пространства штатно не делает ни одна ОСь.
              Гуру Proxmox поделитесь кто и как делает зануление!?
              Я лично пока использую в гостевых линуксах
              sudo sfill -v -f -l -z /
              в гостевых виндах
              sdelete -z C:

              Но опасаюсь sfill делать на своём сервере баз данных, из-за схемы работы sfill — раздувании огромного занулённого файла. Боюсь реагирования служб на нехватку места.
              Оправданы ли страхи?
                0
                заполнить нулями диск все равно придется, если конечно не переходить на ФС с дедупликацией. после забивания нулями, qemu-img convert из qcow2 в qcow2 вырежет нули.
                я, кстати, просто забиваю файл нулями из dd и стираю файл
                0
                оф.документация оказавшаяся полезной при таком же переезде
                Migration_of_servers_to_Proxmox_VE
                Windows_2003_guest_best_practices
                Windows_VirtIO_Drivers
                FreeBSD_Guest_Note
                Очень вменяемое howto (на мой взгляд)
                RAID на PROXMOX 2.x — Man вики
                  0
                  А что 3.1? Вроде уже неделю как все на 3.2 переехали?
                    0
                    Никаких проблем с настройкой сети нет. Просто сделайте sysctl -p net.ipv4.ip_forward=1

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                    Самое читаемое