English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Обзор виртуализации, руководство по установке и управлению виртуальными машинами

Обзор: Введение в технологии виртуализации (kvm, qemu), установка виртуальных машин, управление виртуальными машинами (virt-manger, virsh и т.д.).

1. Почему нужна виртуализация?

Если ваша основная операционная система - Windows, но вам нужно работать на Linux, то VMware (требуется оплата...) или virtualbox будут вашим первым выбором, так что вы можете свободно переключаться между двумя операционными системами, кроме этого, у нас есть много других виртуализационных технологий; например, виртуальный оптический привод, мы完全可以不使用真正的 оптический привод, а использовать образ диска, это то, что мы часто сталкиваемся в повседневной жизни, но это не все виртуализация, сейчас очень популярные контейнеры docker также являются виртуализационной технологией.

В корпоративной среде ресурсы одного и того же компьютера можно разделить, администратор может настроить разные виртуальные машины для различных групп клиентов, изолировать разные блоки для выполнения системного обновления и обслуживания, не оказывая никакого влияния на работу конечных пользователей. Администраторы информационных систем могут создать商用 и персональный стационарный компьютер, эффективно изолировать загрузку программ и атаку вирусов; или создать компьютер, который может выполнять разные операционные системы и программное обеспечение, чтобы удовлетворять различные потребности или поддерживать старые программы.由此可见, в корпоративной среде виртуализация имеет очень широкое применение.

После всего этого посмотрим, поддерживает ли ваше компьютерное оборудование виртуализацию, откройте терминал и введите grep --color -E "vmx|svm" /proc/cpuinfo

Если есть информация, то恭喜你, вы можете установить виртуализационное программное обеспечение


Установка виртуализационного программного обеспечения

yum install qemu-kvm qemu-img
yum install virt-manager libvirt libvirt-python python-virtinst libvirt-client

2. Установка виртуальных машин

Самая дружелюбная и простая виртуализация - это виртуальные машины, здесь简要介绍一下 установку виртуальных машин.

2.1) Графическая установка

Найдите Virtual Machine Manager в системных утилитах или в терминале введите virt-manager, чтобы открыть графическое окно управления виртуальными машинами, кликните правой кнопкой мыши в месте, обозначенном красной окружностью, и выберите NEW, чтобы перейти к созданию виртуальной машины


Войдите в этот интерфейс и выберите первый вариант, чтобы установить с локальных носителей

  

Измените второй вариант на путь к вашему дисковому образу, выберите и нажмите Forward


Здесь выберите размер памяти вашей виртуальной машины


Здесь выберите размер жесткого диска


Здесь выберите имя виртуальной машины, это имя является одним из признаков, по которому мы узнаем виртуальную машину


После завершения этих шагов наконец-то arrives на экран установки, где есть два варианта: первый вариант - установить redhat7.1 напрямую, а второй вариант - сначала протестировать этот образ, а затем установить.


Выберите язык для установки системы (для того чтобы еще больше подчеркивать важность английского языка, я выбрал английский...), это язык установки системы, а не самой системы!


Основной интерфейс установки системы, в порядке сверху вниз, слева направо, включает выбор часового пояса (Шанхай), выбор типа клавиатуры (американская клавиатура), поддержку языковой системы (добавьте китайский, иначе при встрече с китайскими символами会出现 глюки), что такое источник镜像 установки (локальный диск), выбор пакетов программ (для быстроты я выбрал минимальную установку), на какой диск устанавливать и разделение диска (стандартное разделение диска и то, что я сам разделил, не отличаются彼此... Обычно /boot 200MB, swap в два раза больше памяти, остальное /), Kdump - это механизм захвата катастроф Linux ядра на основе kexec, который сохраняет изображение памяти ядра до катастрофы, и программисты могут анализировать этот файл, чтобы найти причину катастрофы ядра, и затем улучшить систему. В конце концов, это сетевые настройки процесса установки (мы выбираем не настраивать).


После завершения всех настроек мы заходим в интерфейс индикатора прогресса установки, ждем, пока индикатор读完, и можем перезагрузиться, чтобы войти в этот новый redhat.


2.2) Командная установка виртуальной машины

В Linux все является командой. Установка виртуальной машины также может быть выполнена с помощью команды и очень удобна

[root@foundation3 ~]# virt-install --name mo1 --ram 1024 --file /var/lib/li 
bvirt/images/mo1.img --cdrom /root/Desktop/rhel-server-7.1-x86_64-dvd.iso - 
-file-size 8 
ПРЕДУПРЕЖДЕНИЕ Операционная система не обнаружена, производительность VM может пострадать. Укажите OS 
с помощью --os-variant для оптимальных результатов. 
ПРЕДУПРЕЖДЕНИЕ Носители CDROM по умолчанию не печатаются в текстовом консоли, поэтому вы, возможно, 
Вы не увидите текстовый вывод установки. Может быть, вам стоит использовать --location. См. man 
 страницы для примеров использования --location с носителями CDROM 
