Подробный гайд по ядру kernel-std-kvm в ALT Linux
kernel-std-kvm (в репозиториях ALT Linux пакет называется kernel-image-std-kvm) — это специализированная сборка ядра Linux, оптимизированная для использования в качестве хоста виртуализации KVM.
В отличие от универсальных ядер (std-def, un-def), вариант std-kvm:
- Включает все необходимые модули для KVM/QEMU из коробки
- Отключает неиспользуемые на серверах драйверы (экономит память и ускоряет загрузку)
- Включает конфигурационные флаги для производительности виртуализации (
CONFIG_KVM,CONFIG_VIRTIO,CONFIG_HUGETLBFS,CONFIG_X86_AMD_MEM_ENCRYPTи др.) - Оптимизирован под работу с
libvirt,qemu-kvm,virtio-устройствами и IOMMU
Важно:
В ALT Linux семейства пакетов имеют префикс kernel-image-. Полный пакет для установки: kernel-image-std-kvm.
1. Подготовка системы
Требования
- Процессор с поддержкой аппаратной виртуализации:
Intel VT-xилиAMD-V - Включённая виртуализация в BIOS/UEFI (
Intel Virtualization Technology,SVM Mode) - Включённый
VT-d/AMD IOMMU(если планируется проброс PCIe-устройств) - Root-доступ или
sudo - Подключённые репозитории ветки (
p10,p11илиSisyphus)
Проверка поддержки виртуализации
# Проверка флагов CPU
grep -E 'vmx|svm' /proc/cpuinfo
# Или одной командой
lscpu | grep -i virtualization
vmx→ Intelsvm→ AMD- Если вывод пустой → виртуализация отключена в BIOS.
Обновление системы
sudo apt-get update
sudo apt-get dist-upgrade -y
2. Установка ядра std-kvm
Поиск пакета
apt-cache search kernel-image-std-kvm
В ветках p10/p11 и Sisyphus пакет обычно доступен по имени kernel-image-std-kvm.
Установка
sudo apt-get install kernel-image-std-kvm
ALT Linux автоматически:
- Установит зависимости (
kernel-modules-std-kvm, если вынесены) - Сгенерирует
initramfsчерезmake-initrd - Обновит конфигурацию GRUB2
Перезагрузка
sudo reboot
Проверка активного ядра
uname -r
# Пример вывода: 6.6.26-std-kvm-alt1
3. Базовая настройка и оптимизация
Включение модулей KVM
Обычно модули загружаются автоматически.
Проверка:
lsmod | grep kvm
# Должны быть: kvm, kvm_intel (или kvm_amd)
Если нет:
sudo modprobe kvm
sudo modprobe kvm_intel # или kvm_amd
Настройка sysctl для хоста виртуализации
Создайте /etc/sysctl.d/99-kvm-host.conf:
# Разрешить оверкоммит памяти (оптимально для ВМ)
vm.overcommit_memory = 1
# Включить форвардинг (если используете NAT/bridge)
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
# Увеличить лимиты для виртуальных сетей
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
Примените:
sudo sysctl -p /etc/sysctl.d/99-kvm-host.conf
HugePages (для производительности ВМ)
sudo sysctl vm.nr_hugepages=2048
echo "vm.nr_hugepages=2048" | sudo tee -a /etc/sysctl.d/99-kvm-host.conf
Проверка: grep HugePages /proc/meminfo
I/O Scheduler (для SSD/NVMe)
# Проверка текущего
cat /sys/block/sda/queue/scheduler
# Для NVMe обычно оставляют `none` или `mq-deadline`
echo 'mq-deadline' | sudo tee /sys/block/sda/queue/scheduler
Для персистентности используйте udev правила или параметры ядра в GRUB.
CPU Governor (производительность)
sudo apt-get install cpupower
sudo cpupower frequency-set -g performance
Для автоматизации при загрузке добавьте в /etc/rc.d/rc.local или используйте systemd сервис.
4. Проверка работоспособности KVM
# Установка утилиты проверки
sudo apt-get install cpu-checker
# Проверка
kvm-ok
Ожидаемый вывод:
INFO: /dev/kvm exists
KVM acceleration can be used
Дополнительно:
dmesg | grep -i kvm
virsh capabilities | grep kvm
5. Интеграция с libvirt и QEMU
Установка стека виртуализации
sudo apt-get install libvirt qemu-system-x86 virt-manager
sudo systemctl enable --now libvirtd
sudo usermod -aG libvirt $USER
Выйдите и войдите в систему повторно, чтобы применилась группа
libvirt.
Настройка сети (по умолчанию)
libvirt автоматически создаёт NAT-сеть default:
virsh net-list --all
virsh net-start default
virsh net-autostart default
Создание первой ВМ (CLI)
virt-install \
--name test-vm \
--vcpus 2 --memory 2048 \
--disk size=20 \
--os-variant linux \
--network network=default \
--graphics none \
--console pty,target_type=serial \
--location http://mirror.yandex.ru/altlinux/p11/branch/x86_64/ \
--extra-args "console=ttyS0,115200n8 serial"
Рекомендации по конфигурации ВМ
- CPU:
host-passthroughилиhost-model - Диск:
virtio,cache=none,io=threads - Сеть:
virtio - Память:
hugepages(если настроены на хосте)
6. Обновление и обслуживание
Обновление ядра
sudo apt-get update
sudo apt-get install kernel-image-std-kvm
ALT Linux автоматически обновит initramfs и GRUB.
Удаление старых ядер
sudo package-cleanup --oldkernels --count=2
Не удаляйте последнее рабочее ядро. В ALT Linux
grubсохраняет предыдущие версии.
Пересборка initramfs (вручную, если нужно)
sudo make-initrd
7. Диагностика и решение типовых проблем
| Проблема | Причина | Решение |
|---|---|---|
kvm-ok → KVM acceleration can NOT be used |
Виртуализация отключена в BIOS | Включите VT-x/SVM в UEFI |
dmesg: kvm: disabled by bios |
Отключено в прошивке | Проверьте настройки CPU/Security в BIOS |
failed to initialize KVM: Device or resource busy |
Конфликт с VirtualBox/VMware/Hyper-V | Удалите/отключите другие гипервизоры |
| ВМ тормозят при диске I/O | Используется qcow2 с writeback cache |
Переключите на cache=none, io=threads |
| Проброс PCI не работает | Не включён IOMMU | Добавьте в GRUB: intel_iommu=on или amd_iommu=on, обновите GRUB и перезагрузитесь |
| Nested virtualization не работает | Отключено по умолчанию | echo 1 | sudo tee /sys/module/kvm_intel/parameters/nested (Intel) или kvm_amd для AMD |
Полезные команды отладки
dmesg | grep -iE 'kvm|virtio|vfio'
journalctl -u libvirtd -e
virsh dominfo <имя_вм>
sudo qemu-system-x86_64 -enable-kvm -version
Чек-лист после установки
- [ ]
uname -rсодержитstd-kvm - [ ]
lsmod | grep kvmпоказывает загруженные модули - [ ]
kvm-ok→KVM acceleration can be used - [ ]
virsh capabilities→<domain type='kvm'>присутствует - [ ]
libvirtdактивен и запущен - [ ] GRUB обновлён, старое ядро сохранено как fallback
- [ ]
sysctlиhugepages(если используются) применены
Совет:
Для продакшен-серверов рекомендуется использовать стабильную ветку (p10 или p11). В Sisyphus ядро может обновляться чаще, что подходит для тестирования, но требует внимательного контроля зависимостей.