Introdução à Computação em Nuvem
|
|
|
- Edson Aquino de Figueiredo
- 10 Há anos
- Visualizações:
Transcrição
1 Universidade Estadual de Campinas Faculdade de Engenharia Elétrica e de Computação Departamento de Computação e Automação Industrial Introdução à Computação em Nuvem Lucio Agostinho Rocha Campinas, SP Junho, 2013
2 2 1 Introdução Atualmente é comum que muitas aplicações sejam acessadas pela Internet e mantidas em datacenters. Essas aplicações são oferecidas de forma transparente para seus usuários, ou seja, com pouca (ou nenhuma) referência à infraestrutura física que as mantêm. A Computação em Nuvem (Cloud Computing) surge como um modelo de computação para acessar serviços oferecidos sob demanda, com transparência de localidade e provisão dinâmica de recursos (servidores, armazenamento, aplicações e quaisquer outros serviços) [1] [2]. Vaquero et al. [3] definem a Computação em Nuvem como: Um conjunto de recursos virtuais facilmente usáveis e acessíveis tais como hardware, plataformas de desenvolvimento e serviços. Estes recursos podem ser dinamicamente reconfigurados para se ajustarem a uma carga variável, permitindo a otimização do uso dos recursos. Este conjunto de recursos é tipicamente explorado através de um modelo pay-per-use com garantias oferecidas pelo provedor através de SLAs. (Tradução do autor) A Computação em Nuvem ganhou mais destaque quando passou a ser utilizada como um modelo empresarial. Existe uma grande diversidade de aplicações que podem executar na nuvem, cada uma delas com os mais diferentes requisitos. Em função disso, existe o desafio por parte dos provedores de serviços em atender aos requisitos desse conjunto diverso de aplicações. Nesse modelo, uma fatia do poder computacional da rede é oferecida, reduzindo os custos para fornecer uma infraestrutura interna para prover os serviços. Esse modelo também baseia-se na alocação de recursos apenas pelo período de utilização dos serviços contratados. Isso permite que as empresas façam cotações dinâmicas sobre os períodos de melhor custo x benefício para uso de tais serviços. Como exemplo, pode ser economicamente mais vantajosa a transferência de uma grande quantidade dados quando menos usuários utilizarem a rede do provedor de serviços. O NIST (National Institute of Standards and Technology) [4] é uma agência governamental do Departamento de Comércio dos Estados Unidos, que tem o objetivo de promover padrões de TIC com o objetivo de ampliar a segurança da informação. De acordo com a especificação do NIST [5], as seguintes características podem ser enumeradas: 1. Oferta de serviços sob demanda: alocação dinâmica dos serviços requisitados (resource pooling), sem interação humana com o provedor dos serviços; 2. Amplo acesso aos recursos computacionais: por meio de diversos protocolos padronizados, para uma grande variedade de dispositivos como computadores pessoais, laptops, dispositivos móveis, tablets, entre outros; 3. Resource Pooling: por meio de um modelo multi-locatário, recursos computacionais são oferecidos para múltiplos clientes. Existe uma abstração da localidade onde os serviços são oferecidos, com relação aos servidores, datacenters, ou mesmo região geográfica. Os recursos oferecidos incluem processamento de alto desempenho, armazenagem, largura de banda, memória, entre outros. 4. Elasticidade: os serviços devem ser alocados e desalocados rapidamente, apenas no decorrer da requisição do usuário. Para este, tem-se a ilusão de uma gama infinita de recursos disponíveis;
3 1 Introdução 3 5. Medição: a infraestrutura deve oferecer mecanismos para dinamicamente otimizar a disponibilidade de recursos com o uso de mecanismos de medição, gerência e controle do uso dos recursos computacionais oferecidos. Outras características comuns de ambientes que utilizam Computação em Nuvem [2] são: Escalabilidade: o aumento do número de usuários não implica em redução do desempenho da nuvem, ou seja, mais recursos são alocados internamente, ou de domínios parceiros para suprir a demanda e manter o desempenho. A oferta de recursos sob demanda viabiliza a oferta de serviços para um número maior de usuários. Os recursos serão alocados apenas pelo período contratado, reduzindo a subutilização da rede de serviços. Essa característica implica na elasticidade da oferta de recursos para muitos usuários concorrentes; Modelo pay-per-use: cobrança proporcional ao uso dos recursos. A Computação em Nuvem é um exemplo de utility computing (computação vista como uma utilidade) porque a oferta desses serviços é similar a outros tradicionais, onde o usuário paga pelo fornecimento de eletricidade, água, gás natural ou redes de telefonia; Virtualização: O usuário tem a ilusão de que interage com os recursos de um host real quando, na verdade, utiliza um ambiente abstrato que simula o acesso físico do host no qual estão hospedados. Na Computação em Nuvem um provedor de serviços pode participar de um ou mais modelos para a oferta de serviços em nuvem. Ainda assim, a administração do domínio é responsável por controlar a infraestrutura, sistema operacional, servidores, operações de persistência, e demais requisitos para a oferta de serviços para uma grande quantidade de usuários concorrentes. Os modelos para prestação de serviços em nuvem são os seguintes [6] [4]: IaaS (Infrastructure as a Service): destaca a importância da infraestrutura na provisão de serviços. O provedor é capaz de oferecer uma infraestrutura de armazenagem, processamento e demais recursos de hardware e software de maneira transparente para o usuário. O aluguel de máquinas virtuais de acordo com os requisitos do usuário quanto a CPU, memória, espaço em disco e largura de banda, é um exemplo de serviço do tipo IaaS. Exemplo de provedores: Amazon EC2 [7] e FlexiScale [8]; PaaS (Platform as a Service): destaca a importância do framework para o desenvolvimento de aplicações na nuvem. O usuário é capaz de desenvolver suas próprias aplicações, respeitando o modelo de desenvolvimento, comunicação, armazenagem, linguagens de programação e demais serviços oferecidos pelo framework da nuvem. Exemplo de provedores: Ning [9], BungeeLabs [10] e Microsoft Windows Azure Platform [11]; SaaS (Software as a Service): O provedor de serviços habilita a execução de aplicações para uso exclusivo do cliente, ou aplicações para uso do cliente fornecidas pelo próprio provedor ou terceiros, tais como aplicativos de empresariais, grupos de discussão, ferramentas para edição de sites e demais aplicações que são compartilhadas por um grande número de usuários, tais como formulários Web, ferramentas de suporte (Help Desk), workflows empresariais, entre outros. Exemplo de provedores: Zoho [12], Salesforce [13], Google Apps [14] e Facebook [15].
4 4 A infraestrutura da nuvem é oferecida em diversos níveis de abrangência, ou modelos de disponibilidade, de acordo com as finalidades da organização e de seus usuários [6] [4]: Nuvem Privada: centrada no domínio de uma organização. A motivação é não expôr publicamente interfaces para interação com serviços privados do domínio, mas sim fornecer acesso apenas para usuários e administradores que façam parte do domínio em questão; Nuvem Pública: disponível para uso público em geral, com interfaces públicas acessíveis pela Internet; Nuvem Comunitária: ambientes onde os participantes de uma comunidade específica compartilham de uma infraestrutura com aspectos comuns (por exemplo, relativo à segurança, padrões de comunicação, interfaces, etc.). Essa infraestrutura possui uma escala menor do que a nuvem pública, porém maior do que uma nuvem privada; Nuvem Híbrida: uma combinação de infraestruturas com modelos distintos (pública, privada, comunitária), onde cada infraestrutura se mantém independente das demais, porém compartilham serviços entre si, e têm a preocupação quanto à portabilidade das aplicações que executam nos diferentes domínios. A infraestrutura de rede é fundamental para aplicações que executam na nuvem. Na Computação em Nuvem cria-se um ambiente para suportar o desenvolvimento e a disponibilização de aplicações na Internet. Do ponto de visto do usuário, prioriza-se o esforço para a criação e uso de aplicações, mais do que a configuração e a atualização da infraestrutura física ou do conjunto de frameworks de suporte ao desenvolvimento. 2 Virtualização Em essência, a virtualização consiste em imitar um comportamento, seja por extensão ou substituição de um recurso por outro [16]. A virtualização também é definida como um sistema ou um método de dividir os recursos computacionais em múltiplos ambientes isolados [17]. O conceito de virtualização remonta à virtualização de recursos em sistemas operacionais. Como exemplo, soluções de alto nível como interfaces gráficas, bibliotecas e APIs são exemplos de recursos de software que tornam transparente para o usuário o acesso aos recursos de hardware, em especial, o acesso aos periféricos de entrada e saída, ou seja, cria-se a ilusão no sistema operacional de que se tem a interação direta com os recursos de hardware. Diz-se também que a virtualização é uma metodologia para dividir os recursos de um computador em múltiplos ambientes de execução conhecidos como máquinas virtuais, aplicando conceitos de particionamento, time-sharing, simulação completa ou parcial de máquina, emulação, QoS, entre outros [16]. Portanto, a virtualização é uma técnica para ocultar características físicas de recursos computacionais, da forma na qual os sistemas, aplicações e end users interagem com esses recursos. A virtualização remonta às décadas de 60 e 70, com a introdução da linguagem de programação Java e o uso comum de mainframes na época [16]. Com o uso de máquinas virtuais era possível executar e migrar aplicações legadas entre plataformas distintas, desde que houvesse uma versão da
5 2 Virtualização 5 máquina virtual para a plataforma alvo. A principal motivação era ampliar e melhorar a utilização e o compartilhamento de recursos nos mainframes. Com a redução do custo do hardware em meados da década de 80, ocorreu uma mudança do foco de processamento centralizado em mainframes para o processamento distribuído em microcomputadores. O modelo cliente-servidor foi estabelecido para a computação distribuída, reduzindo a necessidade da virtualização para a integração de recursos computacionais. A redução do custo de aquisição do hardware e do compartilhamento de informações fizeram a virtualização entrar em hibernação por alguns anos [18]. Apenas em meados da década de 90, com o aumento do poder de processamento do hardware e dos computadores pessoais (PCs), a virtualização voltou a ganhar destaque com produtos como o VMware [19], UML (User Mode Linux) [20], Xen [21], KVM (Kernel-based Virtual Machine) [22] e VirtualBox [23]. De certa forma, esses produtos trazem o conceito de virtualização como uma alternativa para executar diversos sistemas operacionais sem a necessidade de se aumentar proporcionalmente o número de hosts físicos que os mantêm. Isso implica em redução dos custos relativos à aquisição de hardware, infraestrutura física, consumo de energia, refrigeração, suporte e manutenção de vários hosts. A virtualização é recomendada para consolidar múltiplos servidores em um mesmo host, isolar diferentes aplicações de usuários em um mesmo host, executar/depurar softwares e sistemas operacionais construídos para uma arquitetura em outra, além de simplificar a instalação de infraestruturas de software em diferentes domínios, e testar aplicativos em hardwares não existentes. O sistema operacional que executa o software de virtualização é conhecido como Host. O sistema operacional virtualizado é conhecido como Guest. Múltiplos Guests podem executar no mesmo Host, sem interferência entre eles. O kernel do Host fornece a API para suportar múltiplos espaços do usuário, conhecidos como Virtual Environments, na VM Guest. Cada Guest possui a virtualização de arquivos, bibliotecas de sistema, usuários e grupos, árvore de processos (com PIDS virtualizados), rede virtualizada (Guests possuem seus próprios IP, tabelas de roteamento, e demais atributos de rede próprios). Com o crescente avanço da virtualização e do poder de processamento do hardware, fabricantes de processadores como a AMD [24] e a Intel [25] passaram a incluir no hardware de suas CPUs o suporte para a virtualização, com a finalidade de aumentar o desempenho das aplicações virtualizadas. A extensão nos processadores Intel recebe o nome de Intel VT (ou Vanderpool Technology). A AMD, por sua vez, desenvolveu a extensão AMD-V (ou Pacifica), também conhecida como AMD SVM (Secure Virtual Machine). O desempenho das aplicações virtualizadas é limitado pelo hardware que mantêm as máquinas virtuais, pela rede de comunicação e pelos mecanismos de emulação utilizados pelo software que gerencia essas aplicações. Os tipos de implementação mais comuns são [26]: Máquina virtual de processo: esse tipo de máquina virtual é um programa que executa em modo usuário (user mode) do sistema operacional. Em arquitetura de computadores [16] o conjunto de instruções geralmente é dividido em pelo menos duas categorias: instruções privilegiadas e não-privilegiadas. As instruções privilegiadas são reservadas para que programas com alto privilégio, como o sistema operacional, por exemplo, executem a manipulação de recursos de hardware (processador, memória principal, dispositivos de armazenamento, registradores de propósito especial, entre outros), entrada/saída e interrupções. Por outro lado, os programas de baixo privilégio podem executar apenas instruções de máquina não-privilegiadas. A arquitetura
6 6 x86 possui quatro níveis de privilégio, conhecidos como rings, numerados de 0 a 3, com o ring 0 ocupando o nível mais alto de prioridade. O sistema operacional executa no ring 0, em modo supervisor (supervisor mode) em ambientes não virtualizados. O ambiente da máquina virtual fornece instruções abstratas que precisam ser interpretadas para executar as instruções de máquina não-privilegiadas. No processo de interpretação ocorre a busca, decodificação e análise de instrução por instrução, antes de cada uma delas ser executada no sistema hospedeiro. Como exemplo, a JVM (Java Virtual Machine) é um exemplo de máquina virtual de processo. A Microsoft CLI (Common Language Infrastructure) [27], base do framework.net, é um outro exemplo de implementação de virtualização que possibilita o uso de diferentes linguagens de alto nível sem a necessidades de serem reescritas para a plataforma em que executam. O código compilado não corresponde a nenhuma arquitetura real específica, mas sim a uma máquina virtual definida de acordo com um ambiente que utiliza seu compilador e uma linguagem de alto nível. No entanto, é necessário que exista uma implementação da máquina virtual para cada arquitetura real sob a qual essa máquina executa. Virtual Appliance: são máquinas virtuais que possuem um conjunto de softwares (sistema operacional, base de dados, aplicativos, configuração de rede, entre outros) pré-configurados e prontos para o uso; Hypervisor 1, Monitor de Máquina Virtual (VMM (Virtual Machine Monitor)) ou Máquina Virtual de Sistema: uma camada de software entre o hardware e o sistema operacional da máquina virtual. Nessa abordagem o acesso aos recursos de hardware é protegido pela camada de software que mantém uma ou mais máquinas virtuais. Em razão disso, o hypervisor deve ser instanciado sempre que a máquina virtual for inicializada. O sistema operacional que executa nessas máquinas virtuais utiliza as instruções não-privilegiadas oferecidas pelo hypervisor. O hypervisor fornece os recursos de software para compartilhar a CPU com múltiplos sistemas operacionais [28]. Portanto, o hypervisor executa em supervisor mode e controla o acesso aos recursos compartilhados pelas máquinas virtuais. O escalonamento de recursos é feito de forma similar ao escalonamento de processos pelo sistema operacional, com a alocação de ciclos do processador para cada VM. Como uma VM executa em user mode, caso seja disparada uma intrução privilegiada na VM, o comportamento esperado pelo sistema operacional seria o de disparar uma interrupção, para um posterior tratamento por uma rotina de manipulação da interrupção, rotina essa que faz parte do sistema operacional. No entanto, o hypervisor precisa manipular essa interrupção, emulando a execução da instrução privilegiada. Hypervisors que executam diretamente sobre o hardware são conhecidos como tipo 1 (por exemplo, Xen); Hypervisors que precisam executar sobre um sistema operacional são chamados tipo 2 (por exemplo, VirtualBox). O hypervisor também é responsável por gerenciar a emulação de dispositivos, tais como processador, memória RAM, disco rígido, interfaces de entrada/saída tais como drive de CD/DVD, mouse, teclado, vídeo (quantida de bytes para a memória de vídeo), interfaces de rede, entre outros. 1 Nota: foi mantida a escrita original da palavra em inglês, por ser a mais usual. O plural também foi mantido de acordo com o original, em inglês (hypervisors).
7 2 Virtualização 7 As CPUs modernas suportam múltiplos níveis de privilégios de código, conhecidos como ring levels [29]. Apenas o código executando no nível de privilégio mais alto pode executar instruções privilegiadas. Os processadores Intel possuem 4 ring levels: 0 para o modo supervisor, utilizado pelo kernel do sistema operacional; 1 e 2 não são, a priori, utilizados pelo sistema operacional; 3 para aplicações (por exemplo, processos e threads) executadas no nível de usuário. Geralmente, o hypervisor executa no ring level 0, e o sistema operacional do Guest executa no ring level 1 (isso porque apenas as instruções que executam no nivel 0 podem executar instruções privilegiadas. Como as VMs geram instruções que não estão nesse nível, o truque é encaminhá-las para o hypervisor, que se encontra no nível 0 com mais alta prioridade). A execução de todo o sistema operacional Guest em um ring maior do que o 0 é conhecido como ring de-privileging. Essa técnica implica em algumas particularidades para o correto tratamento de instruções, com maiores detalhes em [30]. Como qualquer outra tecnologia, a virtualização possui uma nomenclatura própria para distinguir os seus componentes: Máquina Virtual: é uma camada de software que simula um computador real (físico) e que é capaz de executar instruções como se fosse a máquina física. De acordo com [31], existem dois tipos para essa VM: 1) Máquina virtual de sistema: possui uma plataforma completa de sistema que suporta a execução de um sistema operacional. 2) Máquina virtual de processo: fornece abstrações e recursos para executar um único processo. Computador Host (Hospedeiro): é aquele que utiliza a virtualização de software para executar máquinas virtuais; Sistema Operacional Hóspede (Guest Operating System) é um sistema operacional que executa em uma máquina virtual. A conexão em rede entre máquinas virtuais é baseada em interfaces virtuais de rede, com a associação de um endereço MAC (Medium Access Control) específico para cada uma delas. Por outro lado, a solução tipicamente utilizada para a comunicação em rede entre o host hospedeiro e as máquinas virtuais é a configuração da interface de rede física do hospedeiro em modo promíscuo, criandose uma bridge para multiplexar o seu uso entre as diversas máquinas virtuais que se conectam a ela. Uma bridge atua na camada 2 do modelo OSI, correspondendo à camada de enlace do modelo TCP/IP (Transmission Control Protocol/Internet Protocol). Com uma configuração de bridge não são feitas considerações relativas ao endereço de rede na qual a interface está configurada. Para o encaminhamento de pacotes são utilizadas técnicas de flooding e de verificação do endereço MAC. Quando o dispositivo destino é localizado seu endereço MAC é guardado em uma tabela de MAC associada à bridge, para posterior roteamento. Em sistemas operacionais, um processo é definido como a instância de um programa (software) em execução [32]. Cada processo, quando instanciado, executa sobre um processador lógico (virtual). O sistema operacional utiliza escalonadores para alternar entre os processadores lógicos sobre
8 8 um mesmo processador físico, criando-se a ilusão de paralelismo por meio de chaveamento. Cada processo possui um espaço de endereçamento lógico formado por dados, texto, heap e pilha. Em síntese, a região de dados armazena as variáveis globais; a região de texto armazena as instruções de execução; a região de heap realiza a alocação dinâmica de memória; finalmente, a região de pilha mantém o endereço de retorno de chamadas de função, mantém as variáveis locais das funções, além de servir para a passagem de parâmetros. Os registradores Program Counter(PC) e Stack Pointer(SP) são utilizados para a execução de um processo. O primeiro informa a próxima instrução a ser executada enquanto que, o segundo, realiza funções de pilha, ou seja, mantém o endereço de retorno da função executada, além de suas variáveis locais e parâmetros. No chaveamento de contexto esses registradores participam, junto com todos os outros registradores da CPU, do escalonamento de processos, criando-se a ilusão de que vários processos são executados ao mesmo tempo. Nesse âmbito, um processo pode ser visto como uma máquina virtual de baixo nível que reúne todo um conjunto de software e hardware para a sua execução [16]. A abordagem da virtualização é bem mais ampla do que a simples execução de múltiplas instâncias de sistemas operacionais em máquinas virtuais. Na virtualização da infraestrutura da rede as interfaces de rede virtuais possuem endereços MAC e IP específicos, com suporte aos meios de encaminhamento de pacotes para interfaces reais, tais como broadcast, unicast e multicast, este último sendo importante para aplicações do tipo P2P e difusão de áudio e vídeo. Dessa forma é possível prover a interconexão das interfaces virtuais com a interface física do host hospedeiro e com outros dispositivos físicos tais como roteadores e switches, além do tratamento de QoS no tráfego dos pacotes oriundos desses dispositivos virtuais na rede. A base para a comunicação em redes virtuais é baseada nos drivers TUN (network tunnel) para o roteamento de pacotes e no driver TAP (network tap) para a criação de bridges [33]. Os drivers TAP emulam a camada 2 (envio/recepção de Ethernet frames na camada de enlace), e os drivers TUN emulam a camada 3 (envio/recepção de pacotes IP na camada de rede) da pilha de protocolos TCP/IP, gerenciando a recepção e a transmissão dos pacotes entre os dispositivos virtuais e os dispositivos físicos na rede. Por outro lado, os dispositivos de interconexão, tais como roteadores e switches são emulados no processo de virtualização. Para administradores de rede é comum pensar em alternativas para aumentar a taxa de utilização de seus servidores, mantendo diversas máquinas virtuais em uma mesma máquina física. Essa alternativa é conhecida como consolidação de servidores e tem o objetivo de aumentar a utilização do hardware com a consequente redução da gerência de diversos hosts (ou seja, redução dos custos operacionais), redução do consumo de energia, redução de espaço físico, além da criação de ambientes mais flexíveis com a oferta de serviços para diversos sistemas operacionais. A seguir são enumeradas as principais técnicas de virtualização para a criação de máquinas virtuais. A descrição dessas técnicas no modelos em camadas tem o objetivo de destacar o nível relativo ao ring no qual a VM se encontra, e as setas duplas as interfaces adicionais necessárias e que devem ser fornecidas pela solução de virtualização que implementa o modelo. Virtualização total (ou completa)[29]: uma camada de software fornece uma abstração genérica do hardware, sem necessidade de modificar o sistema operacional que executa na máquina virtual. O controle de acesso aos recursos físicos do sistema é gerenciado pelo hypervisor, bem como a conversão para o sistema físico dos diferentes mecanismos de acesso à disco, memória, periféricos, entre outros, realizados pelo sistema operacional virtual. A Fig. 1 mostra o modelo
9 2 Virtualização 9 em camadas desse tipo de virtualização. Fig. 1: Modelo em Rings da Virtualização Completa. Paravirtualização: De acordo com [34] a paravirtualização busca remover todas as características da arquitetura de suporte (como a x86, por exemplo) que sejam difíceis de virtualizar, e substitui-las com operações que se comunicam diretamente com a camada de virtualização. Segundo [29], esse modelo de virtualização envolve modificar o núcleo do sistema operacional Guest para que ele se comunique diretamente com o hypervisor, sem a tradução binária de todas as instruções, como normalmente ocorre na virtualização completa. O hypervisor, por sua vez, também fornece interfaces para outras operações críticas do núcleo do sistema operacional, tais como tratamento de interrupções e gerenciamento de memória. Segundo [35], o sistema operacional Guest recebe modificações para interagir diretamente com os drivers do hypervisor na execução de instruções de máquina privilegiadas, ou seja, instruções que possam alterar o estado do sistema. Outro ponto é que os dispositivos de hardware são acessado por drivers da própria VM, sem o uso de drivers genéricos que inibam a capacidade total do dispositivo. Com os atuais avanços no suporte à virtualização em hardware por parte dos fabricantes de CPUs (principalmente Intel e AMD) a paravirtualização tem-se mostrado tão eficiente quanto a virtualização total [16]. A paravirtualização também abrange de forma mais adequada os recursos disponíveis no hardware, ao invés da abstração genérica oferecida pela virtualização total. O exemplo mais comum é o do Xen, que é um exemplo de virtualização do tipo 1 (ou virtualização nativa) [34]. O hypervisor Xen executa no topo de um sistema operacional Host. As VMs em Xen são conhecidas como domínios. Quando o sistema inicia, o hypervisor Xen inicia o domínio 0 (zero), que tem acesso aos dispositivos de forma privilegiada. As máquinas
10 10 Fig. 2: Modelo de Paravirtualização com Xen (baseado em [34]. Fig. 3: Modelo em Rings da Paravirtualização. virtuais de níveis de domínio superiores a zero acessam os dispositivos por meio da máquina virtual do domínio 0. Em termos práticos, Xen é configurado como um patch ao kernel de distribuições Linux convencionais. Cada VM se torna um processo do sistema operacional. O sistema operacional é responsável por controlar e gerenciar as funções que o domínio 0 realiza. As versões mais recentes do Xen possuem drivers de dispositivos nativos que foram retirados do hypervisor e mantidos no domínio 0, de forma a se ter o acesso mais próximo do hardware, como mostra a Fig. 2. UML é outro exemplo de sistema que utiliza a paravirtualização. A Fig. 3 mostra o modelo em camadas desse tipo de virtualização. Suporte à virtualização de hardware (Virtualização Assistida por Hardware) [29]: o hardware fornece recursos voltados especificamente para virtualização. As tecnologias AMD-V e Intel
11 2 Virtualização 11 VT suportam a virtualização assistida por hardware para os processadores da arquitetura x86. O hypervisor encontra-se no ring level 0, mas no modo root mode (nas arquiteturas Intel, vmx root). O kernel do sistema operacional virtualizado das VMs também se encontra no ring level 0, mas no modo non-root mode (nas arquiteturas Intel, vmx non-root). O resultado é um ganho de desempenho, pois o software do hypervisor tem controle mais próximo ao hardware da CPU [36]. A Fig. 4 mostra o modelo em camadas desse tipo de virtualização. Essa virtualização reduz a necessidade de utilizar sistemas paravirtualizados para prover sistemas operacionais proprietários. Fig. 4: Modelo em Rings da Virtualização Assistida por Hardware. Virtualização no nível do sistema operacional (Containers) [37] 2 : execução de múltiplos ambientes de execução isolados e que compartilham um mesmo núcleo de sistema operacional. Obtém-se um desempenho próximo ao nativo e características de gerência dinâmica de recursos são oferecidas como vantagens mas, por outro lado, não permite que diferentes núcleos sejam executados por diferentes sistema operacionais ao mesmo tempo. Exemplo: FreeBSD Jail [38], Solaris Zones/Containers [39], Linux-VServer [40], OpenVZ [17] e Virtuozzo [41]. A Fig. 5 mostra o modelo em camadas desse tipo de virtualização. 2 Nota: foi mantida a escrita original da palavra em inglês.
12 12 Fig. 5: Modelo em Rings da Virtualização em Containers. Em síntese, a emulação utiliza software para simular o hardware para o sistema operacional Guest que executa no software. Como se pode notar, essa alternativa possui limitações para a tradução dinâmica de código, além de oferecer um baixo desempenho. Por outro lado, a virtualização nativa, ou virtualização completa, é quando um hypervisor tipo 2 é utilizado para permitir o acesso parcial ao hardware, ou para simular um subconjunto de recursos do hardware, com a finalidade de permitir a execução completa de um sistema operacional. Na paravirtualização, o sistema operacional executa no hypervisor, o que confere maior desempenho. Microsoft Hyper-V e VMware ESX Server também são exemplos de sistemas que utilizam a paravirtualização [42] [43]. Apesar de não haver uma definição consensual [44], no contexto da virtualização é importante aprofundar a distinção entre termos emulação, simulação e virtualização. De acordo com [45] [42], esses termos são definidos como segue: Emulação: é a reprodução do comportamento de um sistema em outro. Além disso, é um termo utilizado para descrever a operação de um software desenvolvido para simular um determinado hardware, como por exemplo um processador, disco rígido, interfaces de rede, entre outros, diferentes dos que estão executando o emulador [46]. Como exemplo, o software DOSBox [47] é capaz de emular o sistema operacional DOS (Disk Operating System) em sistemas operacionais Linux, permitindo a execução de programas nativos de um sistema operacional em outro. Outro exemplo é o emulador QEMU (Open Source Processor Emulator) [48]. Quando executado como emulador ele pode executar programas e sistemas operacionais feitos para uma arquite-
13 2 Virtualização 13 tura (por exemplo, ARM) em outra (por exemplo, PC). Isso é feito com a tradução dinâmica de código. 3 Outro exemplo de emulador é o Bochs [49] que emula todas as instruções de processadores x86, incluindo dispositivos de entrada/saída e memória. Portanto, um emulador é capaz de executar os mesmos programas como se eles executassem no sistema original, produzindo as mesmas saídas para as mesmas entradas geradas em ambos os sistemas. A emulação torna possível executar qualquer sistema operacional não-modificado, desde que o sistema de emulação suporte o sistema a ser emulado. A principal desvantagem da emulação é o seu baixo desempenho comparado com a execução nativa do sistema operacional em hardware próprio. Simulação: é uma imitação de algum sistema real. Também pode ser informalmente definido como um tipo de emulação mais precisa. Segundo [16], um simulador é um programa que implementa um modelo de sistema recebendo parâmetros de entrada e condições iniciais de contorno e serve para auxiliar na predição e análise do comportamento do sistema simulado. Os simuladores MobileSim [50] e Stage [51] são exemplos de programas que imitam o comportamento de robôs móveis, reproduzindo com precisão as ações de deslocamento no ambiente, leitura de sensores tais como sonares e laser, além de oferecerem um ambiente adequado para testes e análise de programas criados para interagir com robôs reais; Virtualização: em termos de computação, é a emulação de hardware em uma plataforma de software. Com a emulação de hardware ocorre a simulação de hardware via software. No entanto, ao contrário da emulação, as instruções são executadas no hardware real da máquina física, ao contrário do que ocorre na emulação onde as instruções são executadas em um processador emulado [46]. Como exemplo, diversos sistemas operacionais podem ser virtualizados em um mesmo host físico. Existem muitos tipos de virtualização para diferentes propósitos: Software: seja para manter múliplos ambientes virtualizados no mesmo host físico com máquinas virtuais, e/ou para reservar virtual environments distintos apenas para a execução de aplicações [52]. Mobile: permite executar sismultaneamente múltiplos sistemas operacionais, ou máquinas virtuais, em dispositivos móveis. Esse tipo de virtualização é mais exigente quanto à capacidade de processamento e quanto aos requisitos de hardware do dispositivo móvel. Como exemplo, o iphone [53] suporta esse tipo de virtualização. Desktop: exibição de desktops remotos, seja de forma textual (por exemplo, Web SSH) ou gráfica [54] [55]. Network: combinação de recursos de software e hardware de rede em uma entidade conhecida como rede virtual. São admitidos espaços de endereçamento de rede virtualizados, com regras de firewall, tabelas de roteamento, endereçamento IP, entre outros requisitos de rede associados às interfaces de rede virtualizadas. A infraestruturas de interconexão da rede também pode ser virtualizada com software especializado, aproveitamento as características de software para a configuração lógica de dispositivos (por exemplo, VLANs em switchs). 3 Nota: ARM é uma arquitetura com um conjunto reduzido de instruções de 32-bits RISC (Reduced Instruction Set Computer) desenvolvida pela ARM Holdings.
14 14 A virtualização também é empregada para gerar áereas virtuais (virtual layers) no host, de forma que aplicações podem ser instaladas nessas áreas, ativadas e desativadas, reduzindo os conflitos de possuir diferentes versões do mesmo programa instalados na mesma máquina. Como exemplo pode ser citado o software Cameyo [52], que é um produto para virtualização de aplicações para plataformas Microsoft Windows. 3 Considerações sobre virtualização A seguir são enumeradas algumas considerações quanto ao uso da virtualização: Segurança: as máquinas virtuais são isoladas entre si, o que garante que a falha de um serviço em uma delas não comprometa as demais. No entanto, o uso do hypervisor é um ponto crítico pois uma falha nesse setor pode comprometer todas as instâncias de máquinas virtuais ativas. Por outro lado, o uso de softwares atualizados auxiliado pela gerência rigorosa dessa camada de software propicia a oferta de um ambiente tão seguro e confiável quanto se cada sistema operacional e/ou serviço fosse executada exclusivamente em um único host servidor; Flexibilidade: a consolidação de servidores traz como vantagem direta a oferta de serviços para diversos sistemas operacionais. Diversas ferramentas open source e comerciais adicionam elementos para suporte à migração de máquinas virtuais, estatísticas e contabilidade de uso, gerência do sistema, balanceamento de carga, controle de acesso, entre outros; Outra característica interessante é a opção de salvar um snapshot do estado atual da máquina, para posterior reinício do ambiente. Custo: De acordo com [18], a redução dos custos de TI pode variar de 29% a 64% no que se refere à economia de espaço físico, energia, estrutura de refrigeração, a gerência de múltiplas máquinas virtuais Com relação à paravirtualização não se torna prático modificar sistemas operacionais proprietários ou mesmo antigos. Nesses casos, o hypervisor deve confiar na virtualização de hardware. Em ambientes onde existe a necessidade de manter diversos sistemas operacionais, o uso de hypervisors é considerado uma alternativa viável, porém é necessário manter um controle do ciclo de vida de cada recurso virtual ativo [56]. Desempenho: A virtualização é uma alternativa para suprir grandes demandas por recursos computacionais. Por outro lado, o uso de hypervisors adiciona uma camada extra de software o que gera um custo maior de processamento em relação a soluções não-virtualizadas. Outro fator limitante para o desempenho é a qualidade do serviço de interconexão oferecido para os serviços virtualizados. Aplicações mais exigentes quanto a operações de E/S são potencialmente mais propensas a terem um menor desempenho em ambientes virtualizados. Redes virtuais: Uma possibilidade inerente é o uso do hardware computacional virtualizado. Nesse contexto, as redes virtuais são baseadas na emulação das interfaces de rede junto ao hypervisor. Ao invés de tratar a comunicação de rede entre máquinas virtuais no nível da interface física do host que as mantém, pode-se virtualizar a própria infraestrutura de rede das VMs. Nesse sentido, o tráfego de rede utiliza um comutador virtual (ou vswitch). Esse comutador se comporta como um switch físico convencional, mas é virtualizado pelo hypervisor. Uma
15 4 Open Virtualization Format 15 solução em software open source é o Open vswitch [57], que é um switch virtual multicamadas (licença Apache 2.0). Além de ser utilizado como switch para redes virtuais, ele também pode ser utilizado em conjunto com redes físicas. Está disponibilizado a partir do kernel do Linux, e suporta várias soluções de virtualização tais como Xen, KVM, Proxmox VE e VirtualBox. Essa solução também tem sido integrada em diversas plataformas de nuvem, como OpenStack, OpenQRM e OpenNebula. 4 Open Virtualization Format Para manter a portabilidade na distribuição e especificação de VMs a indústria de virtualização (em especial as empresas Dell, HP, IBM, Microsoft, VMware e Citrix) definiu o formato OVF (Open Virtualization Format) [58]. A especificação OVF é aberta e neutra em termos de plataforma de virtualização e descreve um formato para empacotamento e distribuição do software a ser executado em VMs [58]. No entanto, VMs também podem ser importadas e exportadas utilizando o formato OVF. Essa especificação tem o objetivo de garantir portabilidade na distribuição de VMs e suas aplicações, entre múltiplas plataformas de virtualização. As seguintes vantagens podem ser enumeradas [58]: VMs podem ser instaladas nos hosts apenas se o hardware especificado em OVF estiver disponível; Inclusão de licenças de uso especificadas em documentos de metadados junto ao pacote da distribuição; Especificação da compressão de dados para transferências de grandes imagens virtuais; Verificação de integridade de imagens baseada em infraestruturas de chave-pública, com um esquema para a gerência de licenças de software; Descrição padronizada dos recursos virtuais disponíveis nas VMs. Um pacote OVF deve conter os seguintes arquivos [58]: Um arquivo descritor do tipo metadados: contém a descrição, em formato XML, dos recursos virtuais de uma VM, tais como interfaces de rede, discos virtuais, tipo de sistema operacional instalado, requisitos de hardware virtual (CPU, memória RAM, drive de CD-ROM, entre outros), configurações de CPU, ordem de boot, endereços MAC virtuais, configurações de áudio e vídeo, entre outros; Nenhum ou um arquivo de manifest: contém a descrição do algoritmo utilizado para criptografar os dados do pacote. O algoritmo SHA-1 (Secure Hash Algorithm version 1) é adotado por padrão; Nenhum ou um arquivo de certificado: As informações do arquivo manifest podem ser assinadas e mantidas em um arquivo de certificado X.509 codificado em base 64;
16 16 Nenhum, um ou mais arquivos de imagem de disco virtual: por ser neutro em relação ao formato da imagem virtual, o pacote OVF deve conter uma URI que forneça uma especificação única sobre como interpretar o formato da imagem virtual. Múltiplos formatos de disco virtual são suportados, mas é recomendado o uso de imagens em formato VMDK (Virtual Machine Disk Format). Como exemplo, o VirtualBox cria dois arquivos VMDK: um que contém informações adicionais da VM (nome da VM, tamanho em bytes, versão do VMware), e outro com a própria imagem virtual. Nenhum, um ou mais arquivos de recursos adicionais: por exemplo, arquivo de imagem ISO a partir do qual o sistema operacional foi instalado na VM. 5 Soluções para Virtualização A seguir é feita uma descrição sucinta das principais soluções de virtualização gratuitas disponíveis para usuários não-comerciais. 5.1 VMware Os produtos da empresa VMware [19] utilizam uma combinação de técnicas de execução direta de instruções em hardware e técnicas de tradução binária para oferecer o suporte à virtualização em seus produtos. A empresa disponibiliza vários produtos, gratuitos e comerciais, para o suporte à virtualização e à computação em nuvem. Dentre eles, destacam-se [59]: Desktop Editions VMware Workstation: suporte para a criação de múltiplas VMs em um mesmo host cliente. Possui suporte para a geração de snapshots. Um snapshot é uma cópia em memória do estado corrente da VM, de forma que uma VM possa ser iniciada a partir desse estado. Com um snapshot o usuário possui um gerenciador de snapshots, a partir do qual se tem a opção de alternar entre diferentes estados de uma mesma VM, o que torna o produto VMWare Workstation ideal para ambientes de teste e desenvolvimento de softwares. As VMs criadas com essa versão de software da VMWare podem ser transportadas para os produtos servidores, tais como o VMWare Server. No entanto, o produto VMWare Workstation não é recomendado para ser usado em servidores por questões de desempenho. VMware Fusion: Ambiente virtual para a execução de sistema operacional Windows em plataformas Macintoch. VMware Player: É um software para a criação e execução de múltiplas VMs em um mesmo host cliente. No entanto, não há suporte para a gerência de múltiplos snapshots ou clonagem de VMs Server Editions VMware ESX Server é um produto comercial para aplicações empresariais que suporta a execução de diversas VMs. Esse software servidor possui um kernel próprio do Linux Red Hat modificado, de
17 5.2 Xen 17 forma a obter um melhor desempenho para a execução das VMs, sem a necessidade de se ter outro sistema operacional instalado no host servidor. VMWare Server é um produto de virtualização gratuito para pequenos e médios servidores, e que depende de um sistema operacional Linux ou Windows instalado no host servidor. Além dos produtos citados, destacam-se outros como: VirtualCenter que é destinado para a gerência centralizada de servidores VMWare; VMotion que é utilizado para a migração in live de servidores virtuais para servidores físicos, sem a interrupção dos serviços; e VMware Converter que é utilizado para converter sistemas operacionais que executam em hosts físicos em máquinas virtuais. 5.2 Xen Xen [21] é um hypervisor ou Virtual Machine Monitor (VMM), que é uma camada de software que encaminha instruções privilegiadas de VMs diretamente no hardware do computador. Xen oferece virtualização por meio da paravirtualização e suporta diversos tipos de arquiteturas de processadores: x86, x86-64, Itanium, Power PC e ARM. O projeto Xen é open source e foi desenvolvido pelo Systems Research Group da University of Cambridge Computer Laboratory. De acordo com [60], mais do que emular os dispositivos de hardware existentes, como é realizado com a virtualização completa, Xen expõe um conjunto de abstrações de dispositivos de E/S. A transferência de dados é feita via Xen, utilizando técnicas de memória compartilhada e bufferização assícrona. O software Xen é um hypervisor que é instanciado logo após o bootloader do sistema operacional. Uma VM Linux conhecida como Domain 0 (ou Dom 0) fornece recursos virtualizados para domínios de usuários (ou Dom U) no Host. Existe suporte para um amplo conjunto de sistemas operacionais, entre os quais: Linux, Windows, NetBSD, Solares, entre outros. Xen é utilizado em diversos ambientes de nuvem como na Amazon EC2, Nimbus e Eucalyptus. 5.3 KVM KVM (Kernel-based Virtual Machine) [22] é uma solução open source, sob licença GPL, para virtualização completa em Linux, para arquiteturas de processadores x86 e x64. A virtualização com o KVM utiliza um driver no kernel do Linux. Por meio de um módulo carregado junto ao kernel ( e superiores) do sistema operacional, o kvm.ko, é fornecida uma infraestrutura de virtualização para os processadores Intel e AMD. Cada máquina virtual instanciada possui seus próprios recursos de hardware virtualizados. KVM exige exige o suporte à virtualização por hardware na CPU, e utiliza o escalonador e o gerenciamento de memória regulares do Linux. KVM não suporta paravirtualização para CPU, mas sim para dispositivos de entrada/saída, como disco e interface de rede, utilizando a interface VirtIO, sem a necessidade de simular todo o kernel do sistema operacional para realizar essas funções. A proposta do KVM têm despertado atenção porque interage diretamente com o kernel do sistema operacional e pode se comunicar diretamente com o hardware. Como consequência, tende a oferecer um desempenho melhor do que as tecnologias de virtualização no nível de aplicação. KVM utiliza uma versão modificada do software QEMU para a emulação de dispositivos como processos separados no espaço do usuário [28].
18 18 Fig. 6: Interface Gráfica de Gerência do Virsh para o KVM. 5.4 QEMU QEMU (Open Source Processor Emulator) [48] [61] é um virtualizador e emulador open source genérico. Ele oferece suporte para a execução completa de sistemas operacionais, fornecendo uma camada de abstração de software na qual o sistema operacional pode executar como se estivesse acessando diretamente o processador legado e/ou periféricos. Uma grande diversidade de processadores e sistemas operacionais é suportada. QEMU também suporta a emulação em user mode na qual programas compilados em uma arquitetura de CPU podem ser executados em outra. Por exemplo, QEMU pode ser utilizado para executar os emuladores Wine e Dosemu. Quando utilizado em conjunto com o KVM, por meio da habilitação do módulo kqemu no kernel do sistema operacional, obtém-se um ganho maior de desempenho. QEMU não precisa de extensões de módulos no kernel do sistema operacional, nem de extensões para o suporte à virtualização na CPU, e nem de uma camada de software de um hypervisor. A emulação de disco em formato QCOW permite a captura de snapshots de execução de VMs, e migração em tempo de execução (live migration).
19 5.5 VirtualBox VirtualBox VirtualBox é um hypervisor, open source e gratuito para usuários não-comerciais, que suporta VMs com sistemas operacionais de diversas distribuições. O software VirtualBox é multi-plataforma e pode ser instalado em sistemas Linux, Windows, Mac e Solaris [23]. O hypervisor do VirtualBox precisa de um sistema operacional base para executar (hypervisor tipo 2). Fig. 7: Hypervisor do VirtualBox e máquina virtual instanciada. 5.6 Virsh Virsh [62] é uma interface de linha de comando open source, que encapsula as funcionalidades da API Libvirt para o gerenciamento (principalmente para operações de iniciar, finalizar, pausar, suspender, resumir e listar o status) de máquinas virtuais QEMU, KVM e Xen. Mais especificamente é um toolkit em linguagem C que executa em modo assíncrono, uma vez que o tempo para a realização de operações de gerência não é imediato (por exemplo, início e finalização de uma VM). Toolkits adicionais includem o virt-viewer, para a visualização gráfica das VMs, acessível por meio de um protocolo VNC; e virt-manager, que também é um programa com interface gráfica, escrito em linguagem Python, para a gerência de VMs, como mostra a Fig 6. Libvirt [62] é uma API open source para a gerência de VMs, que possui interfaces para os principais sistemas de virtualização: Xen, QEMU, KVM, LXC, OpenVZ, hypervisors VMware ESX e GSX, hypervisors VMware workstation e Player, User Mode Linux e VirtualBox. Libvirt utiliza o serviço libvirtd para intermediar a comunicação com o sistema de virtualização, e arquivos XML para definir o hardware virtualizado. Além do suporte convencional para a gerência de VMs, essa
20 20 API oferece funcionalidades para a criação de diversos dispositivos virtuais como bridges, interfaces de rede, discos de armazenagem, unidades de CD-ROM, displays, interfaces de som, entre outros. A Fig. 8 ilustra alguns exemplos de interação oferecidas pela API. Trata-se portanto de um canivete suiço para as mais populares soluções de virtualização. Userspace Tools virsh virt viewer virt manager libvirt libvirt libvirt libvirtd libvirt Hypervisor Kernel KVM Module Kernel Dom0 DomU QEMU QEMU QEMU Guest Guest Guest Guest Guest Guest Xen KVM QEMU Fig. 8: Ilustração das diversas formas de uso da biblioteca Libvirt [44]. 5.7 OpenVZ OpenVZ [17] é um sistema open source de virtualização, sob a licença GPL, baseado em containers para sistemas operacionais Linux. OpenVZ cria múltiplos containers isolados conhecidos como Virtual Environments (VE) para consolidação de servidores. Esse sistema de virtualização é a base do Parallels Virtuozzo Containers, que é uma solução comercial [41]. O OpenVZ segue o conceito de ambientes virtuais no qual o ambiente de execução de programas é isolado dos demais. Esse ambiente mantém os sistema operacional Linux Guests isolados uns dos outros, ou seja, vários Linux Guests podem coexistir no mesmo servidor físico, mas todos eles devem executar sob um mesmo kernel. Para isso, o OpenVZ utiliza uma versão modificada do kernel do Linux convencional para adicionar as funções de virtualização, isolamento dos Guests, gerência de recursos e checkpoints (ou seja, gerar snapshots das VMs, onde o estado da VM é congelado e armazenado em disco). Também é suportada a migração de VMs. Para otimizar a instalação e uso de novos Guests, o OpenVZ também suporta templates de imagens de sistemas operacionais. Cada template contém um conjunto de pacotes pré-configurados. 5.8 LXC Linux Containers (LXC) [63] [64] é um método de virtualização no nível do sistema operacional, similar ao OpenVZ, mas sem a necessidade de se adicionar um patch ao kernel das distribuições Linux mais recentes (motivo pelo qual ele vem sendo adotado como alternativa ao OpenVZ). Múltiplos ambientes virtuais (Virtual Environments - VE) conhecidos como containers podem executar no
21 5.9 Linux-VServer 21 mesmo host de forma similar ao comando chroot, que muda o diretório root do processo corrente e de seus processos filhos. Containers particionam os recursos oferecidos pelo sistema operacional em grupos isolados. O sistema operacional utiliza a técnica de time sharing para compartilhar os recursos entre todos os containers, utilizando o mesmo kernel [65]. Como vantagens, essa alternativa gera um baixo overhead de memória RAM e CPU, a execução de programas tem um desempenho próximo ao nativo, e se tem economia de espaço em disco. Por outro lado, a limitação de se utilizar um único kernel entre todos os containers impede o uso de outros sistema operacional que não suportem o mesmo kernel da máquina Host. Além disso, existem limitações para a migração de containers entre outros hosts, e problemas no kernel do Host são mais prejudiciais do que outras soluções de virtualização. LXC utiliza o software debootstrap, que é uma ferramenta que instala um conjunto mínimo de arquivos de um sistema operacional, realizando o acesso remoto aos repositórios da distribuição. Esse aplicativo instala apenas os arquivos principais que tornam o container funcional. 5.9 Linux-VServer Trata-se de uma virtualização baseada em containers que adiciona um patch ao kernel atual da máquina Host [40]. A motivação para o uso de ambientes virtuais compartilhados em containers no mesmo host se deve ao fato de que grande parte das aplicações não requerem acesso ao hardware ou acesso em nível de super-usuário ao kernel do sistema operacional. Por conta disso, torna-se uma alternativa interessante a execução de múltiplos espaços virtuais sobre um mesmo kernel, desde que esses espaços virtuais sejam separados uns dos outros, independentes entre si e seguros quanto ao acesso. Outra motivação é que o aumento de recursos da máquina host (adição de mais memória, dispositivos de E/S, interfaces de rede, entre outros) são disponibilizados para os containers com pouca ou nenhuma necessidade de configuração. Da mesma forma, um mesmo conjunto de aplicações pode ser atualizado e distribuídos para os containers de forma transparente. No entanto, existem as desvantagens de não se conseguir migrar o container para fora da máquina host, e de se ter que utilizar o mesmo kernel em todos os containers. O conceito do Linux-VServer baseia-se na criação de unidades de espaço do usuário conhecidas como Virtual Private Servers (VPS) com o uso de um mesmo kernel compartilhado User Mode Linux O User Mode Linux (UML) é uma implementação do kernel do Linux que suporta arquiteturas de outros kernels de Linux. No entanto, versões mais recentes de kernel precisam ser modificadas para que possam ser agregadas ao kernel Linux que os suporta. São admitidos múltiplos sistema operacional Linux Guests sobre um mesmo kernel Linux, cada um deles isolado dos demais. Cada sistema operacional Guest comporta-se como um processo que executa no espaço do usuário, com seu próprio sistema de arquivos, árvore de diretórios, configurações de rede, e outros. Ao contrário de soluções de virtualização baseada em containers, não é necessário que as imagens possuam o mesmo kernel do sistema operacional Host. Nas versões mais recentes kernel do Linux (2.6.x e posteriores) o UML vem integrado à árvore principal dos fontes. Cada sistema operacional Guest é mantido por máquinas virtuais designadas para processadores de arquiteturas de 32 e 64 bits.
22 22 Ferramenta Tipo de Virtualização Multiplataforma Suporte a Migração VMware Completa/Assistida Sim Sim (em algumas versões) Xen Paravirtualização Não Sim KVM Completa/Para/Assistida Não Sim QEMU Completa Sim Não VirtualBox Completa/Assistida Sim Sim OpenVZ Containers Não Sim LXC Containers Não Não Linux-VServer Containers Não Não UML Baseado em containers Não Não Tab. 1: Tabela Comparativa com as Principais Ferramentas Gratuitas de Virtualização. 6 Soluções para Computação em Nuvem O uso da virtualização não é um requisito para se ter um ambiente de nuvem, mas o seu uso traz muitas vantagens, desde ser uma alternativa para se preparar infraestruturas escaláveis com múltiplas VMs, até o suporte à migração de VMs com o objetivo de promover o balanceamento de carga de forma a ampliar a escalabilidade e a redução do consumo de energia. O modelo de uma infraestrutura com suporte à virtualização pode ser representado como ilustrado na Fig. 9. Em uma nuvem com suporte à virtualização, cada nó da rede é modelado como ilustrado nessa figura. Nesse modelo, o hypervisor atua como uma camada de software entre o hardware (máquina física) e o sistema operacional. Além de gerenciar a instanciação de múltiplas VMs, ele também oferece suporte para a emulação de dispositivos, tais como processador, memória RAM, disco rígido, interfaces de E/S tais como drive de CD/DVD, mouse, teclado, vídeo (quantida de bytes para a memória de vídeo), interfaces de rede, entre outros. O suporte à rede virtual (virtual networking) ocorre por meio da emulação de interfaces de rede, através da qual as VMs têm acesso à rede IP convencional. O hypervisor também oferece uma interface de gerência básica para o controle dos recursos virtuais que ele mantêm. No entanto, funcionalidades adicionais geralmente são desenvolvidas em outra camada de abstração. Em muitos casos, isso ocorre porque não se tem acesso ao código-fonte do hypervisor, ou porque a modificação do seu código-fonte original exige grande esforço. Gerenciamento das VMs VM1... VMn Virtual networking Emulação de Dispositivo Hypervisor Máquina Física Fig. 9: Modelo de um Nó da Nuvem com Suporte à Virtualização.
23 6 Soluções para Computação em Nuvem 23 No entanto, uma nuvem comporta centenas, e até milhares de nós que precisam ser gerenciados, seja para o balanceamento de carga das operações realizadas por usuários de domínios públicos/privados, ou operações de cache e filtragem de pacotes de rede, por exemplo. A Fig. 10 ilustra o modelo genérico de uma infraestrutura de nuvem com suporte à virtualização, baseada em [28]. Nesse modelo, uma Infraestrutura Virtual de Gerência tem acesso a todos os nós do domínio privado da nuvem. O modelo não define quais níveis de gerência devem ser contemplados nessa camada, porém a maioria das soluções de virtualização em nuvem utiliza os seguintes serviços: criação/remoção/atualização de recursos virtuais (CPU, memória, RAM, espaço em disco, entre outros) fornecidos para cada VM, suport para o controle do ciclo de vida de VMs, e alteração de parâmetros dos recursos virtuais. Diversas interfaces de gerência tamem oferecem suporte para a configuração lógica dos servidores que hospedam as VMs. A Infraestrutura de Balanceamento de Carga é citada para oferecer suporte para a migração de VMs, cache em disco para serviços Web, e controle de acesso de usuários. Observa-se nesse modelo que as duas infraestruturas anteriores são independentes, ou seja, camadas adicionais de gerência podem ser agregadas sem intervenção nas anteriores. No entanto, esse modelo não define como deve ocorrer o reaproveitamento de recursos já oferecidos por uma camada, ou como novos serviços que interagem com a nuvem podem ser criados sem interferir nas funcionalidades das camadas anteriores. A infraestrutura de rede física e de armazenagem é a base desse modelo, e garante a conectividade de rede dos servidores que mantém os recursos virtuais. Além disso, essa camada oferece o suporte para a armazenagem física de dados. Infraestrutura de Balanceamento de Carga Infraestrutura Virtual de Gerência Gerência de VMs Gerência de VMs VM1 VM1... VMn MF VNet VMM... VMn ED Gerência de VMs VM1... VMn MF VNet VMM ED Gerência de VMs VM VNet VMM ED Gerência de VMs VM1... VMn VNet VMM ED Gerência de VMs VM1... VMn MF VNet VMM... VMn VNet VMM ED ED MF MF MF Infraestrutura de Rede Física e de Armazenagem de Dados Fig. 10: Modelo Genérico de uma Infraestrutura de Nuvem. Uma característica que normalmente ocorre em infraestruturas para nuvem é o uso de servidores dedicados para a virtualização. Dentre os principais quesitos que precisam ser considerados em uma infraestrutura de suporte à computação em nuvem podem ser listados:
24 24 1. suporte à gerência de múltiplos usuários (R1); 2. suporte a múltiplos sistemas operacionais (R2); 3. tecnologias de virtualização suportadas (R3); 4. suporte à migração de VMs (R4); 5. suporte a interface OCCI (R5); Solução R1 R2 R3 R4 R5 Amazon EC2 Sim Sim Xen Sim Sim Eucalyptus Não Sim Xen, KVM Sim Sim XCP Não Sim (parcial) Xen Sim Não Nimbus Não Sim Xen, KVM Sim Sim OpenNebula Sim Sim Xen, KVM, VMware Sim Sim Proxmox Não Sim KVM, OpenVZ Sim Não Abiquo Sim Sim diversos Sim Sim Tab. 2: Comparação das Soluções de Nuvem quanto aos Requisitos Funcionais. A Tab. 2 ilustra como esses quesitos são considerados junto às principais soluções de virtualização de código-fonte aberto disponíveis. Observa-se que o suporte à gerência de usuários (R1) é suportado na maioria delas e, quando não presente, encontra-se disponível nas versões comerciais; o quesito R2 depende do tipo de sistema operacional base, mas aparece bem resolvido nas soluções apresentadas. No entanto, a configuração nos sistemas Eucalyptus e XCP ainda exige a configuração manual, o que pode dificultar a gerência em ambientes de produção; o quesito R3 depende do sistema operacional base, e das funcionalidades que a infraestrutura da nuvem pretende oferecer. O uso da biblioteca libvirt para Linux é uma solução aceitável para a gerência de VMs em múltiplas tecnologias de virtualização. O quesito R4 aparece em todas as soluções. Quando se trata de uma rede interna, a solução adotada para a migração tem sido utilizar um sistema de arquivos de rede do tipo Network File System (NFS) e/ou similares. O quesito R5 diz respeito à interoperabilidade e também está presente, ou em estágio de desenvolvimento (Nimbus e OpenNebula), na maioria das soluções. XCP e Proxmox ainda não têm suporte a essa funcionalidade. 6.1 Amazon AWS A Amazon [7] é uma das empresas pioneiras na oferta de serviços de computação em nuvem, e ainda se mantém presente para a oferta desses serviços tanto para usuários comerciais quanto para não-comerciais. Os serviços da Amazon Web Services (AWS) reúnem um conjunto de tecnologias baseadas na Web para interação com os serviços de nuvem da Amazon. AWS é baseada em uma IaaS, com os serviços da Elastic Compute Cloud (EC2) e Simple Storage Service (S3), que utilizam interfaces baseadas em Serviços Web.
25 6.2 Eucalyptus Amazon Elastic Cloud Compute (EC2) Segundo o site da Amazon, a Amazon Elastic Compute Cloud (Amazon EC2) é um serviço web que fornece capacidade de computação redimensionável na nuvem. Amazon EC2 fornece uma API de serviços web para gerenciar servidores virtuais na IaaS da Amazon. Os principais datacenters da Amazon EC2 estão localizados nos Estados Unidos e na Europa. Como característica, o usuário que possui uma conta em um datacenter não pode utilizar os serviços de outro. O sistema de virtualização padrão adotado pela Amazon é o Xen, com suporte à paravirtualização. O ambiente Xen permite a provisão/desprovisão dinâmica de recursos e isolamento dos ambientes dos servidores Guest dos usuários. As imagens de servidores são iniciadas a partir de templates pré-configurados com o sistema operacional escolhido pelo usuário e alguns softwares adicionais. Essas imagens são conhecidas como Amazon Machine Images (AMIs). O ambiente também possibilita criar imagens AMI personalizadas que podem ser posteriormente instanciadas. A administração dessas imagens é feita com o uso de serviços Web, mas existem extensões para browsers, como o Elasticfox, que pode ser usado para gerenciar AMIs a partir do Firefox. Dois tipos de armazenagem estão disponíveis no ambiente EC2. O primeiro é um armazenamento temporário (ephemeral storage), e um armazenamento persistente em blocos, que atua como uma rede de armazenamento de dados de alta velocidade. A estratégia para atribuição de endereços IPs é feita de forma controlada, uma vez que a quantidade de IPs públicos roteáveis é escassa. Todas as contas Amazon estão limitadas a 5 endereços IP públicos IPv4 roteáveis na Internet (chamados de Elastic IPs), por região [66]. Além disso, a Amazon AWS realiza tarifação quando esse endereço IP não estiver associado a uma instância em execução. Por padrão, cada VM é instanciada com um endereço IP privado e um endereço IP público. Tanto o endereço IP privado quanto o endereço IP público são exclusivos por instância Amazon S3 Amazon S3 é um serviço de nuvem para armazenagem de dados. Esse serviço é acessível em tempo real por meio da API de serviços Web da IaaS. A ideia é a de se ter um imenso diretório remoto para armazenamento de uma grande quantidade dados acessíveis por meio de uma URL única por usuário Amazon Simple Queue Service (SQS) Amazon SQS é uma solução da Amazon para a computação em grades. O sistema é baseado no envio de mensagens de processamento que são enfileiradas pelo sistema e distribuídas para um conjunto de servidores. O processamento é assíncrono e o receptor aguarda o processamento da requisição. Além dos serviços apresentados, muitos outros têm sido desenvolvidos, com suporte às mais diversas linguagens de programação. 6.2 Eucalyptus Eucalyptus (Elastic Utility Computing Architecture for Linking Your Programs to Useful Systems) [67] é uma plataforma de software open source para a criação e gerência de nuvens públicas
26 26 e privadas, que possui APIs interoperáveis com as plataforma de computação da Amazon EC2/S3. A empresa Canonical, mantenedora da distribuição Ubuntu, adotou o Eucalyptus, juntamente com outros softwares open source, como solução de cloud para o Ubuntu Server Edition. Essa solução ficou conhecida como Ubuntu Enterprise Cloud (UEC). Em Fevereiro de 2011, a empresa Canonical oficialmente se juntou à iniciativa de outra plataforma para computação em nuvem conhecida como OpenStack [68] [69]. Eucalyptus suporta o uso dos hypervisors Xen, KVM, e VMware, porém a versão UEC suporta apenas o uso do KVM. A arquitetura do Eucalyptus é ilustrada na Fig. 11. Os seus componentes são descritos a seguir: Cloud Controller (CLC): é o front-end da infraestrutura. É responsável por processar requisições e decidir onde instanciar as VMs (decisões de placement). O acesso às funcionalidades do CLC pode ser feito por meio de interfaces HTTP, SOAP e REST. O CLC possui interfaces para Web Services compatíveis com os serviços da Amazon EC2/S3, para garantir interoperabilidade com os serviços da Amazon fora da nuvem privada. Também é responsável por monitorar a disponibilidade de recursos e monitorar as instâncias de VMs em execução. Diversas imagens pré-configuradas do Ubuntu, conhecidas como Amazon Machine Images (AMI), podem ser utilizadas para instanciar novos servidores; Walrus Storage Controller (W): é o serviço de armazenamento de dados compatível com os serviços da Amazon S3. Os templates de imagens do Walrus (ou templates na Amazon S3) são fornecidos para o NC quando se deseja instanciar uma nova VM. Walrus também é responsável por armazenar snapshots, armazenar e servir arquivos com a S3 API. Node Controller (NC): um NC gerencia o ciclo de vida das VMs em um dado servidor; Cluster Controller (CC): cada CC gerencia um grupo de NCs, ou seja, adquire informações, escalona as requisições para cada NC, além de gerenciar a rede virtual das VMs; Storage Controler (SC): é o componente que fornece funcionalidades de persitência para as VMs instanciadas no cluster, além de interfaces compatíveis com o serviço de armazenagem da Amazon Elastic Block Storage (EBS), ou seja, recursos de armazenagem podem ser dinamicamente atribuídos às VMs. Volumes de dados da Amazon EBS persistem independentemente da vida de uma instância. Além disso, os dados podem ser recuperados e atribuídos às VMs como um dispositivo de armazenagem remoto. 6.3 XCP A empresa Xen disponibiliza a plataforma XCP (Xen Cloud Platform) [21] como alternativa open source para prover ambientes de Cloud. A plataforma inclui o agrupamento e o isolamento de recursos de hardware e rede, provisionamento de sistemas, APIs para expôr os recursos e compatibilidade com um grande número de sistemas operacionais [70]. O XCP herda características do ambientes de virtualização paravirtualizados dos produtos Xen. Em vista disso, o administrador do domínio precisa adquirir templates de imagens paravirtualizadas de sistemas operacionais compatíveis com o XCP. Para ambientes de data-center essa alternativa não chega a ser um empecilho. Todavia, existe
27 6.4 Nimbus 27 Fig. 11: Arquitetura do Eucalyptus. a desvantagem de se ter as imagens apenas dentro do ambiente da nuvem, o que pode dificultar a migração entre ambientes de nuvem não compatíveis com o XCP. Na arquitetura XCP (Fig. 12) as VMs são disponibilizadas em hosts físicos (XCP host) separados do host de gerência (Master XCP), e agregadas em um XCP resource pool. A gerência de máquinas virtuais ocorre com o uso de uma interface no Master XCP host, que deve ser um host dedicado para esse fim. A distribuição atual (versão 1.0) não inclui uma interface gráfica para gerência do ambiente (apenas CLI), mas existem projetos open source que fornecem interfaces gráficas de gerência remota (tanto para a instalação de templates, como para a configuração de interfaces de rede, inicialização/- finalização de VMs, entre outras funcionalidades) como o XenCenter e o OpenXenManager [71]. Todas as VMs são registradas em um Shared Storage de forma que a Management Interface seja capaz de gerenciar todas as VMs na nuvem. Fig. 12: Arquitetura do XCP. 6.4 Nimbus O projeto Nimbus [72] é definido como um toolkit open source para oferecer um ambiente de cluster como uma IaaS. Esse toolkit oferece interfaces WSDL para a Amazon EC2, Amazon EC2 Query API, e WSRF para aplicações em Grades. Também são oferecidas interfaces REST para o acesso à base de dados de recursos e escalonamento de VMs por meio de uma interface de gerência
28 28 de VMs. A implementação da virtualização é baseada em Xen e KVM. A arquitetura do Nimbus é mostrada na Fig. 13. As funcionalidades de cada um dos componentes são descritas como segue: Workspace Service: é um serviço que utiliza a infraestrutura GSI para a comunicação segura com serviços de Grades. Além disso, possui interfaces WSDL para aplicações Amazon EC2 e WSRF para aplicações em Grades. O Workspace client é o componente no lado cliente que se comunica com a nuvem Nimbus; Workspace resource manager: é um componente utilizado para a gerência de VMs de outras tecnologias (a atual distribuição do Nimbus também gerencia VMs do projeto OpenNebula); Workspace control: é o componente responsável pela gerência de VMs (iniciar, finalizar, consultar status, atribuir endereços IP e MAC, entre outros). Para essa gerência pode ser utilizado tanto o Xen hypervisor quanto o KVM, juntamente com as bibliotecas libvirt; Workspace pilot: é o componente responsável por realocar memória para a execução de múltiplas VMs, para obter uma melhor distribuição da memória na nuvem. Fig. 13: Arquitetura do Nimbus. 6.5 OpenNebula O projeto OpenNebula [73] é um toolkit open source para a provisão de nuvens públicas, privadas e híbridas. A infraestrutura do sistema oferece recursos sob demanda para usuários finais, e foi designada para ser integrada com outras soluções de armazenagem e rede. As VMs são utilizadas em um pool de recursos e toda a alocação de recursos é baseada em políticas. O ambiente virtualizado é acessível por meio de interfaces Open Cloud Computing Interface (OCCI) do Open Grid Forum 4. Além disso, OpenNebula também oferece interfaces para a EC2 Query API da Amazon, através da interface Web OpenNebula Sunstone, e um subconjunto de chamadas da vcloud API da VMware. A infraestrutura tem suporte para Xen, KVM/Linux, e VMware. A arquitetura do OpenNebula foi desenvolvida em um modelo de camadas, como mostra a Fig. 14. Ela assume um modelo clássico de cluster, com um nó mestre para manter os serviços de gerência e diversos nós escravos para manter as VMs. Os nós escravos são supervisionados pelo hypervisor do nó servidor, o que exige que todos os nós estejam conectados por pelo menos uma rede física. A camada Tools contém os módulos utilizados por administradores e desenvolvedores para a interação, seja por interfaces do módulo Command Line Interface (CLI), ou outros Cloud Services 4
29 6.6 Proxmox VE 29 Fig. 14: Arquitetura do OpenNebula. baseados em interfaces XML-RPC, libvirt, e APIs do próprio projeto, para a interação com os serviços da infraestrutura do OpenNebula. Nessa camada o componente Scheduler é utilizado para decidir em qual nó do cluster a VM deve ser alocada. Na camada Core o componente Request Manager utiliza interfaces XML-RPC para interagir com os gerenciadores internos. O módulo VM Manager é responsável por controlar os recursos fornecidos para a instanciação de VMs, bem como por gerenciar o ciclo de vida delas; o Host Manager gerencia os diversos servidores físicos; o VN Manager gerencia as redes virtuais atua como um servidor DHCP, e vincula o endereço MAC ao IP de cada uma das VMs. O componente SQL Database armazena as informações de configuração da plataforma, localização física dos servidores, e informações administrativas e de monitoramento. A camada de Drivers interage com a camada Core, refinamento o mecanismo de interação com as diversas soluções de virtualização, armazenamento, rede e demais serviços de nuvem que a infraestrutura suporta. Essa camada possui os seguintes componentes: Virtualization: controle do tipo de virtualização utilizado por diferentes tecnologias, de forma que elas coexistam no mesmo ambiente; Storage: gerência da base de dados de informações de usuários, e da armazenagem física das VMs; Network: controle do acesso remoto às VMs, e gerência de IPs atribuídos; External Cloud: Fornece serviços de expansão dinâmica das capacidades locais de recursos de forma a atender a ambientes federados. 6.6 Proxmox VE Proxmox VE [74] é um ambiente open source que oferece uma plataforma para executar máquinas virtuais com suporte a OpenVZ e KVM. A plataforma oferece uma interface web gráfica para gerência dos nós virtuais e suporte para a migração de máquinas virtuais entre hosts. O ambiente é uma opção para a criação de uma pequena infraestrutura de nuvem. Diferente das outras abordagens, o processo de instalação é automatizado, o que simplifica consideravelmente a criação de ambientes de nuvens. O ambiente também inclui ferramentas para backup e restauração de imagens de VMs. A arquitetura
30 30 da plataforma segue o modelo de clusters, onde um nó mestre se comunica com diversos nós escravos. Fig. 15: Interface Web Administrativa do Proxmox. 6.7 VMware ESX VMware ESX e VMware ESXi [75] fornecem uma infraestrutura de hypervisor para a execução de múltiplas VMs com suporte à virtualização completa. Atualmente essas soluções estão disponíveis para uso comercial, ou licença para uso limitado. Na solução ESX o núcleo de virtualização, conhecido como vmkernel, é incrementado com um console de sistema operacional, ou service console. A função desse console é a de ser uma interface de gerência no host que fornece a virtualização. Diversos agentes são agrupados nesse componente para oferecer serviços de gerência do sistema de virtualização, interface de linha de comando (Command Line Interface - CLI), monitoramento de hardware, agentes para a gerência da infraestrutura de logging, NTP, entre outros, e gerência interna do framework da infraestrutura de virtualização do VMware. No vmkernel apenas é mantido o suporte a VMs e gerência de recursos, tais como CPU, memória, espaço em disco, periféricos, entre outros. A Fig. 16 ilustra a visão geral dessa infraestrutura de virtualização. Por outro lado, a infraestrutura ESXi transfere os agentes da infraestrutura anterior diretamente para o vmkernel, com o objetivo de melhorar o desempenho de gerência do sistema. A Fig. 17 ilustra essa arquitetura. 6.8 Abiquo Abiquo [76] é uma infraestrutura de software open source para a criação e gerência de nuves. O projeto oferece ferramentas para gerência, armazenamento, gerência de redes, dispositivos virtuais,
31 6.8 Abiquo 31 Fig. 16: Arquitetura VMware ESX. Fig. 17: Arquitetura VMware ESXi. entre outros. Uma característica que distingue essa solução das demais é a presença de uma camada de virtualização para o suporte de diversos ambientes tais como Xen, VMWare, KVM, Hyper-V e VirtualBox. Os requisitos da solução Abiquo para a consolidação de servidores permite configurar interfaces de rede para a gerência do tráfego na nuvem. Para ambientes de produção a Abiquo recomenda o uso de pelo menos três NICs: 1) uma para a rede de gerência; 2) outra para a conexão com a Cloud Cluster Network; 3) e outra para a conexão com a rede pública. Uma quarta NIC é recomendada para a rede de persistência. Recomenda-se também que as taxas de transmissão das NICs tenham taxa de transferência iguais ou superiores a 1Gb e o uso de switches dedicados. A arquitetura da plataforma Abiquo é mostrada na Fig. 18. Essa arquitetura segue o modelo de cluster, onde um nó mestre (server node) gerencia as VMs alocadas em diversos nós escravos (cloud nodes). Os principais componentes são descritos como segue: Web Console Interface: por meio de uma interface Web (compatível com Flash Player e Flex API), o usuário pode interagir com o sistema. A plataforma também suporta a interação com APIs RESTful; Abiquo Server: inclui recursos de um servidor de aplicações Web, tais como container Web, servidor DHCP, servidor de s, sistema de gerenciamento de base de dados relacional, e serviços de terceiros;
32 32 Abiquo Remote Services: gerencia interações entre o Abiquo Server e os demais nós do cluster, e entre os demais elementos da plataforma: a) Discovery Manager: gerencia as informações sobre quais máquinas físicas estão agregadas ao sistema; b) Monitor Manager: gerencia os eventos dos nós escravos para o nó mestre; c) Virtualization Manager: gerencia os diversos tipos de tecnologias devirtualização suportados; d) Business Process Manager: gerencia a execução de tarefas assíncronas do sistema (por exemplo, conversão de imagens, persistência de dados, logging, entre outras); e) DHCP Server: gerencia a atribuição de endereços IP para as VMs da plataforma; f) Storage Manager: trata a comunicação entre a plataforma e sistemas de gerência de base de dados; g) Appliance Manager: para a integração de virtual appliances ao sistema. As imagens pré-configuradas podem ser carregadas (uploaded) no sistema por meio de uma conexão HTTP. Virtualized Hardware: essa camada agrega os componentes que dão suporte para diversas tecnologias de virtualização: a) Abiquo Infrastructure Manager: componente da plataforma associado ao nó escravo (cloud node) para simplificar a integração entre o cloud node e o server node. b) Virtual Machine: as VMs são instanciadas junto ao hypervisor instalado em um cloud node. O hypervisor gerencia a rede interna da VM e o acesso a discos virtuais. c) Managed Storage: para o armazenamento são utilizadas API de terceiros de acordo com o tipo de sistema de base de dados utilizado. As informações de gerência da plataforma são separadas das de armazenagem de dados da máquinas virtuais dos usuários. Fig. 18: Arquitetura da Plataforma Abiquo [76].
33 6.9 Google App Engine Google App Engine Ao contrário das outras soluções de nuvem, a App Engine da Google [77] permite que aplicações sejam desenvolvidas e disponibilizadas na nuvem Google gratuitamente. O desenvolvedor Web pode desenvolver a sua aplicação localmente e depois realizar o upload nos servidores da Google. O sistema administrativo se encarrega de fornecer os recursos adequados para que as aplicações executem com êxito. Mais recursos podem ser alocados, mediante pagamento proporcional ao uso, quando as necessidades da aplicação excederem a quota gratuita oferecida. As linguagens de programação suportadas são Go (Google Programming Language), Java e Python. O sistema também oferece integração com os serviços convencionais de autenticação, ou seja, usuários que possui contas no Google podem se logar às aplicações desenvolvidas na nuvem, com as mesmas credenciais de sua conta de s. O armazenamento de dados é similar ao das bases de dados convencionais, mas utiliza a solução proprietária da Google, conhecida como Google File System (GFS). Apesar de ser altamente tolerante a falhas, ainda são limitadas as opções para backup. Além disso, apesar de utilizar linguagens de programação open source, todo o restante da infraestrutura é proprietário, ainda que muitas tecnologias de código fonte aberto sejam utilizadas [78]. 7 Considerações Finais O texto apresentado tem o objetivo de ser uma fonte de referência bibliográfica das principais soluções gratuitas e, quando possível, de código-fonte aberto, e que dão suporte à virtualização e à Computação em Nuvem. As diferentes características dessas soluções devem ser consideradas para avaliar o tipo de infraestrutura de computação que se deseja ter na organização.
34 34 REFERÊNCIAS Referências [1] Verdi, F.; Rothenberg, C. E.; Pasquini, R.; Magalhães, M. F. Novas Arquiteturas de Data Center para Cloud Computing. XXVIII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos, [2] Endo, P. T.; Gonçalves, G. E.; Kelner, J.; Sadok, D. A Survey on Open-source Cloud Computing Solutions. XXVIII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos - VIII Workshop em Clouds, Grids e Aplicações, [3] Vaquero, L. M.; Merino, L. R.; Caceres, J.; Lindner, M. A break in the clouds: towards a cloud definition. ACM SIGCOMM Computer Communication Review, [4] Mell, P.; Grace, T. NIST Working Definition of Cloud Computing. Technical report, [5] Mell, P.; Grace, T. The NIST Definition of Cloud Computing. Technical report, Disponível em: [6] Cunningham, L. Defining Cloud Computing: Part 6 - IaaS, Disponível em: [7] Amazon Elastic Compute Cloud (Amazon EC2). Disponível em: [8] FlexiScale public cloud. Disponível em: [9] Ning, Disponível em: [10] Bungee Connect, Disponível em: [11] Windows Azure Platform, Disponível em: [12] Zoho CRM - Affordable On-demand CRM, Disponível em: [13] Salesforce, Disponível em: [14] Google Apps, Disponível em: [15] Facebook, Disponível em: [16] Carissimi, A. Virtualização: da teoria a soluções. In Mini-curso - SBRC, [17] OpenVZ, Disponível em: [18] Menascé, D. A. Virtualization: Concepts, Applications, and Performance Modeling. Int. CMG Conference 2005: , [19] VMware, Disponível em: [20] The User-mode Linux Kernel, Disponível em:
35 REFERÊNCIAS 35 [21] XenServer. Disponível em: [22] Kernel-based Virtual Machine, Disponível em: [23] VirtualBox, Disponível em: [24] AMD - Advanced Micro Devices, Disponível em: [25] Intel, Disponível em: [26] Oracle Corporation. Oracle VM VirtualBox - User Manual, Disponível em: [27] Microsoft.NET Framework, Disponível em: [28] Jones, M. T. Anatomia de uma nuvem de software livre, [29] Understanding Full Virtualization, Paravirtualization, and Hardware Assist - White paper, Disponível em: [30] Intel Virtualization Technology, Disponível em: [31] Answers Corporation. Virtual Machine, [32] Stallings, W. Operating Systems: Internal and Design Principles. Prentice Hall, [33] Du, W. Laboratory for Computer Security Education. Virtual Private Network (VPN), Syracuse University. Disponivel em: wedu/seed/labs/vpn/vpn.pdf, [34] Spinellis, D.; Gousios, G. Beautiful Architecture, 1st Edition, chapter Part 3: Systems Architecture. Chapter 7: Xen and the Beauty of Virtualization. Paravirtualization. O Reilly Media, Inc., [35] Mattos, D. M. F. Virtualização Total e Paravirtualização. Disponível em: [36] Domingues, B. Virtualização Assistida por Hardware, o que é isso? Disponivel em: [37] OpenVZ, Disponível em: [38] Riondato, M. FreeBSD Handbook - Chapter 15 Jails. Disponível em: [39] Oracle Corporation. Solaris Zones/Containers, Disponível em:
36 36 REFERÊNCIAS [40] Linux VServer, Disponível em: [41] Parallels, Disponível em: [42] TechGenix. Virtualization FAQ: What is the difference between emulation, native virtualization, and paravirtualization?, Disponível em: [43] VMware, Inc. [44] Howto: Linux and Windows virtualization with KVM and QEMU, Disponível em: [45] Singh, A. An introduction to virtualization, [46] Filho, D. S. F. et al. Técnicas para Análise Dinâmica de Malware. XI Simpósio Brasileiro em Segurança da Informação e Sistemas Computacionais: ISBN: , [47] DOSBox, an x86 emulator with DOS. [48] QEMU, Disponível em: [49] Lawton, K. Bochs - think inside the bochs, bochs.shourceforge.net. [50] MobileSim, the MobileRobots simulator, Disponível em: robots.mobilerobots.com/mobilesim. [51] Player/Stage. Disponível em: [52] Cameyo - Free Application Virtualization. Disponível em: [53] Apple. IPhone. Disponível em: [54] FreeNX. Free Software (GPL) Implementation of the NX Server. Disponível em: [55] RealVNC - VNC remote control software. Disponível em: [56] Brockmeier, J. Z. Planning Best Virtualization Strategies for Your Enterprise Disponível em: planning-best-virtualization-strategies-for-your-enterprise. [57] Open vswitch - An Open Virtual Switch, Disponível em: [58] Open Virtualization Format, Disponível em: [59] Davis, D. VMware Version Analysis, Disponível em:
37 REFERÊNCIAS 37 [60] P. Barham et al. Xen and the art of virtualization. SIGOPS Oper. Syst. Rev., 37(5): , October [61] QEMU, Disponível em: [62] Libvirt - virtualization API, Disponível em: [63] Schauer, D. LXC Howto. Disponível em: [64] LXC - Linux Containers. Disponível em: [65] Helsley, M. LXC: Linux container tools, Disponível em: [66] Amazon Elastic IP. Disponível em: [67] Murari, K. et al. Eucalyptus Beginner s Guide - UEC Edition - Ubuntu Lucid. CSS Corp, [68] Panettieri, J. Ubuntu cloud - openstack wins, eucalyptus loses. Disponível em: [69] Rackspace Cloud Computing. OpenStack Cloud Software. Disponível em: [70] Linux Magazine, Disponível em: [71] OpenXenManager. Disponível em: [72] Nimbus. Disponível em: [73] OpenNebula Project Leads. OpenNebula. Disponível em: [74] Proxmox. Proxmox VE. Disponível em: [75] VMware, Inc. VMware ESX and VMware ESXi. Disponível em: [76] Abiquo: Architecture Overview. Disponível em: [77] Google App Engine, Disponível em: [78] Galpin, M. Realities of open source cloud computing, Part 1: Not all clouds are equal, Disponível em:
SISTEMAS OPERACIONAIS. Maquinas Virtuais e Emuladores
SISTEMAS OPERACIONAIS Maquinas Virtuais e Emuladores Plano de Aula Máquinas virtuais Emuladores Propriedades Benefícios Futuro Sistemas de Computadores Os sistemas de computadores são projetados com basicamente
4 Estrutura do Sistema Operacional. 4.1 - Kernel
1 4 Estrutura do Sistema Operacional 4.1 - Kernel O kernel é o núcleo do sistema operacional, sendo responsável direto por controlar tudo ao seu redor. Desde os dispositivos usuais, como unidades de disco,
Introdução a Virtualização. Sergio Roberto Charpinel Junior Profa. Roberta Lima Gomes
Introdução a Virtualização Sergio Roberto Charpinel Junior Profa. Roberta Lima Gomes Por que virtualizar? Descentralização de recursos computacionais Cloud computing Plena utilização de recursos físicos
Sistemas Operacionais 1/66
Sistemas Operacionais 1/66 Roteiro Máquinas virtuais Emuladores Propriedades Benefícios Futuro 2/66 Sistemas de Computadores Os sistemas de computadores são projetados com basicamente 3 componentes: hardware
Virtualização: VMWare e Xen
Virtualização: VMWare e Xen Diogo Menezes Ferrazani Mattos Professor: Otto Carlos Disciplina: Redes I Universidade Federal do Rio de Janeiro POLI/COPPE 1 Introdução Virtualização Divisão da máquina física
Sistemas Operacionais. Roteiro. Sistemas de Computadores. Os sistemas de computadores são projetados com basicamente 3 componentes: Marcos Laureano
Sistemas Operacionais Marcos Laureano 1/66 Roteiro Máquinas virtuais Emuladores Propriedades Benefícios Futuro 2/66 Sistemas de Computadores Os sistemas de computadores são projetados com basicamente 3
UNIVERSIDADE FEDERAL DE SANTA CATARINA UFSC DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA INE BACHARELADO EM CIÊNCIAS DA COMPUTAÇÃO.
UNIVERSIDADE FEDERAL DE SANTA CATARINA UFSC DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA INE BACHARELADO EM CIÊNCIAS DA COMPUTAÇÃO Xen Hypervisor Glauco Neves 07132022 Guilherme Pacheco 07232063 INE 5412-0432
Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2
Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2 Aula 3 Virtualização de Sistemas 1. Conceito Virtualização pode ser definida
Aplicações. Sistema Operacional Hardware. Os sistemas de computadores são projetados com basicamente 3 componentes: Máquinas Virtuais e Emuladores
Máquinas Virtuais e Emuladores Marcos Aurelio Pchek Laureano Sistemas de Computadores Os sistemas de computadores são projetados com basicamente 3 componentes: hardware sistema operacional aplicações Sistemas
A computação na nuvem é um novo modelo de computação que permite ao usuário final acessar uma grande quantidade de aplicações e serviços em qualquer
A computação na nuvem é um novo modelo de computação que permite ao usuário final acessar uma grande quantidade de aplicações e serviços em qualquer lugar e independente da plataforma, bastando para isso
Prof. José Maurício S. Pinheiro UniFOA 2009-2
Tecnologias WEB Virtualização de Sistemas Prof. José Maurício S. Pinheiro UniFOA 2009-2 Conceitos Virtualização pode ser definida como técnica que combina ou divide recursos computacionais para prover
Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2
Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2 Aula 1 Conceitos da Computação em Nuvem A computação em nuvem ou cloud computing
Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO
Conceitos básicos e serviços do Sistema Operacional Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO Tipos de serviço do S.O. O S.O.
Prof. Ms. José Eduardo Santarem Segundo [email protected]. Demonstrar o impacto que o tema virtualização tem representado no mercado
Prof. Ms. José Eduardo Santarem Segundo [email protected] Demonstrar o impacto que o tema virtualização tem representado no mercado de TI. Apresentar alguns conceitos e técnicas sobre a tecnologia
Gabriel Oliveira do Nascimento Rogério Libarino Aguilar. UFF - Universidade Federal Fluminense
Gabriel Oliveira do Nascimento Rogério Libarino Aguilar 1 Introdução Mododelo: Hardware -> Sistema Operacional -> Aplicações Aplicação desenvolvida para um SO. Capacidade de processamento aumentando bastante
Agenda. Histórico Máquinas virtuais X Emuladores Vantagens & Desvantagens Vmware Quemu Xen UML Comparação entre VM's Conclusão
Máquinas Virtuais Agenda Histórico Máquinas virtuais X Emuladores Vantagens & Desvantagens Vmware Quemu Xen UML Comparação entre VM's Conclusão Histórico Mainframe É um computador de grande porte, dedicado
ATIVIDADE 1 MÁQUINAS VIRTUAIS. 1.1 Arquiteturas não virtualizadas
ATIVIDADE 1 MÁQUINAS VIRTUAIS Existem hoje diversas tecnologias e produtos para virtualização de computadores e ambientes de execução, o que pode gerar uma certa confusão de conceitos. Apesar disso, cada
Planejamento Estratégico de TI. Felipe Pontes [email protected]
Planejamento Estratégico de TI Felipe Pontes [email protected] VPN Virtual Private Network Permite acesso aos recursos computacionais da empresa via Internet de forma segura Conexão criptografada
Capítulo 1. Introdução
Capítulo 1 Introdução 1.1 O que é um sistema operacional 1.2 História dos sistemas operacionais 1.3 O zoológico de sistemas operacionais 1.4 Revisão sobre hardware de computadores 1.5 Conceitos sobre sistemas
Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 2. Cursos de Computação
Cursos de Computação Sistemas Operacionais Prof. M.Sc. Sérgio Teixeira Aula 05 Estrutura e arquitetura do SO Parte 2 Referência: MACHADO, F.B. ; MAIA, L.P. Arquitetura de Sistemas Operacionais. 4.ed. LTC,
ANDRE KUSUMOTO VIRTUALIZAÇÃO
ANDRE KUSUMOTO VIRTUALIZAÇÃO OBJETIVO Objetivo do deste trabalho é o autoaprendizado e a disseminação do conhecimento empregado no conceito de virtualização. Assim como a demostração de seu uso em conjunto
Classificação::Modelo de implantação
Classificação::Modelo de implantação Modelo de implantação::privado Operada unicamente por uma organização; A infra-estrutura de nuvem é utilizada exclusivamente por uma organização: Nuvem local ou remota;
Faculdade Integrada do Ceará FIC Graduação em Redes de Computadores
Faculdade Integrada do Ceará FIC Graduação em Redes de Computadores Disciplina - Sistemas Distribuídos Prof. Andrey Halysson Lima Barbosa Aula 12 Computação em Nuvem Sumário Introdução Arquitetura Provedores
Professor Esp.: Douglas Diego de Paiva [email protected]
VIRTUALIZAÇÃO Professor Esp.: Douglas Diego de Paiva [email protected] Virtualização o que é? É uma forma de esconder as características físicas de uma plataforma computacional dos usuários, emulando
Virtualização de Sistemas Operacionais
Virtualização de Sistemas Operacionais Felipe Antonio de Sousa 1, Júlio César Pereira 1 1 Universidade Paranaense (Unipar) Paranavaí PR Brasil [email protected], [email protected] Resumo.
SISTEMAS OPERACIONAIS
SISTEMAS OPERACIONAIS Tópico 4 Estrutura do Sistema Operacional Prof. Rafael Gross [email protected] FUNÇÕES DO NUCLEO As principais funções do núcleo encontradas na maioria dos sistemas
ETEC RAPOSO TAVARES GESTÃO DE SISTEMAS OPERACIONAIS I. Máquina Virtual. Instalação de S.O. em dual boot. 1º Semestre 2010 PROF.
ETEC RAPOSO TAVARES GESTÃO DE SISTEMAS OPERACIONAIS I Máquina Virtual Instalação de S.O. em dual boot 1º Semestre 2010 PROF. AMARAL Na ciência da computação, máquina virtual é o nome dado a uma máquina,
Sistemas Distribuídos
Sistemas Distribuídos Modelo Cliente-Servidor: Introdução aos tipos de servidores e clientes Prof. MSc. Hugo Souza Iniciando o módulo 03 da primeira unidade, iremos abordar sobre o Modelo Cliente-Servidor
Unidade III FUNDAMENTOS DE SISTEMAS. Prof. Victor Halla
Unidade III FUNDAMENTOS DE SISTEMAS OPERACIONAIS Prof. Victor Halla Conteúdo Arquitetura de Processadores: Modo Operacional; Velocidade; Cache; Barramento; Etc. Virtualização: Maquinas virtuais; Gerenciamento
O que é Cloud Computing?
O que é Cloud Computing? Referência The Economics Of The Cloud, Microsoft, Nov. 2010 Virtualização, Brasport, Manoel Veras, Fev. 2011. 2 Arquitetura de TI A arquitetura de TI é um mapa ou plano de alto
Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064
Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Processos- Clientes, Servidores, Migração Capítulo 3 Agenda Clientes Interfaces de usuário em rede Sistema X Window Software do lado cliente para
ESTUDO DE CASO WINDOWS VISTA
ESTUDO DE CASO WINDOWS VISTA História Os sistemas operacionais da Microsoft para PCs desktop e portáteis e para servidores podem ser divididos em 3 famílias: MS-DOS Windows baseado em MS-DOS Windows baseado
Xen Cloud Platform Xen descomplicado
Xen Cloud Platform Xen descomplicado CAPA A Xen Cloud Platform facilita muito a criação e o gerenciamento de máquinas virtuais sobre o hypervisor Xen. por Boris Quiroz e Stephen Spector A revolução da
Sistemas Operacionais
Sistemas Operacionais Gerência de processos Controle e descrição de processos Edson Moreno [email protected] http://www.inf.pucrs.br/~emoreno Sumário Representação e controle de processos pelo SO Estrutura
Cloud Computing. Andrêza Leite. [email protected]
Cloud Computing Andrêza Leite [email protected] Roteiro O que é cloud computing? Classificação O que está 'por traz' da cloud? Exemplos Como montar a sua? O que é cloud computing? Cloud Computing O
A SALA DE AULA é meu paraíso. Nela me realizo, nela exercito minha cidadania e nela me sinto útil.
Virtualização Meu nome: Nome de guerra: Meu e-mail: Marcos Vinicios Bueno Marques Professor Cidão [email protected] Quem sou? Professor e coordenador de cursos de TI do Senac Informática em Porto Alegre,
Virtualização Gerencia de Redes Redes de Computadores II
Virtualização Gerencia de Redes Redes de Computadores II *Créditos: baseado no material do Prof. Eduardo Zagari Virtualização - Introdução Introduzido nos anos 60 em Mainframes Em 1980 os microcomputadores
Sistemas Operacionais
Sistemas Operacionais Aula 6 Estrutura de Sistemas Operacionais Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso
Soluções de Gerenciamento de Clientes e de Impressão Universal
Soluções de Gerenciamento de Clientes e de Impressão Universal Guia do Usuário Copyright 2007 Hewlett-Packard Development Company, L.P. Windows é uma marca registrada nos Estados Unidos da Microsoft Corporation.
Virtualização. Prof. Emiliano Monteiro
Virtualização Prof. Emiliano Monteiro Conceitos Virtualização significa criar uma versão virtual de um dispositivo ou recurso, como um servidor, dispositivo de armazenamento, rede ou até mesmo um sistema
Sistema Operacional Correção - Exercício de Revisão
Prof. Kleber Rovai 1º TSI 22/03/2012 Sistema Operacional Correção - Exercício de Revisão 1. Como seria utilizar um computador sem um sistema operacional? Quais são suas duas principais funções? Não funcionaria.
Fernando Seabra Chirigati. Universidade Federal do Rio de Janeiro EEL879 - Redes de Computadores II Professores Luís Henrique Costa e Otto Duarte
Fernando Seabra Chirigati Universidade Federal do Rio de Janeiro EEL879 - Redes de Computadores II Professores Luís Henrique Costa e Otto Duarte Introdução Grid x Nuvem Componentes Arquitetura Vantagens
SISTEMAS OPERACIONAIS
SISTEMAS OPERACIONAIS Arquitetura Sistemas Operacionais Andreza Leite [email protected] Plano de Aula Sistemas monolíticos Sistemas em camadas Sistemas micro-núcleo Modelo Cliente-Servidor Máquinas
Virtualização e Consolidação de Centro de Dados O Caso da UTAD António Costa - [email protected]
Universidade de Trás-os-Montes e Alto Douro Virtualização e Consolidação de Centro de Dados O Caso da UTAD António Costa - [email protected] Agenda A UTAD Virtualização Uma definição Introdução e abrangência
Redes de Computadores
Redes de Computadores 3º Ano Sistemas de Informação 2008 Aula 05A: Hub/Switch/Gateway Servidores e Virtualização Prof. Msc. Ricardo Slavov [email protected] Roteiro Pedagógico HUB Switch Bridge
Processos (Threads,Virtualização e Migração de Código)
Processos (Threads,Virtualização e Migração de Código) Roteiro Processos Threads Virtualização Migração de Código O que é um processo?! Processos são programas em execução. Processo Processo Processo tem
Segurança da Informação
INF 108 Segurança da Informação Computação em Nuvem Prof. João Henrique Kleinschmidt Introdução Centralização do processamento Surgimento da Teleinformática Década de 60 Execução de programas localmente
Virtualização. O conceito de VIRTUALIZAÇÃO
Virtualização A virtualização está presente tanto no desktop de um entusiasta pelo assunto quanto no ambiente de TI de uma infinidade de empresas das mais variadas áreas. Não se trata de "moda" ou mero
Virtualização e Criação de uma rede Virtual utilizando Virtual Box Professor: João Paulo de Brito Gonçalves
Virtualização e Criação de uma rede Virtual utilizando Virtual Box Professor: João Paulo de Brito Gonçalves Anatomia de uma máquina virtual Cada máquina virtual é um sistema completo encapsulado em um
Sistemas Operacionais
UNIVERSIDADE BANDEIRANTE DE SÃO PAULO INSTITUTO POLITÉCNICO CURSO DE SISTEMAS DE INFORMAÇÃO Sistemas Operacionais Notas de Aulas: Tópico 33 e 34 Virtualização São Paulo 2009 Virtualização Ao falar em virtualização,
João Víctor Rocon Maia Engenharia de Computação - UFES
João Víctor Rocon Maia Engenharia de Computação - UFES Agenda Quem usa? Conceito Ilustração Vantagens Tipologia Topologia Como fazer? O que é preciso? Infraestrutura Sistema Operacional Software Eucalyptus
Online Help StruxureWare Data Center Expert
Online Help StruxureWare Data Center Expert Version 7.2.7 Appliance virtual do StruxureWare Data Center Expert O servidor do StruxureWare Data Center Expert 7.2 está agora disponível como um appliance
Sistemas Operacionais
UNIVERSIDADE BANDEIRANTE DE SÃO PAULO INSTITUTO POLITÉCNICO CURSO DE SISTEMAS DE INFORMAÇÃO Sistemas Operacionais Notas de Aulas: Tópicos 7 e 8 Estrutura do Sistema Operacional São Paulo 2009 1 Sumário
COMPUTAÇÃO EM NUVEM: UM FUTURO PRESENTE
COMPUTAÇÃO EM NUVEM: UM FUTURO PRESENTE Andressa T.R. Fenilli 1, Késsia R.C.Marchi 1 1 Universidade Paranaense (UNIPAR) Paranavaí PR Brasil [email protected], [email protected] Resumo. Computação em
SISTEMAS OPERACIONAIS. Apostila 03 Estrutura do Sistema Operacional UNIBAN
SISTEMAS OPERACIONAIS Apostila 03 Estrutura do Sistema Operacional UNIBAN 1.0 O Sistema Operacional como uma Máquina Virtual A arquitetura (conjunto de instruções, organização de memória, E/S e estrutura
Prof. Victor Halla. Unidade IV FUNDAMENTOS DE SISTEMAS
Prof. Victor Halla Unidade IV FUNDAMENTOS DE SISTEMAS OPERACIONAIS Conteúdo Estudo de Casos; Linux e Windows; Características; VMware e Xen; Características; Ferramentas; Custo total de posse TCO = Total
Senado Federal Questões 2012
Senado Federal Questões 2012 Sistemas Operacionais Prova de Analista de Sistemas Prof. Gustavo Van Erven Senado Federal Questões 2012 Rede Social ITnerante http://www.itnerante.com.br/ Vídeo Aulas http://www.provasdeti.com.br/
Intranets. FERNANDO ALBUQUERQUE Departamento de Ciência da Computação Universidade de Brasília 1.INTRODUÇÃO
Intranets FERNANDO ALBUQUERQUE Departamento de Ciência da Computação Universidade de Brasília 1.INTRODUÇÃO As intranets são redes internas às organizações que usam as tecnologias utilizadas na rede mundial
IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira
IFPE Disciplina: Sistemas Operacionais Prof. Anderson Luiz Moreira SERVIÇOS OFERECIDOS PELOS SOS 1 Introdução O SO é formado por um conjunto de rotinas (procedimentos) que oferecem serviços aos usuários
SISTEMAS DISTRIBUÍDOS
SISTEMAS DISTRIBUÍDOS Cluster, Grid e computação em nuvem Slide 8 Nielsen C. Damasceno Introdução Inicialmente, os ambientes distribuídos eram formados através de um cluster. Com o avanço das tecnologias
Programação Concorrente Processos e Threads
Programação Concorrente Processos e Threads Prof. Eduardo Alchieri Processos O conceito mais central em qualquer sistema operacional é o processo Uma abstração de um programa em execução Um programa por
Visão Geral de Sistemas Operacionais
Visão Geral de Sistemas Operacionais Sumário Um sistema operacional é um intermediário entre usuários e o hardware do computador. Desta forma, o usuário pode executar programas de forma conveniente e eficiente.
O modelo ISO/OSI (Tanenbaum,, 1.4.1)
Cenário das redes no final da década de 70 e início da década de 80: Grande aumento na quantidade e no tamanho das redes Redes criadas através de implementações diferentes de hardware e de software Incompatibilidade
Gerenciamento e Interoperabilidade de Redes
EN-3610 Gerenciamento e Interoperabilidade de Redes Computação em Nuvem Introdução Centralização do processamento Surgimento da Teleinformática Década de 60 Execução de programas localmente Computadores
VIRTUALIZAÇÃO CONVENCIONAL
VIRTUALIZAÇÃO CONVENCIONAL Sera usado o VirtualBox 5.0.8 a versão mais atual e estável da aplicação, para virtualização de um sistema Linux sobre a plataforma Windows. Para esse modelo pratico de virtualização
Virtualização. Presente e futuro
Virtualização Presente e futuro O que é virtualização? Virtualização é o processo de executar vários sistemas operacionais em uma única máquina. Cada máquina virtual é um ambiente completo e com todos
SISTEMAS OPERACIONAIS
SISTEMAS OPERACIONAIS Turma de Redes AULA 06 www.eduardosilvestri.com.br [email protected] Estrutura do Sistema Operacional Introdução É bastante complexo a estrutura de um sistema operacional,
MÓDULO 8 ARQUITETURA DOS SISTEMAS DE BANCO DE DADOS
MÓDULO 8 ARQUITETURA DOS SISTEMAS DE BANCO DE DADOS Quando falamos em arquitetura, normalmente utilizamos esse termo para referenciar a forma como os aplicativos computacionais são estruturados e os hardwares
Sistemas Operacionais 2014 Introdução. Alexandre Augusto Giron [email protected]
Sistemas Operacionais 2014 Introdução Alexandre Augusto Giron [email protected] Roteiro Sistemas Operacionais Histórico Estrutura de SO Principais Funções do SO Interrupções Chamadas de Sistema
TUTORIAL VMWARE WORKSTATION 8. Aprenda a instalar e configurar corretamente uma máquina virtual utilizando VMware Workstation com este tutorial
TUTORIAL VMWARE WORKSTATION 8 Aprenda a instalar e configurar corretamente uma máquina virtual utilizando VMware Workstation com este tutorial INTRODUÇÃO O uso de máquinas virtuais pode ser adequado tanto
Arquitetura de Sistemas Operacionais Machado/Maia. Arquitetura de Sistemas
Arquitetura de Sistemas Operacionais Capítulo 4 Estrutura do Sistema Operacional Cap. 4 Estrutura do Sistema 1 Sistemas Operacionais Pitágoras Fadom Divinópolis Material Utilizado na disciplina Sistemas
Um Driver NDIS Para Interceptação de Datagramas IP
Um Driver NDIS Para Interceptação de Datagramas IP Paulo Fernando da Silva [email protected] Sérgio Stringari [email protected] Resumo. Este artigo apresenta o desenvolvimento de um driver NDIS 1 para
Virtualização - VMWare e Xen
Virtualização - VMWare e Xen A virtualização consiste na emulação de ambientes isolados, capazes de rodar diferentes sistemas operacionais dentro de uma mesma máquina, aproveitando ao máximo a capacidade
Sistemas Operacionais. Conceitos de um Sistema Operacional
Sistemas Operacionais Conceitos de um Sistema Operacional Modo usuário e Modo Kernel Como já vimos são ambientes de execução diferentes no processador Há um conjunto de funções privilegiadas acessadas
Sistemas Distribuídos Capítulos 3 e 4 - Aula 4
Sistemas Distribuídos Capítulos 3 e 4 - Aula 4 Aula passada Threads Threads em SDs Processos Clientes Processos Servidores Aula de hoje Clusters de Servidores Migração de Código Comunicação (Cap. 4) Fundamentos
CONCEITOS E APLICAÇÕES DA COMPUTAÇÃO EM NUVEM
CONCEITOS E APLICAÇÕES DA COMPUTAÇÃO EM NUVEM Rogério Schueroff Vandresen¹, Willian Barbosa Magalhães¹ ¹Universidade Paranaense(UNIPAR) Paranavaí-PR-Brasil [email protected], [email protected]
DESENVOLVIMENTO PARA DISPOSITIVOS MÓVEIS. PROFª. M.Sc. JULIANA H Q BENACCHIO
DESENVOLVIMENTO PARA DISPOSITIVOS MÓVEIS PROFª. M.Sc. JULIANA H Q BENACCHIO Links importantes http://www.android.com/ Site oficial de toda a documentação, downloads e informações sobre a plataforma. http://developer.android.com/
Sistemas Operacionais
Sistemas Operacionais Sistemas Operacionais Prof. Marcelo Sabaris Carballo Pinto Gerenciamento de Dispositivos Gerenciamento de Dispositivos de E/S Introdução Gerenciador de Dispositivos Todos os dispositivos
Sistemas Operacionais Introdução. Professora: Michelle Nery
Sistemas Operacionais Introdução Professora: Michelle Nery Área de Atuação do Sistema Operacional Composto de dois ou mais níveis: Tipo de Sistemas Operacionais Sistemas Operacionais Monotarefas Sistemas
Resumo. Prof. Alejandro - Introdução à Sistemas Operacionais Resumo Informativo, complemente o material assistindo as Aulas 19/08/2015 1
Resumo 19/08/2015 1 1. Tipos de Software 2. Introdução aos Sistemas Operacionais 3. Os Arquivos 4. Funções do Sistema Operacional 5. Programas Utilitários do Sistema Operacional 6. Termos Básicos 7. Tipos
Administração de Sistemas de Informação Gerenciais
Administração de Sistemas de Informação Gerenciais UNIDADE III: Infraestrutura de Tecnologia da Informação Atualmente, a infraestrutura de TI é composta por cinco elementos principais: hardware, software,
Computação na Nuvem: Virtualização e Migração de VM. André Meireles Estêvão Monteiro Monique Soares
Computação na Nuvem: Virtualização e Migração de VM André Meireles Estêvão Monteiro Monique Soares Agenda Overview Histórico Abordagens Desafios em x86 Snapshots Virtualização de Hardware/Plataforma/Sevidor:
Xen e a Arte da Virtualização
Xen e a Arte da Virtualização Paul Barham, Boris Dragovic, Keir Fraser, Steven Hand, Tim Harris, Alex Ho, Rolf Neugebauer, Ian Pratt, Andrew Warfield University of Cambridge Computer Laboratory Microsoft
Laboratório de Redes. Professora Marcela Santos [email protected]
Laboratório de Redes Professora Marcela Santos [email protected] Active Directory (AD) Samba Máquina virtual Criação de uma máquina virtual Instalação do Windows Server O Active Directory (AD) é um
Tópicos Especiais em Redes de Telecomunicações
Tópicos Especiais em Redes de Telecomunicações Redes definidas por software e Computação em Nuvem Prof. Rodrigo de Souza Couto Informações Gerais Prof. Rodrigo de Souza Couto E-mail: [email protected]
Automação de Locais Distantes
Automação de Locais Distantes Adaptação do texto Improving Automation at Remote Sites da GE Fanuc/ Water por Peter Sowmy e Márcia Campos, Gerentes de Contas da. Nova tecnologia reduz custos no tratamento
Forneça a próxima onda de inovações empresariais com o Open Network Environment
Visão geral da solução Forneça a próxima onda de inovações empresariais com o Open Network Environment Visão geral À medida que tecnologias como nuvem, mobilidade, mídias sociais e vídeo assumem papéis
Figura 01 Kernel de um Sistema Operacional
01 INTRODUÇÃO 1.5 ESTRUTURA DOS SISTEMAS OPERACIONAIS O Sistema Operacional é formado por um Conjunto de rotinas (denominado de núcleo do sistema ou kernel) que oferece serviços aos usuários e suas aplicações
Windows 2008 Server. Windows 2008 Server IFSP Boituva Prof. Sérgio Augusto Godoy. www.profsergiogodoy.com sergiogutogodoy@hotmail.
Windows 2008 Server IFSP Boituva Prof. Sérgio Augusto Godoy www.profsergiogodoy.com [email protected] Windows 2008 Server Construído sob o mesmo código do Vista Server Core (Instalação somente
SFD 2010. Carla Souza Otacílio Lacerda
SFD 2010 Carla Souza Otacílio Lacerda Virtualização "Em computação, é uma forma de esconder as características físicas de uma plataforma computacional dos utilizadores, mostrando outro hardware virtual,
SO - Conceitos Básicos. Introdução ao Computador 2010/01 Renan Manola
SO - Conceitos Básicos Introdução ao Computador 2010/01 Renan Manola Definição de SO É uma camada de software que opera entre o hardware e os programas aplicativos voltados ao usuário final. É uma estrutura
CA Access Control for Virtual Environments
PERGUNTAS FREQUENTES for Virtual Environments Outubro de 2011 Dez principais perguntas 1. O que é o for Virtual Environments?... 2 2. Quais são os principais benefícios do for Virtual Environments?...
Roteamento e Comutação
Roteamento e Comutação Design de Rede Local Design Hierárquico Este design envolve a divisão da rede em camadas discretas. Cada camada fornece funções específicas que definem sua função dentro da rede
CLOUD COMPUTING. Andrêza Leite. [email protected]
CLOUD COMPUTING Andrêza Leite [email protected] Roteiro O que é cloud computing? Classificação O que está 'por traz' da cloud? Exemplos Como montar a sua? O que é cloud computing? Cloud Computing
