{"id":4182,"date":"2015-11-02T11:32:34","date_gmt":"2015-11-02T13:32:34","guid":{"rendered":"https:\/\/www.viazap.com.br\/?p=4182"},"modified":"2015-11-01T02:34:47","modified_gmt":"2015-11-01T04:34:47","slug":"projeto-xen-visao-geral","status":"publish","type":"post","link":"https:\/\/blog.clusterweb.com.br\/?p=4182","title":{"rendered":"PROJETO XEN &#8211; VIS\u00c3O GERAL"},"content":{"rendered":"<h1>CONCEITOS GERAIS<\/h1>\n<p>&nbsp;<\/p>\n<div>NOTA: Esse artigo \u00e9 uma tradu\u00e7\u00e3o livre (com notas do tradutor) da documenta\u00e7\u00e3o dispon\u00edvel em<a href=\"http:\/\/wiki.xenproject.org\/wiki\/Xen_Overview\" target=\"_blank\" rel=\"nofollow\">http:\/\/wiki.xenproject.org\/wiki\/Xen_Overview<\/a>.<\/p>\n<p>Um <em>hypervisor<\/em> \u00e9 um software de computador, um firmware ou hardware sobre o qual \u00e9 poss\u00edvel criar e executar m\u00e1quinas virtuais. O hypervisor tamb\u00e9m \u00e9 conhecido como VMM &#8211; Monitor de M\u00e1quinas Virtuais (em ingl\u00eas). A m\u00e1quina real onde o hypervisor \u00e9 executado \u00e9 chamada de m\u00e1quina hospedeira (host); as m\u00e1quinas virtualizadas s\u00e3o chamadas de visitantes (guest). De acordo com [1], hypervisores s\u00e3o classificados em:<\/p>\n<p>Tipo-1 &#8211; Nativo ou &#8220;Bare Metal&#8221;, s\u00e3o os hypervisores que executam diretamente sobre o hardware, assumindo diretamente seu controle e gerenciando os sistemas operacionais visitantes. Um visitante \u00e9 executado como um processo do hospedeiro.<\/p>\n<p>Tipo-2 &#8211; Hypervisores hospedados (hosted) s\u00e3o hypervisores que executam sobre um sistema operacional e s\u00e3o executados como uma aplica\u00e7\u00e3o do espa\u00e7o usu\u00e1rio. O tipo-2 cria uma abstra\u00e7\u00e3o sobre o sistema operacional do hospedeiro que permite compartilhar recursos de hardware. S\u00e3o exemplos de hypervisores do tipo-2: Virtualbox e VMWare Workstation.<\/p>\n<p>Atualmente, essas duas tecnologias se confundem em ambientes que n\u00e3o s\u00e3o totalmente claros: como o KVM &#8211; Kernel-based Virtual Machine &#8211; e o FreeBSD bhyve que s\u00e3o m\u00f3dulos do kernel que efetivamente convertem sistemas do tipo-2 em sistemas do tipo-1.<br \/>\n<!--more--><br \/>\nVirtualiza\u00e7\u00e3o n\u00e3o \u00e9 uma ci\u00eancia nova, sua origem remonta ao final dos anos 1960 quando as primeiras implementa\u00e7\u00f5es foram feitas em computadores de grande porte (mainframes) da IBM. Os maiores avan\u00e7os ocorreram no final da d\u00e9cada de 1970, principalmente com o avan\u00e7o da mem\u00f3ria compartilhada e a virtualiza\u00e7\u00e3o dos processos de mem\u00f3ria.<\/p>\n<p>Com a expans\u00e3o da capacidade do hardware dom\u00e9stico essa caracter\u00edstica chegou aos PCs por volta do ano 2005 com a inclus\u00e3o de caracter\u00edsticas especiais em hardware (v\u00e1rios n\u00facleos (dual core) e features de virtualiza\u00e7\u00e3o no processador). Avan\u00e7os em software como o SMP &#8211; Multi-Processamento Sim\u00e9trico tamb\u00e9m tornaram poss\u00edvel a virtualiza\u00e7\u00e3o em PCs dom\u00e9sticos.<\/p>\n<p>Sistemas de c\u00f3digo aberto do tipo Unix tiveram grande influ\u00eancia no desenvolvimento da virtualiza\u00e7\u00e3o, pois para executar um sistema virtualizado s\u00e3o necess\u00e1rias v\u00e1rias modifica\u00e7\u00f5es em seu c\u00f3digo fonte. Grandes fabricantes como Oracle, IBM, HP e SGI trabalham juntos no desenvolvimento da virtualiza\u00e7\u00e3o e utilizam intensamente esses processos como produtos comerciais, hospedando sistemas na nuvem (cloud computing).<\/p>\n<p>A partir de 2005 fabricantes de processadores Intel e AMD inclu\u00edram caracter\u00edsticas (features) em seus processadores que implementam a virtualiza\u00e7\u00e3o em hardware. Na Intel esse recurso \u00e9 chamado de VT-x (Vanderpool) e na AMD \u00e9 chamado de AMD-v (Pac\u00edfica). Produtos em software como VMWare e VirtualBox ficarm populares no final dos anos 2000. A Microsoft entrou no jogo em 2008 com o Hyper-V (Viridian).<\/p>\n<p>Atualmente, a virtualiza\u00e7\u00e3o avan\u00e7a em dire\u00e7\u00e3o aos sistemas embarcados, principalmente, sobre a arquitetura ARM que muitos acreditam ser a sucessora da arquitetura X86. Os microprocessadores embarcados passaram a atuar como virtualizadores em micro escala.<\/p><\/div>\n<div>\n<h1>O QUE \u00c9 O PROJETO HYPERVISOR XEN<\/h1>\n<p>O projeto Xen \u00e9 um hypervisor em c\u00f3digo aberto do tipo-1 ou bare metal. Xen torna poss\u00edvel executar v\u00e1rias inst\u00e2ncias de sistemas operacionais, em paralelo, sobre o mesmo hardware. Xen \u00e9 o \u00fanico hypervisor do tipo-1 sobre c\u00f3digo aberto (carece de confirma\u00e7\u00e3o).<\/p>\n<p>As principais caracter\u00edsticas de Xen s\u00e3o:<\/p>\n<ul>\n<li>M\u00ednimo consumo de recursos (em torno de 1 MB por visitante) devido a sua arquitetura de microkernel e limitado acesso\/interface ao visistante.<\/li>\n<li>Robustez e seguran\u00e7a s\u00e3o prioridades da implementa\u00e7\u00e3o em detrimento de facilidades, especialmente quando comparado com outros hypervisores.<\/li>\n<li>Agn\u00f3stico em rela\u00e7\u00e3o ao sistema operacional hospedeiro. A maioria das instala\u00e7\u00f5es s\u00e3o feitas usando <a href=\"http:\/\/www.vivaolinux.com.br\/linux\/\">Linux<\/a> como hospedeiro, entretanto, outros sistemas (OpenSolaris e NetBSD) podem ser utilizados.<\/li>\n<li>Isolamento dos drivers. Xen permite que os drivers principais executem dentro da m\u00e1quina virtual. Se um drive quebrar ou fica comprometido, a VM pode ser rebootada sem afetar o sistema hospedeiro.<\/li>\n<li>Implementa virtualiza\u00e7\u00e3o completa (HVM). Os visitantes s\u00e3o otimizados para serem executados como m\u00e1quinas virtuais. Isso permite que os visitantes executem mais r\u00e1pido do que quando est\u00e3o usando extens\u00f5es de hardware reais.<\/li>\n<li>Se o visitante n\u00e3o pode implementar HVM, ainda assim, pode ser executado como um sistema paravirtualizado (PV).<\/li>\n<li>Arquitetura especialmente definida pela cria\u00e7\u00e3o do dom\u00ednio zero (dom0) que embarca todos os drivers necess\u00e1rios para o hardware, bem como uma pilha de ferramentas (toolstacks) para controlar as m\u00e1quinas virtuais (VMs).<\/li>\n<\/ul>\n<p>O dom\u00ednio zero controla os drivers e a pilha que gerencia a cria\u00e7\u00e3o de m\u00e1quinas virtuais, sua destrui\u00e7\u00e3o e configura\u00e7\u00e3o.<\/p>\n<h1>ARQUITETURA DO XEN<\/h1>\n<p>O diagrama a seguir representa a arquitetura do Xen. O Xen hypervisor \u00e9 executado diretamente sobre o hardware e possui a responsabilidade pela manipula\u00e7\u00e3o da CPU, mem\u00f3ria RAM e interrup\u00e7\u00f5es (de hardware?). Xen \u00e9 o primeiro programa executado ap\u00f3s a fase do bootloader (GRUB). Uma inst\u00e2ncia especial de sistema operacional \u00e9 executada sobre Xen com o nome de dom\u00ednio zero (dom0) ou VM-0. As demais m\u00e1quinas virtuais s\u00e3o chamadas visitantes (guest).<\/p>\n<div class=\"figura\"><a href=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/Xen-01.jpg\" target=\"_blank\" rel=\"nofollow\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/thumb_Xen-01.jpg\" alt=\"\" width=\"500\" height=\"269\" border=\"0\" \/><\/a><\/div>\n<h1>COMPONENTES<\/h1>\n<p>O hypervisor Xen \u00e9 extremamente pequeno (menos de 150 mil linhas de c\u00f3digo) e executa diretamente sobre o hardware gerenciando a CPU, a RAM e as interrup\u00e7\u00f5es. O hypervisor n\u00e3o tem conhecimento sobre processos de I\/O de rede e de disco.<\/p>\n<p>Dom\u00ednios visitantes ou VMs &#8211; s\u00e3o ambientes virtualizados, cada um executando seu pr\u00f3prio sistema operacional e aplica\u00e7\u00f5es. O hypervisor suporta dois tipos de virtualiza\u00e7\u00e3o: Paravirtualiza\u00e7\u00e3o (PV) e Virtualiza\u00e7\u00e3o Completa (HVM). Ambos visitantes podem ser utilizados ao mesmo tempo em um hypervisor. Uma categoria especial chamada de PV-on-HVM permite criar um &#8220;continuum&#8221; entre uma PV e uma HVM. Visitantes s\u00e3o completamente isolados do hardware, em outras palavras, eles n\u00e3o tem qualquer acesso direto ao hardware ou as funcionalidades de I\/O. Os visitantes s\u00e3o chamados de &#8220;dom\u00ednios sem privil\u00e9gios&#8221; &#8211; em ingl\u00eas &#8211; unprivileged domain ou DomU.<\/p>\n<p>O dom\u00ednio controlador ou Dom0 &#8211; \u00e9 uma m\u00e1quina virtual especializada que possui privil\u00e9gios especiais como a capacidade de acessar diretamente o hardware, manipular todos os acessos de I\/O e inteagir com as VMs. O dom0 exp\u00f5e uma interface de controle que acessa o mundo exterior das VMs. N\u00e3o \u00e9 poss\u00edvel usar Xen sem um dom0, pois tecnicamente dom0 \u00e9 a primeira m\u00e1quina virtual instalada.<\/p>\n<p>Ferramentas e Console &#8211; O dom0 possui uma pilha de controle (toolstack) que permite gerenciar as m\u00e1quinas virtuais. A pilha exp\u00f5e uma interface atrav\u00e9s de um console de comandos. Opcionalmente, \u00e9 poss\u00edvel usar uma aplica\u00e7\u00e3o gr\u00e1fica para gerenciar as VMs.<\/p>\n<p>Sistema Xen &#8211; O dom0 requer um kernel modificado com fun\u00e7\u00f5es Xen. Visitantes paravirtualizados requerem apenas fun\u00e7\u00f5es PV. Distribui\u00e7\u00f5es Linux que utilizam kernel mais recente s\u00e3o capacitadas a se tornar um dom0. Vers\u00f5es antigas somente podem ser visitantes PV.<\/p>\n<h1>TIPOS DE VISITANTES<\/h1>\n<p>1. Paravirtualiza\u00e7\u00e3o (PV) e Virtualiza\u00e7\u00e3o Assistida de Hardware (HVM) podem ser utilizadas ao mesmo tempo em um hospedeiro Xen. Os tipos de visitantes permitidos s\u00e3o definidos em tempo de compila\u00e7\u00e3o de Xen. PV ou Paravirtualiza\u00e7\u00e3o \u00e9 uma t\u00e9cnica introduzida originalmente por Xen e mais tarde adotada por outras plataformas de virtualiza\u00e7\u00e3o. Hospedeiros PV n\u00e3o requerem extens\u00f5es de virtualiza\u00e7\u00e3o (VT-x ou AMD-V), entretanto, os visitantes precisam de fun\u00e7\u00f5es PV ativas para que seu kernel e seus drivers se tornem cientes da exist\u00eancia de um hypervisor, dispensando emula\u00e7\u00f5es ou emula\u00e7\u00f5es virtuais de hardware. Sistemas como Linux, NetBSD, FreeBSD e OpenSolaris podem ser PV. No Linux, sistemas com kernel a partir de 2.6.24 podem ser PV.<\/p>\n<p>2. HVM ou virtualiza\u00e7\u00e3o completa utiliza extens\u00f5es do CPU hospedeiro para virtualizar os visitantes. HVM requer VT-x ou AMD-V para funcionar. O Xen utiliza Qemu para emular hardware de PC, incluindo a BIOS, os discos IDE, a controladora de v\u00eddeo VGA, as controladoras USB, de rede, etc. Virtualiza\u00e7\u00e3o completa d\u00e1 total desempenho na emula\u00e7\u00e3o. Visitantes em HVM n\u00e3o requerem qualquer tipo de suporte ou modifica\u00e7\u00e3o no kernel. Isso significa que o Janelas Willy Caolho Edition pode ser utilizado (mas quem faria isso?).<\/p>\n<p>3. PVHVM ou visitante com Performance, completamente virtualizado HVM podem usar drivers paravirtuais especiais (PVHVM ou PV-on-HVM) que s\u00e3o drivers PV otimizados para ambientes HVM; fazendo um bypass da emula\u00e7\u00e3o de disco e rede, o que d\u00e1 ao PV uma performance melhor em sistemas HVM nativos. Melhora o desempenho do Willy Caolho Edition. Visitantes com suporte PV automaticamente usam drivers PV otimizados.<\/p>\n<p>4. PVH ou DomU&#8217;s foi introduzido no Xen 4.5 como um dom0 com PVH (Linux e BSD) que essencialmente torna um visitante PV com drivers de boot e I\/O, capaz de usar HW virtualiza\u00e7\u00e3o por extens\u00f5es, sem necessidade de emula\u00e7\u00e3o. PVH \u00e9 um recurso experimental em Xen 4.4 e 4.5 e n\u00e3o pode ser utilizado em produ\u00e7\u00e3o. PVH fornece melhor desempenho em sistemas 64 bits atuais. Ativando pvh=1 no arquivo de configura\u00e7\u00e3o ativa PVH. O dom0 somente pode usar PVH em Xen 4.5.<\/p>\n<p>Xen possui suporte nativo em muitas distribui\u00e7\u00f5es Linux, principalmente Debian, Fedora e Ubuntu que podem ser utilizados como dom0. Em outros sistemas a quantidade de ajustes para fazer Xen funcionar \u00e9 enorme. Isso limita o uso somente por profissionais.<\/p>\n<p>Refer\u00eancias:<\/p>\n<p>[1] &#8211; <a href=\"https:\/\/en.wikipedia.org\/wiki\/Hypervisor\" target=\"_blank\" rel=\"nofollow\">https:\/\/en.wikipedia.org\/wiki\/Hypervisor<\/a><br \/>\n[2] &#8211; <a href=\"http:\/\/wiki.xenproject.org\/wiki\/Xen_Overview\" target=\"_blank\" rel=\"nofollow\">http:\/\/wiki.xenproject.org\/wiki\/Xen_Overview<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>CONCEITOS GERAIS &nbsp; NOTA: Esse artigo \u00e9 uma tradu\u00e7\u00e3o livre (com notas do tradutor) da documenta\u00e7\u00e3o dispon\u00edvel emhttp:\/\/wiki.xenproject.org\/wiki\/Xen_Overview. Um hypervisor \u00e9 um software de computador, um firmware ou hardware sobre o qual \u00e9 poss\u00edvel criar e executar m\u00e1quinas virtuais. O hypervisor tamb\u00e9m \u00e9 conhecido como VMM &#8211; Monitor de M\u00e1quinas Virtuais (em ingl\u00eas). A m\u00e1quina [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[91,1,730,830,79,725,42,51,439,545,495,514,68,271,501,127,548,691,107],"tags":[803,994,991,993,992],"class_list":["post-4182","post","type-post","status-publish","format-standard","hentry","category-banco-de-dados","category-viazap","category-clusterweb","category-debian","category-firewall","category-hospedagem","category-leitura-recomendada","category-linux-linuxrs","category-midia","category-nagios","category-profissional-de-ti","category-programacao","category-redes-2","category-seguranca-2","category-shell-script","category-sistemas-de-armazenamento","category-ubuntu-2","category-virtualizacao-2","category-xenserver","tag-clusterweb","tag-geral","tag-projeto","tag-visao","tag-xen"],"_links":{"self":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/4182","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4182"}],"version-history":[{"count":1,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/4182\/revisions"}],"predecessor-version":[{"id":4183,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/4182\/revisions\/4183"}],"wp:attachment":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4182"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4182"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4182"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}