ORACLE Linux KVM - Criando seu HyperV com Oracle Linux 8 + KVM + qemu + virsh + virt-manager


Document update: 13/07/2022

Neste documento vamos abordar como criar um servidor HyperV com Sistema Operacional "Oracle Linux 8.x(OL8)", mas você pode usar qualquer distribuição de Linux, já utilizei Debian Linux.

Importante:

[regis@regis-Lenovo:/]$   --->>>   Desktop
[admserver@cloud ~]$   --->>>   Servidor

Faça download da mídia de instalação, recomendo a "FULL ISO" no link https://yum.oracle.com/oracle-linux-isos.html.

Crie um "Pendrive USB" com bootavel com a mídia do OL8 que você realizou o download. Você pode utilizar qualquer software, vou indicar algumas opções em Linux(meu desktop é Linux) e como instalar.

- WoeUSB
Como criar um pendrive bootável do Windows no Linux com WoeUSB: clique aqui
[regis@regis-Lenovo:/]$ sudo apt-get update
[regis@regis-Lenovo:/]$ sudo yum install woeusb
-  USB Image Writer
Gerenciador simples para gravar imagens ISO em USB: clique aqui
[regis@regis-Lenovo:/]$ sudo apt-get update
[regis@regis-Lenovo:/]$ sudo yum install mintstick

Não esqueça de configurar a BIOS do seu computador/servidor para iniciar pelo PenDrive.

Não abordarei como instalar o Sistema Operacional Oracle Linux, temos vários materiais bem produzidos, seguem alguns links abaixo, você pode usar outro documento ou vídeo caso se sinta mais à vontade.


Detalhes a serem vistos durante a instalação:

- Linguagem: recomendo inglês.
- Base Environment(tipo de instalação), você pode escolher "Virtualization", onde você terá um ambiente gráfico instalado e ferramentas ligadas a virtualização, ou "Minimal Install", não instala a maioria dos pacotes, nem mesmo o ifconfig, mas se você tem familiaridade com o S.O., pode instalar somente o que é necessário manualmente;
- Além de configurar a senha do usuário root, recomendo criar um usuário  para administração do seu servidor, eu uso "admserver".


 Agora que seu OL8 está instalado, vamos acessar o servidor pelo desktop, criar uma chave privada para acesso SSH sem solicitar senha, siga os passos abaixo:

- Configurar o host para o IP, onde é informado o IP do servidor, o nome do host, e o nome do host.domínio, desta forma você conecta pelo nome HOST, ou pelo IP.
[regis@regis-Lenovo:/]$ sudo -s
[regis@regis-Lenovo:/]$ echo "192.168.1.6 cloud cloud.granducato" >> /etc/hosts
Agora vamos realizar o acesso ssh pelo host, criar as chaves e importar a mesma para o seu Desktop.
[regis@regis-Lenovo:~/.ssh]$ ssh admserver@cloud.granducato
admserver@cloud.granducato's password:  DIGITE A SENHA CRIADA NA INSTALAÇÃO
Activate the web console with: systemctl enable --now cockpit.socket

Last login: Tue May 31 11:23:17 2022 from 192.168.1.9
[admserver@cloud ~]$ ssh-keygen -t rsa 
Generating public/private rsa key pair.
Enter file in which to save the key (/home/admserver/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): PODE DEIXAR EM BRANCO
Enter same passphrase again: PODE DEIXAR EM BRANCO
Your identification has been saved in /home/admserver/.ssh/id_rsa.
Your public key has been saved in /home/admserver/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:c/gqdp22z3RCtA3wDBsATbZnjSPjmAs7lpHj49ssGZk admserver@cloud.granducato
The key's randomart image is:
+---[RSA XXXX]----+
|        .++.+    |
|         ... G   |
|          . o =  |
|       o   o + + |
|      A D.+ + + .|
|       ++C + =   |
|      o.oo.   o o|
|       +*. . + +.|
|      .+++++*...o|
+----[SHAXXX]-----+
[admserver@cloud ~]$ exit
logout
Connection to cloud.granducato closed.
Vamos copiar a chave para o seu desktop:
[regis@regis-Lenovo:/]$ ssh-copy-id admserver@cloud.granducato
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter
 out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are 
