O que é Virtualização?

Propaganda
Virtualização
Conceitos e Prática
Tópicos em Sistemas de Computação – 2014
Prof. Dr. Adriano Mauro Cansian
[email protected]
Estagiário Docente: Vinícius Oliveira
[email protected]
Agenda
 Objetivos.
 Introdução.
 Virtualização: conceitos.
 VirtualBox:
• Princípios básicos;
• Instalação;
• Criando uma máquina virtual:
• Utilizando interface gráfica (GUI);
• Utilizando linha de comando (CLI);
• Guest Additions;
 Disposições finais.
Agenda
 Objetivos.
 Introdução.
 Virtualização: conceitos.
 VirtualBox:
• Princípios básicos;
• Instalação;
• Criando uma máquina virtual:
• Utilizando interface gráfica (GUI);
• Utilizando linha de comando (CLI);
• Guest Additions;
 Disposições finais.
Objetivos
 Aprender conceitos sobre virtualização.
 Entender o funcionamento das plataformas
virtualizadas, amplamente em uso.
 Aprender a criar e gerenciar máquinas virtuais com
o VirtualBox.
Introdução (1)
O que é Virtualização?
 Não há um consenso.
 Engloba:
• Emulação;
• Simulação;
 Na computação, é um mecanismo capaz de executar
em um mesmo computador dois ou mais sistemas,
distintos ou não, de maneira isolada.
Introdução (2)
Um pouco de história:
 A virtualização de hoje é resultado de pesquisas
realizadas pela IBM na década de 60 e 70.
 O intuito era criar um sistema capaz de fornecer
multiprogramação e máquina estendida (alto nível).
 Década de 80 e 90: virtualização era pouco utilizada.
 Muito do que temos atualmente sobre virtualização com
x86 é consequência destas pesquisas.
 Atualmente a virtualização é uma tendência, sendo
muito utilizada em diferentes segmentos, principalmente
de infraestrutura.
Introdução (3)
≈
Mainframes: centralizando
a computação.
VS
Introdução (4)
 Por que utilizar virtualização?
• Consolidação de servidores:
• Redução do número e dos tipos de servidores;
• Diminuição de custos (manutenção, refrigeração, energia e
etc);
• Melhor uso dos recursos computacionais;
• Facilidade de gerenciamento de um número reduzido de
servidores.
•
•
•
•
Confiabilidade;
Disponibilidade;
Encapsulamento;
Dentre outros.
Virtualização: conceitos (1)
 Virtualizar:
• Executar simultaneamente múltiplos sistemas
operacionais em uma mesma máquina física.
 Monitor de máquinas virtuais (MMV):
• Gerencia a distribuição dos recursos de hardware a cada
sistema operacional convidado.
 Máquina virtual:
• Ambiente isolado criado pela MMV para cada sistema
operacional convidado.
Virtualização: conceitos (2)
 Instruções não privilegiadas:
• Não modificam a alocação ou o estado de recursos
compartilhados por vários processos simultâneos.
 Instruções privilegiadas:
• Podem alterar o estado e a alocação dos recursos
compartilhados.
 Estados de operação de um computador:
• Modo usuário;
• Modo de supervisor;
Virtualização: conceitos (3)
 Sistema operacional hospedeiro (Host Operating
System) :
• Sistema operacional nativo da máquina;
• Executado diretamente sobre o hardware físico;
 Sistema operacional visitante (Guest Operating
System):
• Sistema operacional que é executado na máquina virtual;
• Geralmente executado sobre o hardware virtual;
Virtualização: conceitos (4)
 Monitor de Máquina Virtual (MMV) ou
Hypervisor:
• Camada de software responsável por aplicar e monitorar
políticas para as máquinas virtuais;
• Responsável pela virtualização e controle de acesso aos
recursos compartilhados para as máquinas virtuais;
• Máquinas virtuais executam no modo usuário, sendo que o
MMV executa no modo supervisor;
• Para uma máquina virtual executar uma instrução
privilegiada, o MMV é necessário;
Virtualização: conceitos (5)
Virtualização: conceitos (6)
 Tipos de virtualização:
• Virtualização total ou completa:
• MMV cria uma réplica do hardware da máquina hospedeira;
• MMV cria drivers genéricos para traduzir os elementos de
hardware da máquina hospedeira.
• Cada instrução é testado pelo MMV e depois disso é
executada em hardware, o que causa uma perda de
performance.
• Se a instrução for privilegiada, ela é simulada pelo MMV;
• Não há modificações no sistema operacional visitante.
• Com isso, a grande maioria dos sistemas operacionais
existentes podem ser virtualizados.
Virtualização: conceitos (7)
 Tipos de virtualização:
