PowerPoint Presentation - Part I: Introductionadriano/aulas/topicos/2014/3-topic... · criação de...

64
Virtualização Tópicos em Sistemas de Computação 2014 Prof. Dr. Adriano Mauro Cansian [email protected] Estagiário Docente: Vinícius Oliveira [email protected] Conceitos e Prática

Transcript of PowerPoint Presentation - Part I: Introductionadriano/aulas/topicos/2014/3-topic... · criação de...

Virtualização

Tópicos em Sistemas de Computação – 2014

Prof. Dr. Adriano Mauro Cansian

[email protected]

Estagiário Docente: Vinícius Oliveira

[email protected]

Conceitos e Prática

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 32-

bit 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)

$HOME VirtualBox VMs

VM1

VM2

VMn

VM2.vbox

VM2.vbox-prev

VM2.vdi

Snapshots

Logs

{0bf...8b}.vdi

2014…Z.sav

VBox.log

VBox.log.1

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.

1 2 3

4

Utilizando uma interface gráfica (GUI) (13)

Snapshots:

Restaurar snapshot;

Excluir snapshot; ou

Exibir detalhes do snapshot.

1

2

3

4

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:

• --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.

usuario@maquina:~$ VBoxManage createvm --name “Meu

Windows” --ostype “WindowsXP” --register

Utilizando linha de comando (CLI) (3) Para modificar algumas configurações:

• --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.

usuario@maquina:~$ VBoxManage modifyvm "Meu Windows" --memory

512 --vram 64 --acpi on --boot1 dvd --nic1 bridged --

bridgeadapter1 eth0 --vrde on

Utilizando linha de comando (CLI) (4)

Criando o disco virtual:

• --filename: nome do arquivo que conterá o disco virtual.

• --size: tamanho em MB (10000 ≈ 10 GB).

Precisamos anexar um disco a nossa máquina:

Vinculando o disco virtual criado com o disco anexado a

máquina virtual:

usuario@maquina:~$ VBoxManage createhd --filename

“HD_MeuWindows.vdi” --size 10000

usuario@maquina:~$ VBoxManage storagectl "Meu

Windows" --name "SATA Controller" --add sata

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:

Vinculando uma imagem .iso à mídia anexada a

máquina virtual:

usuario@maquina:~$ VBoxManage storagectl “Meu

Windows” --name "IDE Controller" --add ide

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:

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.

usuario@maquina:~$ VBoxHeadless -startvm “Meu Windows”

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.

Para desligar a máquina virtual:

usuario@maquina:~$ rdesktop-vrdp <IP>:<Porta>

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 virtualbox-guest-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

5

4

3

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:

• Ou utilizar o autorun:

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]

root@bt:~#./autorun.sh

Guest Additions (8)

Pastas compartilhada com GUI:

• Criar a pasta que será compartilhada no sistema

hospedeiro.

• Selecionar as opções da máquina virtual no VirtualBox:

usuario@maquina:~$ mkdir pasta_hospedeiro

1

2

Guest Additions (9)

Criar a pasta compartilhada no sistema visitante:

1

2

4

3

Guest Additions (10)

Acessar o local da pasta compartilhada no sistema visitante Windows: • \\Vboxsvr

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”.

1

2

Guest Additions (11)

Configurando uma pasta com CLI:

• --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.

usuario@maquina:~$ mkdir ~/hospedeiro

usuario@maquina:~$ VBoxManage sharedfolder add “Meu Windows” --

name “compartilhada” --hostpath “~/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).