Você está na página 1de 11

19/12/12

Virtualizando com o OpenVZ | Blog do Scardini

Blog do Scardini
S mais um site de TI, Linux, Modelos Numricos,

Virtualizando com o OpenVZ


Publicado em 27 de setembro de 2010 1 Introduo O OpenVZ uma tecnologia de virtualizao para ambientes Linux que difere de outras por ser uma virtualizao a nvel de Sistema Operacional e no de Hardware. A virtualizao do OpenVZ baseada no sistema Linux com um kernel modificado. O OpenVZ cria containers (instncias virtuais do sistema operacional) que rodam em uma nica mquina fsica compartilhando o mesmo hardware, mas cada um deles se comportando como se fosse uma nova mquina com todos os componentes de softwares independentes do sistema hospedeiro. Por no virtualizar um hardware, os containers ficam restritos a sistemas Linux com um kernel compatvel com o kernel da mquina real. Mas em contra partida, h uma perda de desempenho de apenas de 1 a 3%, quando comparado com a utilizao de um servidor standalone. O OpenVZ licenciado sob a verso 2 da GPL, sendo um projeto da Parallels. A Parallels utiliza o OpenVZ como base da soluo Parallels Virtuozzo Containers, um software proprietrio produzido e fornecido pela Parallels. A nossa mquina real a ser virtualizada com o OpenVZ ser um CentOS verso 5.5 de 64 bits. Vamos criar dois containers com o OpenVZ. Este procedimento pode ser efetuado dentro da mquina virtual criada no post Criando uma Mquina Virtual com o VMware Player ou em uma maquina real com o CentOS instalado. possvel tambm utilizar outras distribuies Linux de sua preferncia, apenas observando as verses Linux/kernel suportadas pelo projeto OpenVZ. Se voc utilizar uma distribuio no baseada em rpm/yum, alguns passos sero diferentes dos apresentados aqui. Nossa estrutura de virtualizao apresentada no esquema abaixo:

scardini.net/?p=58

Estrutura de v irtualizao utilizada

Nvel de Virtualizao

Sistema Operacional

Tecnologia De Virtualizao VMware Player OpenVZ

Maquina Real 1 Nvel 2 Nvel


2 Mos a Obra

Windows 7 64-bits CentOS 5.5 64-bits CentOS 5.5 64-bits

O primeiro passo para instalar o OpenVZ baixar e instalar os softwares necessrios. Para nossa comodidade o projeto OpenVZ disponibiliza um repositrio para YUM/RPM. Ento basta adicionar este repositrio e efetuar toda a instalao via YUM. Primeiro baixe a configurao do repositrio:

Cdigo

cd /etc/yum.repos.d/ wget http://download.openvz.org/openvz.repo Verifique o arquivo baixado, por padro ele contm uma srie de definies de repositrios para vrias verses de sistema, no nosso caso devemos ativar os seguintes itens: 1) RHEL5-based kernel 2) OpenVZ utilities. Exemplo do arquivo openvz.repo:

Cdigo

[openvz-utils] name=OpenVZ utilities

19/12/12

Virtualizando com o OpenVZ | Blog do Scardini

