KVM-Proxmox
Поднятие и настройка KVM
(пошаговый мануал и справочная информация)
Проверяем поддержку виртуализваии процессора (>0 - OK):
egrep -c '(vmx|svm)' /proc/cpuinfo
Установка для Debian 9:
sudo apt-get update
apt-get install qemu-kvm libvirt-clients libvirt-daemon-system virtinst bridge-utils
Проверка после установки:
smod | grep kvm
virsh sysinfo
Далее желательно, чтобы KVM и libvirt запускались не от пользователя root, а от например virt . Также необходимо определить место хранилица данных и машин, например /var/data/virt.
mkdir -m 700 /var/data/virt
useradd -m -d /var/data/virt -s /bin/bash virt
passwd virt
adduser virt kvm
iface lo inet loopback
allow-hotplug eno1
iface eno1 inet dhcp
iface lo inet loopback
auto kvmbr0
allow-hotplug kvmbr0
iface kvmbr0 inet dhcp
bridge_ports eno1
auto eno1
iface eno1 inet manual
# interfaces(5) file used by ifup(8) and ifdown(8) auto lo iface lo inet loopback #Bridge Name # auto br1 # Bridge Information # iface br1 inet static bridge_ports eth1 eth0 bridge_stp off bridge_fd 9 # Bride IP # address 192.168.12.7 netmask 255.255.255.0 network 192.168.12.0 broadcast 192.168.12.255 gateway 192.168.12.2 dns-nameservers 192.168.12.2 dns-nameservers 8.8.8.8
Создать виртуальные сети:
<network> <name>default> <uuid>08bc57ca-6bcb-42fa-9841-5f8fc61981b7> <bridge name='virbr0' stp='on' delay='0'/> <mac address='52:54:00:02:d0:4e'/> <domain name='default'/> <ip address='192.168.100.1' netmask='255.255.255.0'> <dhcp> <range start='192.168.100.128' end='192.168.100.254'/> > > >
<network> <name>default> <uuid>08bc57ca-6bcb-42fa-9841-5f8fc61981b7> <bridge name='virbr0' stp='on' delay='0'/> <mac address='52:54:00:02:d0:4e'/> <domain name='default'/> <ip address='192.168.100.1' netmask='255.255.255.0'> <dhcp> <range start='192.168.100.128' end='192.168.100.254'/> > > >
Полезные команды перед использованием.
virsh net-list
Просмотр информации о конкретной сети (с именем nat):
virsh net-info nat
Создание виртуалки с 1 CPU, 1 Гб RAM и 15 Гб места на диске, подключенную к nat:
--virt-type=kvm \
--name xub18 \
--ram 1024 \
--vcpus=1 \
--hvm \
--cdrom=/var/data/virt/xubuntu-18.04.2-desktop-i386.iso \
--network network=nat,model=virtio \
--graphics vnc \
--disk path=/var/data/virt/ubunt18.qcow2,size=15,bus=virtio
Остальные полезные комманды:
virsh list --all
Получение информации о конкретной виртуалке:
virsh dominfo ubunt18
Запустить виртуалку:
virsh start ubunt18
Остановить виртуалку:
virsh shutdown ubunt18
Принудительно остановить виртуалку:
virsh destroy ubunt18
Ребутнуть виртуалку:
sudo virsh reboot ubunt18
Склонировать виртуалку:
virt-clone -o ubunt18-n ubunt18-clone --file /var/data/virt/images/ubunt18-clone.img
Включить/выключить автозапуск:
virsh autostart ubunt18
virsh autostart --disable ubunt18
Запуск virsh в диалоговом режиме:
virsh
Редактирование свойств виртуалки в XML, в том числе здесь можно изменить ограничение на количество памяти и тд:
virsh edit ubunt18
virsh net-start nat
service libvirt-bin restart
Сравнительная таблица совместимости форматов жестких дисков для разных виртуализаций.
VMDK | VDI |
QCOW/2 |
VHDX | VHD | QED | hdd | RAW | VPC | |
XEN | + | + | |||||||
KVM | + | + | + | + | + | + | |||
VirtulaBox | + | + | + | + | + | + | + | + | |
Hyper-V | + | + |
Подключение к KVM с помощью VirtManager
Данный набор инструментов позволит визуализировать весь commandline процесс создания и обслуживания виртуалок.
sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils
Проще всего использовать подключение по SSH.
Сначала настраиваем авторизацию по ключам.
На клиентской машине, с которой мы будем рулить удаленным сервером KVM запускаем:
ssh-keygen -t rsa
Место сохранения ключей оставляем по-умолчанию, ключевую фразу оставляем пустой.
Затем копируем соотвествующую часть ключа на удаленный хост:
ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote_host
Тут user - имя пользователя на удаленной машине. Если имя локального пользователя и имя на удаленной машине совпадают - user@ можно не писать.
Проверяем, что все получилось - коннектимся:
ssh user@remote_host
Если имя локального пользователя и имя на удаленной машине совпадают - user@ можно не писать.
Дальше переходим к настройке хоста KVM.
Сначала - отключаем подключения TLS. Для этого в файле /etc/libvirt/libvirtd.conf раскомментируем строку:
#listen_tls = 0
Затем - добавляем пользователя в группу libvirtd, которая имеет права на подключение к соответствующему сокету:
sudo usermod -a -G libvirtd username
Собственно все.
В virt-manager создаем новое подключение. Жмакаем Connect to remote host.
Method - SSH.
Username - имя пользователя на удаленной машине.
Hostname - адрес удаленного компа
Особенности установки Windows на KVM
Требуется скачать
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win.iso
Создание win7
virt-install \ --name windows_7 \ --ram=1024 \ --vcpus=1 \ --os-type windows \ --os-variant win7 \ --disk path=/var/data/virt/windows_7.wmdk,size=15,bus=sata \ --network network=nat,model=rtl8139 \ --graphics vnc,password=XXX\ --disk device=cdrom,path=/var/data/virt/windows7.iso \ --disk device=cdrom,path=/var/data/virt/virtio-win.iso \ --boot cdrom,hd
УСТАНОВКА PROXMOX
1. Установка
Debian 9
echo deb http://download.proxmox.com/debian/pve buster pve-no-subscription | sudo tee /etc/apt/sources.list.d/proxmox.list
sudo wget http://download.proxmox.com/debian/proxmox-ve-release-6.x.gpg -O /etc/apt/trusted.gpg.d/proxmox-ve-release-6.x.gpg
apt -y update
sudo apt -y install proxmox-ve mc sudo ifupdown2
sudo reboot
Debian 11
# wget https://enterprise.proxmox.com/debian/proxmox-release-bullseye.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg # chmod +r /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg # optional, if you have a non-default umask
# echo "deb http://download.proxmox.com/debian/pve bullseye pve-no-subscription" | sudo tee /etc/apt /sources.list.d/pve-install-repo.list
# sudo apt update && sudo apt dist-upgrade
# echo "deb http://download.proxmox.com/debian/ceph-octopus bullseye main" | sudo tee /etc/apt/sources.list.d/ceph.list
# sudo apt install proxmox-ve postfix open-iscsi
# sudo reboot
2. Сеть
Создать бридж public интерфейса, чтобы можно было VLAN делать
Создать bond c LACP на двух интерфесов для кластерной сети (по необходимости)
3. Добавить/Создать кластер
4. Ceph
На добавляемых нодах CEPH сконфигурируется сам после установки.
Создать монитор, менеджер, OSD
Кластер:
Показать ноды
# pvecm nodes
Удалить ноду
# pvecm delnode irena
CEPH
Список пулов
# ceph osd pool ls
Список содержимого пула
# rbd list pool-name
# ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 2.96349 root default
-9 1.08769 host deneb
3 hdd 1.08769 osd.3 up 1.00000 1.00000
-5 0.90860 host intan
1 hdd 0.90860 osd.1 up 1.00000 1.00000
-7 0.05859 host irena
2 hdd 0.05859 osd.2 up 1.00000 1.00000
-3 0.90860 host zaurak
0 hdd 0.90860 osd.0 up 1.00000 1.00000
Удаление узла из ceph:
Выгрузить crashmap
# ceph osd getcrushmap -o /tmp/crushmap
# crushtool -d /tmp/crushmap -o crush_map
Откредактировать карту, удалив упавшие узлы
Загрузить обратно:
# crushtool -c crush_map -o /tmp/crushmap
# ceph osd setcrushmap -i /tmp/crushmap
Удалить osd:
# ceph osd tree
...
2 0 osd.2 down 0 1.00000
...
# ceph osd rm 2
Удаление Ceph:
rm -rf /etc/systemd/system/ceph*
killall -9 ceph-mon ceph-mgr ceph-mds
rm -rf /var/lib/ceph/mon/ /var/lib/ceph/mgr/ /var/lib/ceph/mds/
pveceph purge
apt purge ceph-mon ceph-osd ceph-mgr ceph-mds
rm /etc/init.d/ceph
for i in $(apt search ceph | grep installed | awk -F/ '{print $1}'); do apt reinstall $i; done
dpkg-reconfigure ceph-base
dpkg-reconfigure ceph-mds
dpkg-reconfigure ceph-common
dpkg-reconfigure ceph-fuse
for i in $(apt search ceph | grep installed | awk -F/ '{print $1}'); do apt reinstall $i; done
pveceph install
Миграция, например, из Hyper-V в ProxMox:
Ceph умеет держать виртуальные диски в RAW формате, поэтому требуются следуюзие действия.
Создать на сетевом разделе, также доступном в ProxMox экспорт виртуального диска с помощью StarWindConverter
Создать виртуалку в ProxMox с теме же параметрами (SATA/IDE).
Созданное имя диска, например, vm-111-disk-0
Удалить диск:
# rbd -p f3pool remove vm-111-disk-0
Импортировать виртуального диска в Ceph из qcow2 (обязательно в 2 прохода, иначе получается больгой объем)
# qemu-img convert -f qcow2 -O raw /mnt/pve/shd32/images/_tmp/vm-111-disk-0.qcow2 /home/user/data/vm-111-disk-0.raw
# rbd --dest-pool f3pool --image-format 2 import /home/user/data/vm-111-disk-0.raw vm-111-disk-0
CLI help:
Список машин>cat /etc/pve/.vmlist
Остановка машины
>qm stop 103 force
stop for VM 103
При удалении OSD диск не "освобождается"
Помогаетlsblk
-> дает длинный идентификатор, начинающийся с "ceph-"dmsetup remove <ID beginning with "ceph">
lisolog (C) / 2021