prompted  now it is to install the new keys
admserver@cloud.granducato's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'admserver@cloud.granducato'"
and check to make sure that only the key(s) you wanted were added.
[regis@regis-Lenovo:/]$ ssh admserver@cloud.granducato
Vamos iniciar as configurações para acessar seu Servidor Virtualizado, verificar se o seu processador tem suporte a virtualização e qual marca e modelo é:
[admserver@cloud ~]$ grep -e 'vmx' /proc/cpuinfo 
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov 
pat pse36 clflush dts acpi mmx fxsr sse sse2 ht tm pbe syscall nx pdpe1gb rdtscp 
lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid
aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr
pdcm  pcid dca sse4_1 sse4_2 popcnt aes lahf_lm epb pti ssbd ibrs ibpb stibp
 tpr_shadow
 vnmi flexpriority ept vpid dtherm ida arat flush_l1d
[admserver@cloud ~]$ grep -e 'vendor_id' /proc/cpuinfo 
vendor_id	: GenuineIntel
[admserver@cloud ~]$ grep -e 'model name' /proc/cpuinfo 
model name	: Intel(R) Xeon(R) CPU           X5680  @ 3.33GHz
Verificar se seu S.O. tem o módulo KVM instalado:
[admserver@cloud ~]$ lsmod | grep kvm
kvm_intel             262144  0
kvm                   692224  1 kvm_intel
irqbypass              16384  1 kvm

Antes de iniciar a instalação dos pacotes, vamos atualizar os pacotes e sistemas que já se encontram instalados, com o gerenciador de pacotes " dnf ". Acredito que muitos estejam familiarizados com apt, apt-get, snap, apititude, entre outros, mas no Oracle Linux 8.x o padrão é este. 
[admserver@cloud ~]$ sudo dnf update

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for admserver: 
Failed to set locale, defaulting to C.UTF-8
Last metadata expiration check: 1:41:52 ago on Tue May 31 12:24:02 
2022.
Dependencies resolved.
=================================================================================
 Package                       Arch   Version             Repository         Size
=================================================================================
Installing:
 kernel                        x86_64 4.18.0-372.9.1.el8  ol8_baseos_latest 8.0 M
 oracle-indexhtml              noarch 8-7.0.2.el8         ol8_baseos_latest 242 k
   replacing redhat-indexhtm
         l.noarch8-7.0.4.el8
Upgrading:
 ModemManager                  x86_64 1.18.2-1.el8        ol8_baseos_latest 1.1 M
 ModemManager-glib             x86_64 1.18.2-1.el8        ol8_baseos_latest 304 k
 NetworkManager                x86_64 1:1.36.0-4.0.1.el8  ol8_baseos_latest 2.3 M
....
A lista é extensa, cortei e colei o final abaixo:
....
 swtpm        x86_64 0.7.0-1.20211109gitb79fd91.module+el8.6.0+20659+3dcf7c70  ol8_appstream   43 k
 swtpm-libs   x86_64 0.7.0-1.20211109gitb79fd91.module+el8.6.0+20659+3dcf7c70  ol8_appstream   49 k
 swtpm-tools  x86_64 0.7.0-1.20211109gitb79fd91.module+el8.6.0+20659+3dcf7c70  ol8_appstream  119 k

Transaction Summary
===================================================================================================
Install   24 Packages
Upgrade  508 Packages

Total download size: 985 M
Is this ok [y/N]: y
Pode demorar um pouco, eu tive 1041 pacotes para atualizar.


Agora vamos instalar os pacotes necessários:
[admserver@cloud ~]$ sudo dnf module install virt
[admserver@cloud ~]$ sudo dnf install virt-install virt-viewer
Caso você use o Gerenciador de pacotes "yum", segue comandos abaixo:

[admserver@cloud ~]$ sudo yum update
[admserver@cloud ~]$ sudo yum upgrade
[admserver@cloud ~]$ sudo yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install