#baseurl=http://download.openvz.org/current/ mirrorlist=http://download.openvz.org/mirrors-current enabled=1 gpgcheck=1 gpgkey=http://download.openvz.org/RPM-GPG-Key-OpenVZ # In addition to openvz-utils repo, you have to enable one the the # kernel repositories below. In the stock config, openvz-kernel-rhel5 # is enabled; you might want to change this. # Stable bracnhes [openvz-kernel-rhel5] name=OpenVZ RHEL5-based kernel #baseurl=http://download.openvz.org/kernel/branches/rhel5-2.6.18/current/ mirrorlist=http://download.openvz.org/kernel/mirrors-rhel5-2.6.18 enabled=1 gpgcheck=1 gpgkey=http://download.openvz.org/RPM-GPG-Key-OpenVZ [openvz-kernel-rhel4] name=OpenVZ RHEL4-based kernel #baseurl=http://download.openvz.org/kernel/branches/rhel4-2.6.9/current/ mirrorlist=http://download.openvz.org/kernel/mirrors-rhel4-2.6.9 enabled=0 gpgcheck=1 gpgkey=http://download.openvz.org/RPM-GPG-Key-OpenVZ # Testing branch [openvz-kernel-rhel5-testing] name=OpenVZ RHEL5-based testing kernel #baseurl=http://download.openvz.org/kernel/branches/rhel5-2.6.18-testing/current/ mirrorlist=http://download.openvz.org/kernel/mirrors-rhel5-2.6.18-testing enabled=0 gpgcheck=1 gpgkey=http://download.openvz.org/RPM-GPG-Key-OpenVZ # Development branches [openvz-kernel-2.6.32] name=OpenVZ 2.6.32 kernel #baseurl=http://download.openvz.org/kernel/branches/2.6.32/current mirrorlist=http://download.openvz.org/kernel/mirrors-2.6.32 enabled=0 gpgcheck=1 gpgkey=http://download.openvz.org/RPM-GPG-Key-OpenVZ [openvz-kernel-2.6.27] name=OpenVZ 2.6.27 kernel #baseurl=http://download.openvz.org/kernel/branches/2.6.27/current mirrorlist=http://download.openvz.org/kernel/mirrors-2.6.27 enabled=0 gpgcheck=1 gpgkey=http://download.openvz.org/RPM-GPG-Key-OpenVZ
scardini.net/?p=58 3/11

19/12/12

Virtualizando com o OpenVZ | Blog do Scardini

# Old/obsoleted branches [openvz-kernel-2.6.26] name=OpenVZ 2.6.26 kernel #baseurl=http://download.openvz.org/kernel/branches/2.6.26/current mirrorlist=http://download.openvz.org/kernel/mirrors-2.6.26 enabled=0 gpgcheck=1 gpgkey=http://download.openvz.org/RPM-GPG-Key-OpenVZ [openvz-kernel-2.6.24] name=OpenVZ 2.6.24 kernel #baseurl=http://download.openvz.org/kernel/branches/2.6.24/current mirrorlist=http://download.openvz.org/kernel/mirrors-2.6.24 enabled=0 gpgcheck=1 gpgkey=http://download.openvz.org/RPM-GPG-Key-OpenVZ [openvz-kernel-2.6.22] name=OpenVZ 2.6.22 kernel #baseurl=http://download.openvz.org/kernel/branches/2.6.22/current mirrorlist=http://download.openvz.org/kernel/mirrors-2.6.22 enabled=0 gpgcheck=1 gpgkey=http://download.openvz.org/RPM-GPG-Key-OpenVZ [openvz-kernel-2.6.20] name=OpenVZ 2.6.20 kernel #baseurl=http://download.openvz.org/kernel/branches/2.6.20/current mirrorlist=http://download.openvz.org/kernel/mirrors-2.6.20 enabled=0 gpgcheck=1 gpgkey=http://download.openvz.org/RPM-GPG-Key-OpenVZ [openvz-kernel-2.6.18] name=OpenVZ 2.6.18 kernel #baseurl=http://download.openvz.org/kernel/branches/2.6.18/current mirrorlist=http://download.openvz.org/kernel/mirrors-2.6.18 enabled=0 gpgcheck=1 gpgkey=http://download.openvz.org/RPM-GPG-Key-OpenVZ [openvz-kernel-2.6.16] name=OpenVZ 2.6.16 kernel #baseurl=http://download.openvz.org/kernel/branches/2.6.16/current mirrorlist=http://download.openvz.org/kernel/mirrors-2.6.16 enabled=0 gpgcheck=1 gpgkey=http://download.openvz.org/RPM-GPG-Key-OpenVZ [openvz-kernel-2.6.8] name=OpenVZ 2.6.8 kernel #baseurl=http://download.openvz.org/kernel/branches/2.6.8/current
scardini.net/?p=58 4/11

