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.
Não esqueça de configurar a BIOS do seu computador/servidor para iniciar pelo PenDrive.
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
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 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.
Links:
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.
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