Начало установки... 
Алоцирование 'mo1.img'         | 8.0 GB  00:00 
Создание домена...         | 0 B  00:00 
Connected to domain mo1 

这其中--name选项是确定虚拟机的名字,--ram是虚拟机的内存,--file为你将虚拟机的磁盘文件存储路径,--cdrom是你的镜像文件路径,--file-size是虚拟机的磁盘大小。键入命令后即可进入安装系统的界面,在上一步骤已经介绍完了。

3)虚拟机的管理

在介绍虚拟机管理命令之前我们先介绍下创建完虚拟机并安装完系统后生成了哪些文件,或者说虚拟机对于我们真机到底是个啥?

[root@foundation3 ~]# ls /etc/libvirt/qemu /var/lib/libvirt/images/ 
/etc/libvirt/qemu: 
desktop.xml <span style="color:#ff0000;">mo.xml</span> networks server.xml 
/var/lib/libvirt/images/: 
mo1.img    rh124-desktop-vda.qcow2 rh124-server-vda.ovl rh124-server.xml 
<span style="color:#ff0000;">mo.img</span>     rh124-desktop-vdb.ovl rh124-server-vda.qcow2 test.sh 
mo_shot.qcow2   rh124-desktop-vdb.qcow2 rh124-server-vdb.ovl vm1.qcow2 
rh124-desktop-vda.ovl rh124-desktop.xml  rh124-server-vdb.qcow2 

上面输出的结果中红色字处就是我们生成的文件,总共两个一个xml文件和一个硬盘文件。xml文件可以随意删掉,不会影响虚拟机,但是如果删掉他我们不能再virt-manager(虚拟机图形管理工具上找到他),不过我们有方法恢复;硬盘文件如果删掉的话那你的虚拟机也就无法使用了。

virt-manager ## 开启图形管理工具
virt-viewer vmname 
## 显示以vmname为名字的虚拟机,当我们开启虚拟机时默认不会,将他显示在前台而只是running状态,如果我们要将他显示出来就要键入上面这条命令

virsh list ## список запущенных виртуальных машин (по умолчанию, для просмотра требуется пользователь root)

[root@foundation3 ~]# virsh list 
 Id Название       Статус 
---------------------------------------------------- 

Это означает, что у меня нет запущенных виртуальных машин, но если я не являюсь пользователем root, также будет отображаться как на изображении выше

[root@foundation3 ~]# virsh start mo 
Домен mo запущен 
[root@foundation3 ~]# virsh list 
 Id Название       Статус 
---------------------------------------------------- 
 9  mo        running 
[root@foundation3 ~]# su - mo 
Последний вход: Wed Oct 19 10:48:59 CST 2016 на pts/3 
[mo@foundation3 ~]$ virsh list 
 Id Название       Статус 
---------------------------------------------------- 

Поэтому обязательно переключитесь на пользователя root, чтобы использовать эту команду,否则 она будет неэффективной, но почему только пользователь root может просматривать или другие настройки указаны в конфигурационном файле (/etc/libvirt/qemu.conf). К этому моменту я вспомнил ошибку, с которой я столкнулся, когда только начинал устанавливать виртуальную машину, как follows:

[root@foundation3 ~]# virt-install --name zhao --ram 1024 --file /var/lib/libvirt/images/zhao.img --file-size 8 --cdrom /root/Desktop/rhel-server-7.1-x86_64-dvd.iso 
ПРЕДУПРЕЖДЕНИЕ Операционная система не обнаружена, производительность VM может пострадать. Укажите ОС с помощью --os-variant для оптимальных результатов. 
ПРЕДУПРЕЖДЕНИЕ Средства CDROM по умолчанию не печатаются в текстовом консоли, поэтому вы, вероятно, не увидите текстовый вывод установки. Возможно, вам потребуется использовать --location. См. страницу руководства для примеров использования --location с носителями CDROM 
Начало установки... 
Анализируя 'zhao.img'            | 8.0 GB 00:00:00  
<span style="color:#ff0000;">ОШИБКА </span> внутренняя ошибка: процесс завершился при подключении к мониторингу: 2016-10-19T03:00:25.552714Z qemu-kvm: -drive file=/root/Desktop/rhel-server-7.1-x86_64-dvd.iso,if=none,id=drive-ide0-0-1,readonly=on,format=raw: <span style="color:#ff0000;">не удалось открыть образ диска /root/Desktop/rhel-server-7.1-x86_64-dvd.iso: Не удалось открыть файл: Permission denied</span> 
Похоже, что установка домена не была успешной. 
Если это так, вы можете перезапустить домен, выполнив: 
 virsh --connect qemu:///system start zhao 