19/12/12

Virtualizando com o OpenVZ | Blog do Scardini

mirrorlist=http://download.openvz.org/kernel/mirrors-2.6.8 enabled=0 gpgcheck=1 gpgkey=http://download.openvz.org/RPM-GPG-Key-OpenVZ Importe a chave (key) do repositrio

Cdigo

rpm --import http://download.openvz.org/RPM-GPG-Key-OpenVZ Verifiique as opes de kernel do OpenVZ disponveis para instalao no seu sistema com o comando:

Cdigo

yum search ovzkernel Voc ter uma resposta semelhante a esta:

[ r o o t @ c e n t o s/ ] #y u ms e a r c ho v z k e r n e l L o a d e dp l u g i n s :f a s t e s t m i r r o r L o a d i n gm i r r o rs p e e d sf r o mc a c h e dh o s t f i l e *a d d o n s :m i r r o r . u m o s s . o r g *b a s e :m i r r o r s . u c r . a c . c r *e x t r a s :m i r r o r . c o g e n t c o . c o m *o p e n v z k e r n e l r h e l 5 :d o w n l o a d . o p e n v z . o r g *o p e n v z u t i l s :d o w n l o a d . o p e n v z . o r g *u p d a t e s :y u m . s i n g l e h o p . c o m = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =M a t c h e d :o v z k e r n e l= = = = = = = = = = = = = = = = = = = = = = = = = = o v z k e r n e l . i 6 8 6:V i r t u o z z oL i n u xk e r n e l( t h ec o r eo ft h eL i n u xo p e r a t i n gs y s t o v z k e r n e l . x 8 6 _ 6 4:V i r t u o z z oL i n u xk e r n e l( t h ec o r eo ft h eL i n u xo p e r a t i n gs y o v z k e r n e l P A E . i 6 8 6:On c l e od oL i n u xc o m p i l a d op a r am q u i n a sd ec a p a c i d a d e o v z k e r n e l P A E d e b u g . i 6 8 6:T h eL i n u xP A Ek e r n e lc o m p i l e dw i t hd e b u gc o n f i g o v z k e r n e l P A E d e v e l . i 6 8 6:P a c o t ed ed e s e n v o l v i m e n t op a r ac o m p i l a rm d u l o sd o :k e r n e lc o mok e r n e lP A Ec o r r e s p o n d e n t e . o v z k e r n e l d e b u g . i 6 8 6:T h eL i n u xk e r n e lc o m p i l e dw i t hd e b u gc o n f i g o v z k e r n e l d e b u g . x 8 6 _ 6 4:T h eL i n u xk e r n e lc o m p i l e dw i t hd e b u gc o n f i g o v z k e r n e l d e v e l . i 6 8 6:P a c o t ed ed e s e n v o l v i m e n t op a r ac o m p i l a rm d u l o s :c o r r e s p o n d e n t e sa ok e r n e l . o v z k e r n e l d e v e l . x 8 6 _ 6 4:P a c o t ed ed e s e n v o l v i m e n t op a r ac o m p i l a rm d u l o s :c o r r e s p o n d e n t e sa ok e r n e l . o v z k e r n e l e n t . i 6 8 6:T h eL i n u xk e r n e lc o m p i l e df o rh u g em e mc a p a b l em a c h i n e s . o v z k e r n e l e n t d e b u g . i 6 8 6:T h eL i n u xe n tk e r n e lc o m p i l e dw i t hd e b u gc o n f i g o v z k e r n e l e n t d e v e l . i 6 8 6:D e v e l o p m e n tp a c k a g ef o rb u i l d i n gk e r n e lm o d u l e st o :t h ee n tk e r n e l . o v z k e r n e l x e n . i 6 8 6:Ok e r n e ld oL i n u xc o m p i l a d op a r ao p e r a e sc o mm q u i n a s :v i r t u a i sX e n o v z k e r n e l x e n . x 8 6 _ 6 4:Ok e r n e ld oL i n u xc o m p i l a d op a r ao p e r a e sc o mm q u i n a :v i r t u a i sX e n
scardini.net/?p=58 5/11