• Virtualização total ou completa:
Virtualização: conceitos (8)
 Tipos de virtualização:
• Para-virtualização:
• Não utiliza drivers genéricos, acessa diretamente o hardware
(ganho de performance);
• Uma instrução só é processada pelo MMV se ela for
privilegiada, ou seja, se alterar o estado do sistema;
• MMV não testa instrução por instrução como na
virtualização total;
• Sistema operacional visitante é modificado;
• Reduz o número de sistemas os quais podem ser
virtualizados;
Virtualização: conceitos (9)
 Tipos de virtualização:
• Para-virtualização:
Virtualização: conceitos (10)
 Tipos de virtualização:
• Virtualização assistida por hardware:
• Semelhante ao modelo de virtualização total;
• Entretanto, não precisa testar todas instruções;
• Processador fornece um ambiente restrito para a execução
de instruções das máquinas virtuais;
• Há um aumento de performance considerável;
• Intel VT e AMD-V são processadores que possuem essa
característica;
Virtualização: conceitos (11)
 Tipos de virtualização:
• Virtualização assistida por hardware:
VirtualBox (1)
 O VirtualBox é uma poderosa coleção de ferramentas
para máquinas virtuais.
 Pode ser usado em computadores pessoais, servidores ou
sistemas mais específicos (embarcados).
 Possibilita a virtualização de sistemas operacionais 32bit e 64-bit, tanto em processadores Intel quanto AMD.
• Pode ser totalmente em software (virtualização total);
• Pode usar recursos de hardware para virtualização (virtualização
assistida por hardware);
 Desenvolvido pela Oracle e disponibilizado sob licença
GPL.
http://www.virtualbox.org/
VirtualBox (2)
 Outras características:
• Portabilidade;
• Arquitetura simples;
• Não é necessário o suporte para virtualização assistida por
hardware.
• Guest Additions (adições de convidado);
• Suporte de hardware avançado (USB, discos, som, etc.);
• Suporte a pontos de restauração de sistema (snapshots);
• Acesso remoto via VRDP (desktop remoto);
VirtualBox (3)
 Sistemas hospedeiros suportados:
• Windows XP (32-bit), Windows Server 2003 (32-bit), Windows
Vista (32-bit e 64-bit), Windows Server 2008 (32-bit e 64-bit),
Windows 7 (32-bit e 64-bit);
• Apple Mac OS X: processador Intel como requisito.
• Linux (32-bit e 64-bit):
•
•
•
•
•
•
•
•
Debian GNU/Linux 3.1, 4.0 e 5.0;
Fedora Core 4 ao 11;
Gentoo Linux;
Redhat Enterprise Linux 4 e 5;
SUSE Linux 9 e 10, openSUSE 10.3, 11.0 e11.1
Ubuntu 6.06, 6.10, 7.04, 7.10, 8.04, 8.10, 9.04, 10.04 e 10.10.
Mandriva 2007.1, 2008.0 e 2009.1
Solaris: Open Solaris e Solaris 10.
VirtualBox (4)
 Sistemas visitantes suportados:
• DOS, Windows 3.X, Windows 95, Windows 98, Windows
ME, Windows NT 4.0, Windows 2000, Windows XP,
Windows Vista, Windows Server 2008, Windows 7;
• Linux 2.4 e 2.6;
• Solaris 10 e OpenSolaris;
• FreeBSD e OpenBSD;
• OS/2 Warp 4.5;
• Mac OS X e Mac OS X Server;
Princípios básicos (1)
 O sistema que roda o VirtualBox é denominado “host”
(sistema hospedeiro).
 O sistema virtual, instalado dentro do VirtualBox, é
denominado “guest” (sistema visitante).
 O VirtualBox é capaz de fornecer virtualização de duas
maneiras:
• Inteiramente em software:
• Todas as chamadas são interceptadas pelo VMM que fornece uma
abstração.
• Usando recursos assistidos por hardware, em processadores
especiais:
• IntelVT-x e AMD-V.
– ESTE SUPORTE DEVE SER HABILITADO NO BIOS.
Princípios básicos (2)
 Sistemas 64-bit como visitante:
• Se a arquitetura do hospedeiro for 64-bit pode-se instalar
sistemas 64-bit como visitante normalmente:
• Habilitar o suporte para virtualização assistida em hardware;
• Configurar a MV para utilizar este recurso;
• Se a arquitetura do hospedeiro for 32-bit, ainda pode-se
utilizar um sistema visitante 64-bit:
• Cria-se um overhead no MMV.
• Se as MVs forem criadas utilizando a interface gráfica,
muitas destas configurações são feitas automaticamente;
• MVs 64-bit só funciona adequadamente com virtualização
assistida em hardware.
Instalação (1)
 Existem diversos sistemas e maneiras para instalar o
VirtualBox (Windows, Mac Os X, Linux, etc.).
• A base será uma instalação no sistema Linux (Ubuntu), utilizando
um repositório de pacotes do VirtualBox.
• OBS.: para sistemas Linux é recomendável utilizar um gerenciador
de pacotes do sistema (apt, yum, urpmi, etc) por motivos de
manutenção da ferramenta;
 Antes de instalar, deve-se verificar algumas dependências:
• Pacote de headers (linux-headers) do kernel para a compilação
do módulo do VirtualBox.
• apt-get install linux-headers-$(uname -r)
• A versão do linux-headers deve ser a mesma do kernel em uso.
• Pacote DKMS
• apt-get install dkms
• É um pacote capaz de recompilar automaticamente drivers quando há
mudança de um kernel (MUITO IMPORTANTE).
Instalação (2)
Utilizando o sistema apt:
• Adicionar source oficial do VirtualBox no
arquivo /etc/apt/sources.list no Ubuntu 14.04:
• deb http://download.virtualbox.org/virtualbox/debian squeeze
contrib non-free
• Adicionar as chaves do repositório, atualizar base
e instalar:
usuario@maquina:~$ wget -q
https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key
add usuario@maquina:~$ apt-get update
usuario@maquina:~$ apt-get install virtualbox-4.3
Criando uma máquina virtual (1)
 Existem duas maneiras de criar máquinas virtuais:
• Usando uma interface gráfica (GUI):
• Mais rápido e prático;
• Configura automaticamente e corretamente diversos parâmetros,;
• Necessita de um ambiente gráfico.
• Usando linha de comando (CLI):
• Nada prático;
• Requer um esforço maior nas configurações mas fornece todos os
parâmetros para otimização das máquinas virtuais;
• Não necessita um ambiente gráfico (servidores);
– Nesse caso a máquina virtual é iniciada e pode ser
acessada via desktop remoto (RDP).
Criando uma máquina virtual (2)
VBox.log
Logs
VBox.log.1
VM1
$HOME
VirtualBox VMs
VM2
{0bf...8b}.vdi
Snapshots
2014…Z.sav
VM2.vbox
VM2.vbox-prev
VMn
VM2.vdi
Utilizando uma interface gráfica (GUI) (1)
Utilizando uma interface gráfica (GUI) (2)
Utilizando uma interface gráfica (GUI) (3)
 Informações requisitadas na criação da máquina
virtual:
• Nome da máquina virtual;
• Tipo de sistema operacional visitante:
• Utilizado para definir diversas otimizações para o sistema
visitante, além de habilitar algumas configurações tais como
virtualização assistida para sistemas 64-bit.
• Quantidade de memória:
• Este espaço será reservado para o VirtualBox e não poderá
ser usado pelo sistema hospedeiro durante o tempo que a
máquina virtual executar.
– Portanto, cuidado ao definir a quantidade memória.
Utilizando uma interface gráfica (GUI) (4)
Utilizando uma interface gráfica (GUI) (5)
 Importante: o disco virtual é independente da máquina virtual. O disco é
“registrado” para uma máquina virtual e quando ela é apagada, o disco
virtual pode permanecer.
Utilizando uma interface gráfica (GUI) (6)
Utilizando uma interface gráfica (GUI) (7)
1
2
Utilizando uma interface gráfica (GUI) (8)
Interface do VirtualBox com a máquina virtual criada:
Utilizando uma interface gráfica (GUI) (9)
Visualização de opções da máquina virtual:
Utilizando uma interface gráfica (GUI) (10)
Visualização das opções de sistema:
Utilizando uma interface gráfica (GUI) (11)
Visualização das opções de rede:
Utilizando uma interface gráfica (GUI) (12)
Snapshots: permite salvar o estado de uma máquina
virtual.
3
2
1
4
Utilizando uma interface gráfica (GUI) (13)
Snapshots:
2
4
1



3
Restaurar snapshot;
Excluir snapshot; ou
Exibir detalhes do snapshot.
Utilizando uma interface gráfica (GUI) (14)
 Ao iniciar uma máquina virtual é possível acessá-la