в противном случае, пожалуйста, перезапустите установку. 

Согласно ошибке, указанной красным на картинке, он сказал, что у меня нет прав доступа. Я root, не так ли?! Я очень зол, и в качестве пользователя root мне пришлось видеть оскорбление в виде «Permission denied». Сначала я проверил права доступа к файлу образа, как показано ниже:

[root@foundation3 ~]# ll /root/Desktop/rhel-server-7.1-x86_64-dvd.iso 
-rw-r--r-- 1 qemu qemu 3890216960 Oct 17 22:15 /root/Desktop/rhel-server-7.1-x86_64-dvd.iso 

Результат показывает, что у меня есть права на чтение и запись к нему, поэтому с правами все в порядке. После тщательного изучения материалов я нашел решение проблемы: права на управление виртуальной машиной указаны в его файле конфигурации!

<span style="color:#ff0000;">#user = "root"</span> 
# Группа для процессов QEMU, запущенных системным экземпляром. Она может быть 
# указан аналогичным образом, как и пользователь. 
<span style="color:#ff0000;">#group = "root"</span> 
# Должна ли libvirt динамически изменять владение файлами 
# чтобы соответствовать настроенному пользователю/группе. По умолчанию равно 1. 
# Установлено в 0 для отключения изменений владения файлами. 
<span style="color:#ff0000;">#dynamic_ownership =0 </span> 

Удалите решетку (#) на красном месте, и наш root получит право создавать виртуальные машины.

virsh list --all  ##列出所有虚拟机(同样也需要root用户)

[root@foundation3 ~]# virsh list --all 
 Id Название       Статус 
---------------------------------------------------- 
 -  рабочий стол      выключен 
 -  mo        выключен 
 -  сервер        выключен

virsh start vmname ##开启名为vmname的虚拟机
virsh shutdown vmname ##正常关闭vmname虚拟机
virsh destroy vmname ##强行结束vmname虚拟机
virsh create vmname.xml ##指定vmname虚拟机前端文件(*.xml),并显示在图形管理工具上,相当于临时恢复虚拟机前端引导选项
virsh define vmname.xml ##永久恢复虚拟机前端引导项

virsh undefine vmname.xml ## Удаление интерфейсного файла виртуальной машины, но не удаление образа диска.

Ниже я подробно объясню роль интерфейсного файла и некоторые операции:

Графический интерфейс виртуальной машины и virsh list --all показывают одинаковый результат

Мы можем правой кнопкой мыши выбрать Delete для виртуальной машины 'mo', чтобы удалить интерфейсный файл.


Вы также можете удалить его интерфейсный файл командой virsh undefine mo. Принцип этой команды - удалить /etc/libvirt/qemu/mo.xml, поэтому достаточно предварительно сделать резервную копию этого файла, чтобы восстановить интерфейсный файл. Затем используйте virsh define */mo.xml, чтобы восстановить интерфейсный файл.


Но у меня нет резервной копии. Поэтому мне пришлось заново загрузить образ, чтобы создать файл mo.xml, на самом деле это очень просто.

[root@foundation3 ~]# virt-install --name mo --ram 1024 --disk /var/lib/libvirt/images/mo.img

Неужели команда создания виртуальной машины такая же, только с измененными параметрами? Здесь мы, как в фильме, удаляем личность агента и создаем новую, поэтому нужно только указать новое имя (можно такое же, как и раньше) и само существо (это файл диска), и это делается очень быстро. Таким образом, мы заново создаем файл интерфейса пользователя.


4) Снимки виртуальных машин

Те, кто использовал vmware, знают, что у виртуальных машин есть очень полезная функция создания снимков, которая также обеспечивает основу для того, чтобы мы могли свободно экспериментировать с виртуальными машинами


Красная линия показывает место для создания снимка. У нас kvm, конечно, также имеет эту функцию. Вот так

[root@foundation3 ~]# qemu-img create -f qcow2 -b /var/lib//libvirt/images/mo.img /var/lib/libvirt/images/test.qcow2 
Форматирование '/var/lib/libvirt/images/test.qcow2', fmt=qcow2 размер=8589934592 backing_file='/var/lib//libvirt/images/mo.img' шифрование=отключено cluster_size=65536 lazy_refcounts=отключено 
[root@foundation3 ~]# ls /var/lib/libvirt/images/ 
mo1.img     rh124-desktop-vdb.ovl rh124-server-vdb.ovl vm1.qcow2 
mo.img     rh124-desktop-vdb.qcow2 rh124-server-vdb.qcow2 zhao.img 
mo_shot.qcow2   rh124-desktop.xml  rh124-server.xml 
rh124-desktop-vda.ovl rh124-server-vda.ovl <span style="color:#ff0000;">test.qcow2</span> 
rh124-desktop-vda.qcow2 rh124-server-vda.qcow2 test.sh 
[root@foundation3 ~]# 

