«Работа с KVM в Debian или Ubuntu из командной строки» и «Настройка модема USB через PPPD»: разница между страницами

Материал из support.qbpro.ru
(Различия между страницами)
imported>Vix
Нет описания правки
 
imported>Vix
Нет описания правки
 
Строка 1: Строка 1:
Оригинал: [http://xmodulo.com/use-kvm-command-line-debian-ubuntu.html How to use KVM from the command line on Debian or Ubuntu]
'''1. Создаем /etc/ppp/peers/opsos'''
<br>Автор: Dan Nanni
/dev/ttyUSB0 460800
<br>Дата публикации: 27 февраля 2014 года
connect "/usr/sbin/chat -v -f /etc/ppp/peers/opsos_chat"
<br>Перевод: А. Кривошей
noipdefault
<br>Дата перевода: декабрь 2014 г.
noauth
Есть несколько способов управлять виртуальными машинами, запущенными в гипервизоре KVM, например с помощью популярного графического фронтенда virt-manager. Однако, если вы хотите использовать KVM на сервере, графические решения вряд ли будут хорошим выбором. В этом случае удобным инструментом будет virsh - утилита командной строки для управления гостевыми виртуальными машинами. Она работает со службой libvirtd, которая может управлять несколькими различными гипервизорами, включая KVM, Xen, QEMU, LXC и OpenVZ.
defaultroute
Интерфейс командной строки virsh также полезен в случае, если вы хотите автоматизировать инициализацию и управление виртуальными машинами. Кроме того, способность virsh работать с различными гипервизорами обеспечивает единый интерфейс для управления виртуальными машинами различных типов.
В этом руководстве я продемонстрирую вам, как запускать KVM из командной строки с использованием virsh в Debian или Ubuntu.
<h2>Этап 1: проверка аппаратной поддержки виртуализации</h2>
В качестве первого этапа проверьте, поддерживает ли ваш процессор аппаратную виртуализацию (то есть Intel VT или AMD-V), которая требуется для KVM. Это можно сделать с помощью команды:


'''$ egrep '(vmx|svm)' --color /proc/cpuinfo'''
'''2. Создаем /etc/ppp/peers/opsos_chat'''
  ABORT BUSY
flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx rdtscp<br>
  ABORT VOICE
lm  constant_tsc up arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq vmx ssse3 cx16 pcid <br>
  ABORT "NO CARRIER"
sse4_1 sse4_2 x2apic popcnt aes xsave avx f16c rdrand hypervisor lahf_lm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi ept<br>
ABORT "NO DIALTONE"
vpid fsgsbase smep
ABORT "NO DIAL TONE"
 
ABORT "NO ANSWER"
Если в выводе нет флага vmx или svm, это значит, что процессор не поддерживает аппаратную виртуализацию, поэтому вы не сможете использовать KVM на этом хосте. После проверки самое время установить KVM.<br>
ABORT "DELAYED"
<h2>Этап 2: Установка KVM</h2>
ABORT "ERROR"
Установите KVM и соответствующие пользовательские утилиты с помощью apt-get:
ABORT "+CGATT: 0"
 
"" AT
'''$ sudo apt-get install qemu-kvm libvirt-bin'''
  TIMEOUT 12
 
  OK ATH
Во время инсталляции будет создана группа libvirtd, и ваш userID будет автоматически добавлен в группу. Это позволит вам управлять виртуальными машинами от имени обычного пользователя. Вы можете проверить это с помощью команды id, которая выводит ваш group ID.
  OK ATE1
  OK AT+CGDCONT=1,"IP","\T","",0,0
'''$ id your-userID'''
  OK ATD*99#
  TIMEOUT 22
[[Файл:Group-id.jpg]]
  CONNECT ""
 
Если по каким-либо причинам в списке вашего groupID нет libvirtd, вы можете вручную добавить себя в эту группу.
'''$ sudo adduser [youruserID] libvirt'''
Перезагрузите обновленную информацию о группе, как показано ниже. Когда появится запрос, введите свой пользовательский пароль.
'''$ exec su -l $USER'''
Теперь вы можете запускать virsh как обычный пользователь. В качестве теста попробуйте приведенную ниже команду, которая выведет список доступных виртуальных машин. Если вы не получите сообщение об ошибке прав доступа, значит все в порядке.
'''$ virsh --connect qemu:///system list'''
 
Id    Name                          State
----------------------------------------------------
<h2>Этап 3: Настройка сетевого моста</h2>
Один из способов получения доступа из виртуальной машины к внешним сетям - мост, встроенный в ваш хост Linux. Это называется сетевой мост. Ниже описано, как создать и настроить сетевой мост Linux br0 для мостового соединения с KVM.
Сначала установим необходимый для создания сетевого моста пакет.
 
'''$ sudo apt-get install bridge-utils'''
'''$ sudo brctl addbr br0'''
Далее необходимо настроить сетевой мост в файле /etc/network/interfaces, чтобы он активировался при загрузке системы.<br>
Для использования файла /etc/network/interfaces необходимо отключить '''Network Manager''' (если он у вас используется).<br>
Как это сделать, описано [http://xmodulo.com/disable-network-manager-linux.html здесь].<br>
После отключения '''Network Manager''' настраиваем сетевой мост br0 в /etc/network/interfaces, как показано ниже.<br>
#auto eth0
#iface eth0 inet dhcp
auto br0
iface br0 inet dhcp
        bridge_ports eth0
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0
 
Здесь предполагается, что главным сетевым интерфейсом, который имеет доступ к внешним сетям, является eth0. Кроме того, предполагается, что eth0 получает IP-адреса посредством DHCP. Обратите внимание, что в /etc/network/interface нет настроек для eth0, так как он подключается к сетевому мосту br0.
Перезагрузите сетевые службы и убедитесь, что сетевой мост настроен успешно. В этом случае br0 должен присвоить сетевой адрес интерфейса eth0, в свою очередь интерфейсу eth0 не должно быть присвоено сетевого адреса.
'''$ sudo /etc/init.d/networking restart'''
'''$ ifconfig'''
 
[[Файл:Br-utils.jpg]]
 
<h2>Этап 4: создание виртуальной машины из командной строки</h2>
В KVM настройки виртуальной машины хранятся в XML-файле домена. Поэтому сначала необходимо подготовить этот файл.<br>
Если нет необходимого вам файла конфигурации, то его можно создать командой:<br>
'''virt-install --name=guest_name --arch=x86_64 --vcpus=1 --ram=512 --os-type=linux --os-variant=rhel5 --hvm'''
'''--connect=qemu:///system --network bridge:br0 --cdrom=/var/lib/libvirt/images/rhel5-x86_64.iso'''  
  '''--disk path=/mnt/virtual_machines/guest_name.img,size=20 --accelerate --vnc --noautoconsole --keymap=es'''
 
* Описание краткое команды ENG [https://acidborg.wordpress.com/2010/02/18/how-to-create-virtual-machines-using-kvm-kernel-based-virtual-machine/ тут]:<br>
 
    Explanation of the params:
        name: name of the guest.
        arch: architecture of the guest.
        vcpus: number of CPUs assigned to the guest.
        ram: MB of RAM assigned to the guest.
        os-type and os-variant: available options can be checked using man virt-install.
        hvm: use full virtualization.
        connect: connect to the hypervisor.
        network bridge: the bridge to use for the guest.
        cdrom: the ISO of the operating system to install.
        disk path=x,size=y: path and size of the image file for the guest.
        accelerate: make use of the KVM acceleration capabilities if available.
        vnc: export a virtual console over VNC to the guest.
        noautoconsole: Don’t automatically try to connect to the guest console.
        keymap: keyboard layout for the VNC console
    Use a VNC client to connect to the guest (port 5900 or 5901 if you already have a VNC server listening on port 5900)
    and install the operating system.
 
Ниже пример простого XML-файла для виртуальной машины. Вы можете использовать его, откорректировав в соответствии со своими потребностями.
   
  <domain type='kvm'>
  <name>alice</name>
  <uuid>f5b8c05b-9c7a-3211-49b9-2bd635f7e2aa</uuid>
  <memory>1048576</memory>
  <currentMemory>1048576</currentMemory>
  <vcpu>1</vcpu>
  <os>
    <type>hvm</type>
    <boot dev='cdrom' />
  </os>
  <features>
    <acpi />
  </features>
  <clock offset='utc' />
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <devices>
    <emulator>/usr/bin/kvm</emulator>
    <disk type="file" device="disk">
      <driver name="qemu" type="raw" />
      <source file="/home/dev/images/alice.img" />
      <target dev="vda" bus="virtio" />
      <address type="pci" domain="0x0000" bus="0x00" slot="0x04" function="0x0" />
    </disk>
    <disk type="file" device="cdrom">
      <driver name="qemu" type="raw" />
      <source file="/home/dev/iso/ubuntu-13.10-server-amd64.iso" />
      <target dev="hdc" bus="ide" />
      <readonly />
      <address type="drive" controller="0" bus="1" target="0" unit="0" />
    </disk>
    <controller type="ide" index="0">
      <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x1" />
    </controller>
    <interface type='bridge'>
      <mac address='52:54:aa:00:f0:51' />
      <source bridge='br0' />
    </interface>
    <input type='mouse' bus='ps2' />
    <graphics type='vnc' port='-1' autoport="yes" listen='127.0.0.1' />
  </devices>
  </domain>
   
 
Этот XML-файл определяет следующую виртуальную машину:
1 Гб оперативной памяти, один CPU и один жесткий диск.<br>
Образ диска: /home/dev/images/alice.img.<br>
Загрузка с CD: (/home/dev/iso/ubuntu-13.10-server-amd64.iso).<br>
Сеть: сетевой мост br0.<br>
Строка UUID между тегами &lt;uuid&gt;&lt;/uuid&gt; может быть сгенерирована случайным образом.<br>
Для этого используется утилита командной строки uuid.<br>
  '''$ sudo apt-get install uuid'''
  '''$ uuid'''
Доменный XML-файл можно также создать, сделав дамп информации о домене существующей виртуальной машины:
'''$ virsh --connect qemu:///system dumpxml alice &gt; bob.xml'''
[[Файл:Virsh0.jpg]]
 
<h2>Этап 5: запуск виртуальной машины из командной строки.</h2>
Перед запуском виртуальной машины необходимо создать образ диска для нее. Для этого можно воспользоваться командой qemu-img, входящей в пакет qemu-kvm.
'''$ qemu-img create -f qcow2 /home/dev/images/alice.img 5G'''
Преимущество опции qcow2 в том, что создаваемый при ее использовании образ диска не резервирует сразу весь свой свой объем (5 Гб), а динамически увеличивается при наполнении в процессе работы виртуальной машины.<br>
Если необходимо сделать сразу жестко заданный размер то команда будет такой:<br>
'''qemu-img create -q /home/dev/images/alice.img 5G'''
 
Теперь вы готовы к запуску виртуальной машины с использованием созданного ранее доменного XML-файла. Это делается с помощью приведенной ниже команды:
'''$ virsh --connect qemu:///system create alice.xml'''
 
Domain alice created from alice.xml
Проверьте, что домен создан успешно.
   
  '''$ virsh --connect qemu:///system list'''
 
  Id    Name                          State
----------------------------------------------------
3    alice                          running
Кроме того, проверьте, что виртуальный сетевой интерфейс для виртуальной машины (то есть vnet0) успешно добавлен в созданный ранее сетевой мост br0.
'''$ sudo brctl show'''
[[Файл:Ifconfig-br0.jpg]]


<h2>Этап 6. Удаленный доступ к виртуальной машине.</h2>
''* МТС хочет пароль, для мегафона не нужно, своего сам смотри''
Для удаленного доступа к консоли виртуальной машины вы можете использовать любой VNC-клиент.<br>
'''3. Создаем /etc/ppp/chap-secrets'''
Сначала определите номер порта VNC для виртуальной машины:
  # Secrets for authentication using CHAP
# client server secret IP addresses
'''$ sudo netstat -nap | grep kvm'''
mts * mts
   
[[Файл:Net-kvm.jpg]]


В этом примере номер порта для виртуальной машины alice 5900.<br>
Всё: # pon opsos и полетели.
Затем запустите VNC-клиент и подключитесь к VNC-серверу, работающему по адресу KVM-host-IP:5900.


<h2>Управление виртуальной машиной с помощью virsh</h2>
'''Еще, если хочешь сеть сразу поднимать:'''
Ниже список наиболее часто употребляемых команд virsh.
Для создания нового гостевого домена и запуска виртуальной машины:
'''$ virsh --connect qemu:///system create alice.xml'''
Для остановки виртуальной машины и уничтожения гостевого домена:


'''$ virsh --connect qemu:///system destroy alice'''
Создаем /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback
   
   
Для выключения виртуальной машины (без уничтожения домена):
  auto opsos
  iface opsos inet ppp
'''$ virsh --connect qemu:///system shutdown alice'''
        provider opsos
Для приостановки виртуальной машины:
'''$ virsh --connect qemu:///system suspend alice'''
Для возобновления работы виртуальной машины:
 
'''$ virsh --connect qemu:///system resume alice'''
Для автозапуска виртуальной машины после загрузки хоста:
'''$ virsh --connect qemu:///system autostart alice
'''
Для получения информации о домене виртуальной машины:
'''$ virsh --connect qemu:///system dominfo alice'''
Вы можете также управлять виртуальными машинами из сессии virsh. Для создания новой сессии virsh и входа в нее, просто введите:
  '''$ virsh --connect qemu:///system'''
   
В командной строке вы можете использовать любые команды virsh.<br>
[[Файл:Virsh-connect.jpg]]
 
<h2>Решение проблем</h2>
1. Я получил ошибку, когда попытался создать виртуальную машину:
 
error: internal error: no supported architecture for os type 'hvm'
 
 
Вы получите эту ошибку, если ваш процессор не поддерживает аппаратную виртуализацию (то есть Intel VT или AMD-V), которая требуется для работы KVM. Если же вы получили эту ошибку с процессором, поддерживающим Intel VT или AMD-V, возможные решения этой проблемы:
Во-первых, проверьте, загружены ли требуемые модули ядра.
 
'''$ lsmod | grep kvm'''
 
Если модуль kvm не загружен, вам необходимо загрузить его:
 
'''$ sudo modprobe kvm_intel (для процессоров Intel)'''
'''$ sudo modprobe kvm_amd (для процессоров AMD)'''
Второе решение - добавление аргумента "--connect qemu:///system" к команде virsh, как показано ниже. Этот аргумент может потребоваться, если вы используете более одного гипервизора (то есть VMware, VirtualBox) на сервере.
 
'''$ virsh --connect qemu:///system create alice.xml'''
 
2. Я получил ошибку, когда пытался запустить консоль своей виртуальной машины:
'''$ virsh console alice'''
 
error: internal error: cannot find character device <null>
Эта ошибка возникает потому, что вы не определили устройство консоли в XML-файле виртуальной машины.
Добавьте приведенные ниже строки в раздел '''"device" XML-файла.'''
 
<console type='pty'>
  <target port='0'/>
</console>
 
 
* [http://rus-linux.net/MyLDP/vm/kvm-v-debian.html взято тут...]


* [https://docs.fedoraproject.org/ru-RU/Fedora/12/html/Virtualization_Guide/chap-Virtualization_Guide-Managing_guests_with_virsh.html Документация по Virsh]
* [https://www.linux.org.ru/forum/admin/12806374#comments Взято тут..]

Версия от 12:23, 9 марта 2017

1. Создаем /etc/ppp/peers/opsos

/dev/ttyUSB0 460800
connect "/usr/sbin/chat -v -f /etc/ppp/peers/opsos_chat"
noipdefault
noauth
defaultroute

2. Создаем /etc/ppp/peers/opsos_chat

ABORT		BUSY
ABORT		VOICE
ABORT		"NO CARRIER"
ABORT		"NO DIALTONE"
ABORT		"NO DIAL TONE"
ABORT		"NO ANSWER"
ABORT		"DELAYED"
ABORT		"ERROR"
ABORT		"+CGATT: 0"
""		AT
TIMEOUT		12
OK		ATH
OK		ATE1
OK		AT+CGDCONT=1,"IP","\T","",0,0
OK		ATD*99#
TIMEOUT		22
CONNECT		""

* МТС хочет пароль, для мегафона не нужно, своего сам смотри 3. Создаем /etc/ppp/chap-secrets

# Secrets for authentication using CHAP
# client	server	secret			IP addresses
mts * mts

Всё: # pon opsos и полетели.

Еще, если хочешь сеть сразу поднимать:

Создаем /etc/network/interfaces

# The loopback network interface
auto lo
iface lo inet loopback

auto opsos
iface opsos inet ppp
       provider opsos