clicando com o mouse dentro de sua janela.
 Para sair do controle dessa máquina virtual, existem
alguns atalhos de teclado:
• O padrão é o CTRL da direita.
• Retorna o mouse para o sistema hospedeiro.
Utilizando uma interface gráfica (GUI) (15)
 Para desligar uma máquina virtual
• Maneira convencional, desligando o sistema visitante:
• Fechando a janela da máquina virtual;
Utilizando linha de comando (CLI) (1)
 Command Line Interface (CLI): uma alternativa
para a interface gráfica é a utilização de comandos
para a criar e controlar máquinas virtuais.
 No VirtualBox o principal comando é o
VBoxManage.
 Tudo que é realizado no ambiente gráfico GUI,
também pode ser realizado através de CLI,
permitindo maior especificidade.
 Serão mostrados alguns passos básicos para a
criação de uma máquina virtual em CLI.
Utilizando linha de comando (CLI) (2)
 Para criar uma MV (arquivo xml utilizado pelo
VirtualBox) registrando-a para o usuário em
questão:
usuario@maquina:~$ VBoxManage createvm --name “Meu
Windows” --ostype “WindowsXP” --register
• --name: permite especificar o nome da máquina virtual.
• --ostype: permite especificar o tipo de sistema operacional.
Os tipos suportados podem ser vistos com o comando
“VBoxManage list ostypes”.
• --register: registra a máquina virtual criada para o ambiente
do VirtualBox do usuário.
Utilizando linha de comando (CLI) (3)
 Para modificar algumas configurações:
usuario@maquina:~$ VBoxManage modifyvm "Meu Windows" --memory
512 --vram 64 --acpi on --boot1 dvd --nic1 bridged -bridgeadapter1 eth0 --vrde on
• --memory: a quantidade de memória alocada para a máquina
virtual.
• --vram: a quantidade de memória de vídeo alocada para a
máquina virtual.
• --acpi: gerenciamento de energia.
• --boot1: primeiro dispositivo de boot, se houver mídia no
dispositivo.
• --dvd: indica o dispositivo no sistema hospedeiro.
• --nic1: insere uma interface de rede na máquina virtual, no modo
bridge (pode ser host-only e nat).
– --eth0: no caso de bridge, qual a interface do hospedeiro
utilizar.
• --vrde: habilita controle da MV por desktop remoto. Para uso
deste recurso é necessário instalar o pacote de extensão Oracle VM
VirtualBox Extension Pack junto ao VirtualBox.
Utilizando linha de comando (CLI) (4)
 Criando o disco virtual:
usuario@maquina:~$ VBoxManage createhd --filename
“HD_MeuWindows.vdi” --size 10000
• --filename: nome do arquivo que conterá o disco virtual.
• --size: tamanho em MB (10000 ≈ 10 GB).
 Precisamos anexar um disco a nossa máquina:
usuario@maquina:~$ VBoxManage storagectl "Meu
Windows" --name "SATA Controller" --add sata
 Vinculando o disco virtual criado com o disco anexado a
máquina virtual:
usuario@maquina:~$ VBoxManage storageattach “Meu
Windows” --storagectl "SATA Controller" --port 0 -device 0 --type hdd --medium <ENDEREÇO_HD_VDI>
Utilizando linha de comando (CLI) (5)
 Precisamos agora anexar uma mídia CD/DVD a nossa
máquina:
usuario@maquina:~$ VBoxManage storagectl “Meu
Windows” --name "IDE Controller" --add ide
 Vinculando uma imagem .iso à mídia anexada a
máquina virtual:
usuario@maquina:~$ VBoxManage storageattach “Meu
Windows” --storagectl "IDE Controller" --port 0 -device 0 --type dvddrive –medium <ENDEREÇO_IMAGEM_ISO>
Utilizando linha de comando (CLI) (6)
 Uma vez criada a máquina virtual, é possível iniciá-la.
 Como nesse caso é utilizado um ambiente sem terminal
gráfico, o comando utilizado para iniciar uma MV é o
VBoxHeadless:
usuario@maquina:~$ VBoxHeadless -startvm “Meu Windows”
Observações:
• Ao iniciar a MV, o efeito é o de dar boot por meio da
imagem .iso associada.
• Como acessar a MV?
• Para o primeiro acesso a melhor opção é por Desktop
remoto, entretanto, é necessário que o VirtualBox contenha o
pacote de extensão Oracle VM VirtualBox Extension Pack.
Utilizando linha de comando (CLI) (7)
 O acesso às máquinas virtuais pode ser realizado