Красная часть - это созданный нами снимок,接下来 мы используем提到的 выше:

[root@foundation3 ~]# virt-install --name mo --ram 1024 --disk /var/lib/libvirt/images/test.qcow2 
Теперь можно использовать снимки. Если снимок сломан, можно создать новый снимок, и он будет таким же, как исходная виртуальная машина, но помните, что真实的 диск виртуальной машины не должен удаляться или повреждаться,因为在 этом случае его невозможно будет восстановить.

Кратко говоря, снимки KVM представляют собой создание снимков дискового файла исходной виртуальной машины, при этом каждый созданный снимок системы точно такой же, как и исходная виртуальная машина, поэтому любые изменения в исходной виртуальной машине будут также отражены в снимке.

Поскольку встроенные управляющие команды слишком мощные, но некоторые функции на самом деле не нужны, и в то же время отсутствуют такие простые операции, как прямая перезагрузка, я сам封装ил скрипт для управления виртуальными машинами. Код следующий:

#!/bin/bash 
create_img() 
{ 
 virsh undefine $1 &>/dev/null 
 qemu-img create -f qcow2 -b /var/lib/libvirt/images/$1.img /var/lib/libvirt/images/$1_shot.qcow2 &>/dev/null 
 virt-install --name $1 --ram 1024 --disk /var/lib/libvirt/images/$1_shot.qcow2 --import --noautoconsole &>/dev/null 
 virsh define /etc/libvirt/qemu/$1.xml &>/dev/null 
} 
delete_img() 
{ 
 virsh undefine $1 &>/dev/null 
 rm -rf /var/lib/libvirt/images/$1_shot.qcow2 &>/dev/null 
} 
check_status() 
{ 
 status=`virsh list --all| sed -n '3,$p'|sed 's/[[:space:]]\+/:/g'|grep $1 |cut -d':' -f4` 
 echo $status 
 if [ $status = "shut" ];then 
  return 0 
 elif [ $status = 'running' ];then 
  return 1 
 fi 
} 
case $1 in 
--start|-s) 
shift 
echo "запуск $1 ..." 
check_status $1 &>/dev/null && virsh start $1 &>/dev/null 
;; 
--view|-v) 
shift 
echo "просмотр $1 ..." 
check_status $1 &> /dev/null || virt-viewer $1 &>/dev/null & 
;; 
--shutdown|-d) 
shift 
echo "отключение $1 ..." 
check_status $1 &> /dev/null || virsh destroy $1 &>/dev/null & 
;; 
--create|-c) 
shift 
check_status $1 &> /dev/null || virsh destroy $1 
echo "создание снимка для $1 ..." 
create_img $1 
echo "успешно создан снимок" 
;; 
--reset|-r) 
shift 
check_status &>/dev/null $1 || virsh destroy $1 
delete_img $1 
create_img $1 
;; 
--check|-h) 
shift 
echo $1 `check_status $1` 
;; 
*) 
echo "vmctl <КОМАНДА> <ОПЦИИ> " 
echo "" 
echo "open,show,shutdown,reset...Virtual Machine" 
echo -e "--start|-s\tоткрытие виртуальной машины\n--view|-v\tпоказать открытую виртуальную машину" 
echo -e "--shutdown|-d\tзакрытие вашей виртуальной машины" 
echo -e "--create|-c\tсоздание снимка вашей виртуальной машины" 
echo -e "--reset|-r\tвосстановление вашей виртуальной машины" 
echo -e "--check|-h\tпроверка состояния работы или остановки виртуальной машины" 
;; 
esac 

Вот и все, что есть в этой статье, я надеюсь, что это поможет вам в изучении, и希望大家多多支持呐喊教程。

Заявление: содержимое этой статьи взято из Интернета, авторские права принадлежат соответствующему автору, содержимое предоставлено пользователями Интернета в порядке добровольного участия и загрузки, сайт не имеет права собственности, не underwent редактирование в ручном режиме и не несет ответственности за соответствующие юридические обязательства. Если вы обнаружите содержимое,涉嫌侵犯版权, пожалуйста, отправьте письмо по адресу: notice#oldtoolbag.com (при отправке письма, пожалуйста, замените # на @) для сообщения о нарушении и предоставьте соответствующие доказательства. В случае подтверждения, сайт незамедлительно удаляет涉嫌侵权的内容。

Основной учебник
Рекомендуем к просмотру