19/12/12

Virtualizando com o OpenVZ | Blog do Scardini

o v z k e r n e l x e n d e v e l . i 6 8 6:P a c o t ed ed e s e n v o l v i m e n t op a r ac o m p i l a rm d u l o s :c o r r e s p o n d e n t e sa ok e r n e l . o v z k e r n e l x e n d e v e l . x 8 6 _ 6 4:P a c o t ed ed e s e n v o l v i m e n t op a r ac o m p i l a rm d u l o s :c o r r e s p o n d e n t e sa ok e r n e l . [ r o o t @ c e n t o s/ ] #

Podemos ver varias opes de kernel com suporte a OpenVZ. Para entender o que significa cada um dele basta entender os atributos anexados ao nome ovzkernel: i686 Kernel para arquitetura de 32 bits x86_64 Kernel para arquitetura de 64 bits PAE Kernel para arquitetura de 32 bits com Physical Address Extension (PAE) ativo. (>4GB RAM) ent Kernel com suporte a grande capacidade de memria xen Kernel com suporte a tecnologia de virtualizao XEN devel headers para compilao de mdulos do kernel correspondente. Por exemplo: ovzkernel-devel.x86_64 ovzkernel.x86_64 debug Kernel compilado com smbolos de debug Para a minha mquina vamos instalar o kernel ovzkernel.x86_64 (opo de 64 bits), e os headers ovzkernel-devel.x86_64 do mesmo kernel. No seu caso voc deve escolher o kernel adequeado para o seu sistema dentre as opes retornadas no comando acima. Aps escolher o kernel, proceda a instalao do mesmo:

Cdigo

yum install ovzkernel.x86_64* yum install ovzkernel-devel.x86_64** *ovzkernel.x86_64 deve ser substituido pelo kernel adequado para seu sistema **ovzkernel-devel.x86_64 mdulo necessrio para compilar mdulos do kernel (opcional) Agora Vamos preceder algumas alteraes na configurao da mquina para o perfeito funcionamento do kernel OpenVZ que instalamos. Primeiro vamos verificar se o kernel padro o novo kernel instalado, para isto abra o arquivo grub.conf :

Cdigo

vim /etc/grub.conf

scardini.net/?p=58

6/11

19/12/12

Virtualizando com o OpenVZ | Blog do Scardini

Configurao de boot da m quina

Se necessrio altere a propriedade default para selecionar o kernel OpenVZ instalado. Na imagem acima est selecionada a entrada de ndice 0 (zero) da lista (kernel destacado em laranja). Desative o SELinux:

Cdigo

vim /etc/selinux/config Mude a varivel SELINUX para disabled:

Cdigo

# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # # # enforcing - SELinux security policy is enforced. permissive - SELinux prints warnings instead of enforcing. disabled - SELinux is fully disabled.

SELINUX=disabled # SELINUXTYPE= type of policy in use. Possible values are: # # targeted - Only targeted network daemons are protected. strict - Full SELinux protection.

SELINUXTYPE=targeted # SETLOCALDEFS= Check local definition changes


scardini.net/?p=58 7/11

19/12/12

Virtualizando com o OpenVZ | Blog do Scardini

SETLOCALDEFS=0 Faa uma cpia do arquivo sysctl.conf e em seguida edite o original:

Cdigo

cp -f /etc/sysctl.conf /etc/sysctl.conf.bkp vim /etc/sysctl.conf O original deve ficar assim:

Cdigo