Comando para verificação do virt:
[admserver@cloud ~]$ virt-host-validate 
setlocale: No such file or directory
  QEMU: Checking for hardware virtualization                               : PASS
  QEMU: Checking if device /dev/kvm exists                                 : PASS
  QEMU: Checking if device /dev/kvm is accessible                          : PASS
  QEMU: Checking if device /dev/vhost-net exists                           : PASS
  QEMU: Checking if device /dev/net/tun exists                             : PASS
  QEMU: Checking for cgroup 'cpu' controller support                       : PASS
  QEMU: Checking for cgroup 'cpuacct' controller support                   : PASS
  QEMU: Checking for cgroup 'cpuset' controller support                    : PASS
  QEMU: Checking for cgroup 'memory' controller support                    : PASS
  QEMU: Checking for cgroup 'devices' controller support                   : PASS
  QEMU: Checking for cgroup 'blkio' controller support                     : PASS
  QEMU: Checking for device assignment IOMMU support                       : PASS
  QEMU: Checking if IOMMU is enabled by kernel                             : PASS
  QEMU: Checking for secure guest support : WARN (Unknown if this platform has 
                                                         Secure Guest support)
Vamos adicionar o serviço libvirt e iniciá-lo:
[root@cloud ~]# systemctl start libvirtd.service
[root@cloud ~]# systemctl enable libvirtd.service
[root@cloud ~]# systemctl status  libvirtd.service
● libvirtd.service - Virtualization daemon
   Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2022-05-31 14:56:32 -03; 22s ago
     Docs: man:libvirtd(8)
           https://libvirt.org
 Main PID: 120091 (libvirtd)
    Tasks: 21 (limit: 32768)
   Memory: 40.8M
   CGroup: /system.slice/libvirtd.service
           ├─  2222 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_le>
           ├─  2223 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_le>
           └─120091 /usr/sbin/libvirtd --timeout 120

May 31 14:56:32 cloud.granducato systemd[1]: Starting Virtualization daemon...
May 31 14:56:32 cloud.granducato systemd[1]: Started Virtualization daemon.
May 31 14:56:32 cloud.granducato dnsmasq[2222]: read /etc/hosts - 2 addresses
May 31 14:56:32 cloud.granducato dnsmasq[2222]: read /var/lib/libvirt/dnsmasq/default.addnhosts - 0 addresses
May 31 14:56:32 cloud.granducato dnsmasq-dhcp[2222]: read /var/lib/libvirt/dnsmasq/default.hostsfile
...skipping...
● libvirtd.service - Virtualization daemon
   Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2022-05-31 14:56:32 -03; 22s ago
     Docs: man:libvirtd(8)
           https://libvirt.org
 Main PID: 120091 (libvirtd)
    Tasks: 21 (limit: 32768)
   Memory: 40.8M
   CGroup: /system.slice/libvirtd.service
           ├─  2222 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_le>
           ├─  2223 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_le>
           └─120091 /usr/sbin/libvirtd --timeout 120
Vamos instalar o aplicativo virsh-manager para ter acesso aos recursos de virtualização remotamente, onde poderemos gerenciar os recursos e configurações, ou remover, criar e alterar máquinas virtuais de seu Desktop.

No servidor você precisa adicionar um usuário para o grupo " libvirt ", no meu caso uso o " admserver ":
[root@cloud ~]# usermod -G libvirt admserver
Conferindo o resultado do comando:
[root@cloud ~]# cat /etc/group | grep libvirt
libvirt:x:982:admserver

Voltamos ao Desktop, e abrimos o virt-manager, você pode digitar no seu terminal ou procurar no menu de aplicativos.


Passos: File, +Add Connection e preencha as informações conforme abaixo, e clique em connect.


A partir deste momento você pode criar suas máquinas virtuais.

No próximo POST, escreverei mais sobre criar, configurar e gerenciar as máquinas virtuais.

Espero que goste de documento, e se tiver dúvidas estou a disposição por aqui ou por e-mail.



Fontes:



#linux #kvm #virtualization #virtualizacao #qemu #virsh #virtmanager #oraclelinux #oracle #ol8 #ssh #hyperv

Comentários

Postagens mais visitadas