com ferramentas de desktop remoto que utilizam o
protocolo RDP:
• O Windows possui um utilitário nativo de desktop remoto.
• No linux, recomenda-se o rdesktop.
usuario@maquina:~$ rdesktop-vrdp <IP>:<Porta>
 Para desligar a máquina virtual:
usuario@maquina:~$ VBoxManage controlvm “Meu
Windows” poweroff
Guest Additions (1)
 O Guest Additions é um pacote de ferramentas que
otimizam um sistema visitante.
• Deve ser instalado em cada sistema visitante.
• Drivers de dispositivos.
• Aplicações do sistema.
 Melhoram não só a performance, mas também a
usabilidade.
• Melhora o vídeo;
• Permitem várias ações com o mouse.
 Pode ser baixado no site do próprio VirtualBox como um
arquivo .ISO.
 No Linux Ubuntu, pode-se instalar o pacote virtualboxguest-additions que já possui a imagem .ISO.
•
apt-get install virtualbox-guest-additions
Guest Additions (2)
 Instalação em sistema visitante Windows:
• Carregar a imagem (.iso) do Guest Additions:
• Caso não exista a opção, escolher manualmente a .ISO:
Guest Additions (3)
 Seguir os passos como na instalação de qualquer
programa em Windows:
Guest Additions (4)
1
2
4
3
5
Guest Additions (5)
 Instalação em Windows:
Guest Additions (6)
 Instalação para sistema visitante Linux:
• Selecionar a imagem do Guest Additions igual ao processo
realizado no Windows;
• Montar o CD-ROM no sistema visitante:
root@bt:~# mount /media/cdrom1
root@bt:~# ls /media/cdrom1
...
autorun.sh
...
VBoxLinuxAdditions.run
...
root@bt:~# cd /media/cdrom1
Guest Additions (7)
 Depois de montada a imagem no sistema Linux
visitante:
root@bt:~#./VBoxLinuxAdditions.run
Uncompressing VirtualBox 4.0.6 Guest Additions for Linux...
VirtualBox Guest Additions installer
...
Do you wish to continue anyway? [yes or no]
• Ou utilizar o autorun:
root@bt:~#./autorun.sh
Guest Additions (8)
 Pastas compartilhada com GUI:
• Criar a pasta que será compartilhada no sistema
hospedeiro.
usuario@maquina:~$ mkdir pasta_hospedeiro
• Selecionar as opções da máquina virtual no VirtualBox:
2
1
Guest Additions (9)
 Criar a pasta compartilhada no sistema visitante:
2
1
3
4
Guest Additions (10)
 Acessar o local da pasta compartilhada no sistema visitante
Windows:
• \\Vboxsvr
1
2
 Acessar o local da pasta compartilhada no sistema visitante
Linux:
• sudo mount -t vboxsf -o uid=$UID,gid=$(id -g)
pasta_compartilhada pasta_visitante
• Monta a pasta compartilhada com permissão para o usuário.
• UUID e GID podem ser consultados com “id usuário”.
Guest Additions (11)
 Configurando uma pasta com CLI:
usuario@maquina:~$ mkdir ~/hospedeiro
usuario@maquina:~$ VBoxManage sharedfolder add “Meu Windows” -name “compartilhada” --hostpath “~/hospedeiro”
• --name: um nome para o compartilhamento, registrado na máquina
virtual (sistema visistante) em questão (podem existir várias pastas
compartilhadas).
• --hostpath: o caminho do diretório dentro do sistema hospedeiro.
• Estes compartilhamentos são acessados dentro do ambiente de
rede do sistema hospedeiro.
Disposições finais (1)
 Virtualização é um conceito antigo, mas também um
tema atual;
 É crescente a utilização de virtualização na área de
TI, notadamente na parte de infraestruturas;
 Atualmente existe um aumento do número de
soluções virtualizadas, tais como appliances;
 Torna-se visível uma mudança no paradigma de
vendas e implementação de soluções de TI;
Disposições finais (2)
 Entretanto, sempre há perda de desempenho;
 O MMV (hypervisor) e o Guest Addition é um
software e todo software está sujeito a falhas:
• Se o MMV estiver vulnerável, todas as máquinas virtuais
também estarão!
• Por exemplo:
• Sun VirtualBox Guest Additions Denial of Service
Vulnerability (16 de novembro de 2009).
Download