net.ipv4.ip_forward = 1 net.ipv4.conf.default.proxy_arp = 0 net.ipv4.conf.all.rp_filter = 1 kernel.sysrq = 1 net.ipv4.conf.default.send_redirects = 1 net.ipv4.conf.all.send_redirects = 0 Instale as ferramentas de gerenciamento do OpenVZ:

Cdigo

yum install vzctl vzquota Confirme a instalao dos pacotes e das dependncias. Reinicie o CentOS. 3 Criando Nossos Containers Aps a reinicializao do sistema, sua mquina estar pronta para o uso do OpenVZ. Antes de iniciarmos a criao do nosso primeiro container, vamos entender um pouco mais sobre o OpenVZ. Ao contrrio de tantas outras tecnologias que virtualizam o hardware, o OpenVZ virtualiza um espao de software, e em consequencia disto a instalao de um sistema operacional nos containers no seguem uma instalao padro a partir de uma mdia. Cada container criado a partir de um template do sistema desejado. Estes templates podem ser obtidos a partir no site do projeto OpenVZ ou voc pode criar o seu prprio template. Os templates pre-criados fornecidos pelo projeto OpenVZ pode ser encontrados aqui: http://download.openvz.org/template/precreated/

8/11

19/12/12

Virtualizando com o OpenVZ | Blog do Scardini

Voc tambm poder encontrar templetes criados por contribuio da comunidade aqui: http://download.openvz.org/contrib/template/precreated/ Para nossos containers vamos baixar um template do CentOS 5, disponvel no seguinte link: wget http://download.openvz.org/template/precreated/centos-5-x86_64.tar.gz Cada template baixado, deve ser salvo na pasta: /vz/template/cache Vamos ento baixar nosso template:

Cdigo

cd /vz/template/cache wget http://download.openvz.org/template/precreated/centos-5-x86_64.tar.gz Aps baixar nosso template, vamos criar o nosso primeiro container:

Cdigo

vzctl create 101 \ --ostemplate centos-5-x86_64 \ --conf basic \ --ipadd 10.0.0.101 \ --hostname c101.localhost Com isto nosso primeiro container foi criado. Atribuimos a ele o ID 101. Utilizamos como template o centos-5-x86_64 baixado anteriomente (centos-5-x86_64.tar.gz). Selecionamos a configurao bsica de hardware (basic) e atribuimos o ip 10.0.0.101 para nosso container. Ainda no comando de criao atribuimos para o container o nome c101.localhost. Vamos agora prosseguir com a configurao de nosso container recm criado. Vamos atribuir um nome, um servidor de nomes e uma cota de disco:

Cdigo

vzctl set 101 \ --name c101 \ --nameserver "192.168.226.129" \ --diskspace 10G:10G \ --save Com isto concluimos o nosso primeiro container. Vamos criar nosso segundo container:

scardini.net/?p=58

9/11

19/12/12

Cdigo

vzctl create 102 \ --ostemplate centos-5-x86_64 \ --conf basic \ --ipadd 10.0.0.102 \ --hostname c102.localhost vzctl set 102 \ --name c102 \ --nameserver "192.168.226.129" \ --diskspace 10G:10G \ --save Com os containers criados, vamos aos comandos bsicos de manipulao dos memsos: Para iniciar ( ligar ) um container: vzctl start ID Para entrar em container: vzctl enter 101 ou ssh ip_do_container para parar um container: vzctl stop ID para destruir um container: vzctl destroy ID para definir a senha do root nos containers criados: vzctl set ID userpasswd root:nova_senha save Em todos os comando o ID deve ser substituido pelo ID do container desejado. No nosso caso 101 ou 102. Publicado em Linux e Afins por Cristiano Scardini. Marque Link Permanente [http://scardini.net/?p=58] .

scardini.net/?p=58

10/11

19/12/12

Virtualizando com o OpenVZ | Blog do Scardini

Comentrios encerrados.

scardini.net/?p=58

11/11