Monografia

Document Sample
Monografia Powered By Docstoc
					          Universidade Federal de Campina Grande
         Centro de Engenharia Elétrica e Informática
        Unidade Acadêmica de Sistemas e Computação
            Graduação em Ciência de Computação




       Expansão do portfólio de virtualização do OurGrid




                    Carla de Araujo Souza
                  Isaac Leal da Cunha Lima
                Tiago Oliveira de Albuquerque



             Monografia submetida à Coordenação do curso de Ciência da Computação
             da Universidade Federal de Campina Grande - Campus I como resultado das
             disciplinas Projeto em Computação I e II.




     ÁREA DE CONCENTRAÇÃO: CIÊNCIA DA COMPUTAÇÃO

LINHA DE PESQUISA: GRADES COMPUTACIONAIS E VIRTUALIZAÇÃO



          RODRIGO DE ALMEIDA VILAR DE MIRANDA
                       (CLIENTE)




                  Campina Grande, Paraíba, Brasil
Lista de Tabelas
Lista de Figuras
Sumário
1. Introdução

  Contexto

   Pessoas envolvidas

   Objetivos

2. Processo de Desenvolvimento

  Papeis

  Planejamento

  Cronograma

3. Worker

  Refatoramento

  Resultados

  Arquitetura

4. Virtualização

 Execução em ambientes seguros

 KVM

 VBox

5. Implementação



6. Deployment

  Instalação das tecnologias de virtualização

   KVM

   VirtualBox

7. Considerações Finais
Capítulo 1

Introdução
1.1 Contexto


Segurança é um aspecto importante na computação em grade, pois é preciso proteger os recursos,
os usuários e o próprio middleware da grade. Nas grades entre pares e de livre entrada, as
questões de segurança se tornam mais complexas, devido a ausência de identidades fortes no
sistema. Na realidade, não existe uma solução única que satisfaça os requisitos de todos os
usuários deste tipo de grade. Diante desta dificuldade, no OurGrid foi implementado um
portfólio de soluções de segurança com o objetivo de atender diferentes classes de usuários.

       Dentre as soluções incluídas neste portfólio se destaca a virtualização. Mesmo sendo uma
solução comprovadamente eficaz, alguns problemas impedem sua adoção de maneira mais ampla
pelos usuários da grade. Por exemplo, a sobrecarga imposta pelo middleware de virtualização
aumenta o tempo de execução das tarefas. Isto implica aos usuários da grade a escolha entre
proteger seus recursos ou utilizá-lo de maneira mais eficiente.

       Adicionalmente aos aspectos de segurança, técnicas de virtualização são bastante úteis
para incrementar o grau de utilização dos recursos compartilhados. É possível construir
máquinas virtuais que atendam às necessidades específicas de cada usuário, deste modo um
mesmo recurso pode ter seus serviços modificados (de maneira barata) ao longo do tempo para
atender à diferentes necessidades.

       Esse documento foi dividido da seguinte forma: no capítulo 2 descreve o processo de
desenvolvimento do suporte pelo componente Worker à duas tecnologias de virtualização. No
catpítulo 3 são descritos os resultados do refatoramento do código já existente do componente
Worker, bem como a sua nova arquitetura. Neste relatório introduzimos sobre os tipos de
virtualização, aprofundando mais nas tecnologias Virtual Box e Kernel Virtualization Linux
(KVM), localizado no capítulo 4. A implementação está detalhada no capítulo 5 e a realização do
deployment do OurGrid e essas novas tecnologias de virtualização estão descritas no capítulo 6.

       O Anexo 1 possui uma lista de todos os pacotes instalados na máquina virtual. Sua leitura
é recomendada para aqueles que gostariam de saber quais aplicativos estão disponíveis.




1.3 Pessoas Envolvidas



1.4 Objetivos



Avaliar e utilizar outras tecnologias de virtualização no OurGrid que sejam eficazes na proteção
dos recursos (máquinas compartilhadas na grade) e eficientes (não impliquem em uma
sobrecarga expressiva no poder de processamento dos recursos compartilhados).

       Projetar e implementar a virtualização do worker utilizando as tecnologias escolhidas a
partir do estudo anterior, pois atualmente apenas as tecnologias VMWare Server e Vserver são
oferecidas, o que limita o seu uso. Com o oferecimento de mais tecnologias, as restrições de uso
do OurGrid diminuem, ampliando o público capaz de executar seus jobs.
Capítulo 2

Processo de Desenvolvimento


O processo de desenvolvimento utilizado na implementação foi o Extreme Programming (XP).
XP é uma metodologia de desenvolvimento de software, nascida nos Estados Unidos ao final da
década de 90. Vem fazendo sucesso em diversos países, por ajudar a criar sistemas de melhor
qualidade, que são produzidos em menos tempo e de forma mais econômica que o habitual. Tais
objetivos são alcançados através de um pequeno conjunto de valores, princípios e práticas, que
diferem substancialmente da forma tradicional de se desenvolver software. [ref XP]




2.1    Papeis



Gerente

Cliente Rodrigo de Almeida Vilar de Miranda

Desenvolvedores: Os alunos de graduação Carla de Araujo Souza, Isaac Leal da Cunha Lima e
Tiago Oliveira de Albuquerque.




2.2 Planejamento de User Stories
2.2.1 US1

1.Estudar o codigo do worker

2.Estudar as mudanças feitar no broker

3.Identificar áreas que sofrerão mudanças no worker

4.Separar o Worker em três camadas

5.Validar




2.2.2 US2

1.Estudar a API de virtualização KVM e ambiente KVM

2.Implementação do executor KVM




2.2.3 US3

1.Estudar solução para utilização do VirtualBox

2.Estudar o código imlementado previamente por Flavio

3.Implementação do executor VirtualBox




2.3 Cronograma
         Maio    Maio    Junho   junho       Julho   Julho   Setembro   Setembro   Outubro   Outubro   Novembr
                                                                                                          o
         12~18   19~01   02~15   16~01      02~15    16~31    01~15      16~30      01~16     16~31
                                                                                                        01~20




US 1.1




US 1.2




US 1.3




US 1.4




US 1.5




US 2.1




US 2.2




US 3.1




US 3.2




US 3.3



                                         Tabela 2.1. Cronograma
Capítulo 3

Worker
       Detalhes sobre a arquitetura antiga e introduzir os motivos para o refatoramento (O
refatoramento do código do componente Worker foi necessário para a implementação das
funcionalidades adicionais requisitadas.)




3.1 Refatoramento

       Algumas classes que estavam como controladoras, porém possuiam código de lógica
foram alteradas, fazendo uma divisão do código em três camadas: DAO, Receiver - que se
comunica com os outros componentes do OurGrid e a camada de Lógica.

Classes de mensagens e exceções estavam espalhadas pelo código do worker, agora estão
organizadas em diretórios dentro do worker.




3.2 Resultados



Pacotes criados

1.org.ourgrid.worker.controller.messages

2.org.ourgrid.worker.controller.exceptions
Pacote org.ourgrid.worker.controller.exceptions

•VOMSAuthorizationException

•UnableToCreateStorageException

•UnableToCreatePlaypenException




Pacote org.ourgrid.worker.controller.messages

•FileTransferControllerMessages

•WorkerManagementControllerMessages

•WorkerManagementClientFailureControllerMessages

•WorkerControllerMessages

•RemoteWorkerManagementControllerMessages

•ExecutionControllerMessages

•EnvironmentControllerMessages

•ControlMessages




Classes movidas e renomeadas

1.org.ourgrid.worker.receiver.RemoteWorkerManagementReceiver ->
org.ourgrid.worker.RemoteWorkerManager




2.org.ourgrid.worker.receiver.WorkerExecutionClientReceiver ->
org.ourgrid.worker.controller.WorkerExecutionClientController
3.org.ourgrid.worker.receiver.WorkerManagementReceiver ->
org.ourgrid.worker.WorkerManager

4.org.ourgrid.worker.receiver.WorkerReceiver ->
org.ourgrid.worker.controller.WorkerController




Pacotes destruidos

1.org.ourgrid.worker.receiver




Classes destruídas

1.org.ourgrid.worker.receiver.WorkerCollectorReceiver

       Só era invocado em uma linha "client = new WorkerCollectorReceiver();" e a variável
client não era usada.




2.org.ourgrid.worker.collectors.Main

3.org.ourgrid.worker.collectors.common.WorkerSpecCreator?

       não fazia nada e não era chamado por ninguém




Classes "Suspeitas"

1.org.ourgrid.worker.collectors.gmond.GMondUtilsTest

       não tem utilidade aparente, não é chamado por ninguém
2.org.ourgrid.worker.collectors.interfaces.WorkerCollectorClient

3.org.ourgrid.worker.collectors.gmond.GMondCollectorComponent

4.org.ourgrid.worker.receiver.IdlenessDetectorWorkerControlClient ->
org.ourgrid.worker.utils.IdlenessDetectorWorkerControlClient

          Classe com métodos vazios mas que não pode ser retirada devido a integração com o
Commune.

Problemas

A falta de documentação, como previamente previsto, ocasionou um atraso no entendimento do
código.

          O código do worker possui vários testes de aceitação, porém eles não estavam passando
corretamente, causando dificuldades na continuação do refatoramento.




3.3 Arquitetura

Esta é a arquitetura atingida depois da etapa de refatoramento do worker
Figura 3.1 – Arquitetura do Worker após o refatoramento
Capítulo 4

Virtualização



        Nos últimos anos, com a evolução da informática, o poder de processamento dos
computadores aumentou drasticamente. Entretanto, existem casos em que todo esse
processamento não está sendo utilizado pelas máquinas, fazendo com que exista uma
subutilização dos recursos computacionais.

Preocupados em procurar soluções que visam à diminuição dessa ociosidade de processamento,
os administradores de redes tem utilizado a técnica da virtualização. O uso da virtualização
representa a ilusão de várias máquinas virtuais (VMs) independentes, cada uma rodando uma
instância de um sistema operacional virtualizado [SMITH; NAIR, 2005]

Esta técnica não é nova, iniciou-se pela IBM nos mainframes na década de 60, mas seu uso foi
difundido nos anos 80, tendo em vista a resolução de problemas a um custo relativamente baixo.

O sucesso da virtualização baseou-se em alguns princípios. Primeiramente, a camada de
virtualização, deve isolar uma máquina virtual da outra de modo que não haja interferência entre
elas. Não é aceitável que o funcionamento de uma máquina virtual afete o desempenho de outra
máquina virtual [GARFINKEL et al., 2003]. Segundo, é necessário suportar uma variedade
diferente de sistemas operacionais para acomodar os diferentes aplicativos populares existentes.
Terceiro, o overhead introduzido pela camada de virtualização deve ser pequeno [GARFINKEL
et al., 2003].

Atualmente, os sistemas virtualizados estão com seu espaço em ascensão devido ao fato de
resolverem alguns pontos que hoje são críticos em diversas empresas como pode ser
exemplificado: incompatibilidade entre hardware e software no que diz respeito a suas
modificações com o decorrer do tempo; subutilização dos recursos computacionais pelos
programas, ou seja, os programas legados não conseguem explorar a totalidade da capacidade
dos hardwares atuais; dentro outros.




4.1         Utilização                 de   virtualização                em         Grids
Computacionais
       Ambientes de grades computacionais oferecem para seus usuários um conjunto de
recursos distribuídos e heterogêneos. Dois tipos de problemas de segurança existem em
ambientes como este: (i) a segurança dos recursos da grade em relação ao uso indevido dos
mesmos pelos usuários da grade; (ii) a segurança das aplicações dos usuários em relação aos
recursos da grade.

Considerando um sistema em grade de livre acesso como o OurGrid, podemos claramente
perceber a necessidade de uma solução para o primeiro tipo de problema. Qualquer pessoa pode
acessar os recursos da grade e atacar estes. Considerando que o sistema é executado sobre a
Internet, temos também o problema dos recursos serem utilizados para ataques, como por
exemplo um ataque de negação de serviço distribuído.

Dentre as soluções para a execução segura de tarefas, existe as soluções baseadas no uso de
máquinas virtuais (VMs) para o isolamento da tarefa, este tipo de solução é conhecido como
Sandboxing. A tradução literal seria caixa de areia, porém optamos pelo uso do termo em inglês
por já ser aceito e difundido.

Atualmente, duas solução de Sandboxing com base no uso de VMs existe no OurGrid. A solução
VMWare Server [colocar REF] e Vserver[colocar REF]: ambos, provê um ambiente seguro de
execução com base em máquinas virtuais.

O problema da solução Vmware Server é a instalação do software, pois o mesmo é muito
grande, baixando o desempenho da máquina hospedeira e aumentando o tempo de execução de
um Job. Já o problema da solução que utiliza a tecnologia Vserver para virtualizar máquinas é
(TODO)

As tecnologias VirtualBox e KVM vem como solução para o problema do VMWare Server e o
Vserver (DETALHAR MAIS)




4.2    KVM

       KVM é uma solução de virtualização para Linux com arquitetura x86, instalado em
hardware contend extensão de virtualização (Intel VT or AMD-V). KVM consiste em um
módulo carregado pelo kernel, kvm.ko, que prove infraestrutura de virtualizaçãoe rm modulos
específico para o processador, kvm-intel.ko ou kvm-amd.ko, dependendo do processador
instalado na máquina.

Usando a tecnologia de virtualização KVM, pode-se executar múltiplas máquinas virtuais
possuindo imagens Linux ou Windows não alteradas. Cada máquina virtual possui um hardware
privado virtualizado: uma placa de rede, disco rígido, placa de vídeo, etc. [Site oficial do KVM]
(http://www.linux-kvm.org/page/Main_Page)


4.1.1 Emulador qemu

       O QEMU é um emulador de sistema muito poderoso, gratuito e livre. Com uma interface
de extrema facilidade o emulador de sistema tem crescido muito dentro dos ambiente Windows.
Utilizando comandos simples para tarefas que podem ser complicadas em outros emuladores.

Com a utilização da tradução dinâmica, o emulador converte partes do código para quer o
processador execute o conjunto de instruções, como técnica o QEMU utiliza um grande poder de
processamento.

O QEMU pode trabalhar com a emulação total do sistema ou emulação no modo usuário.
      Emulação total do Sistema: Possibilidade da emulação de um sistema
       completo,processador e periféricos. Utilizando-se a emulação total, o emulador pode ser
       utilizado para rodar os diversos sistemas operacionais.




                    Figura 4.1.: Arquitetura do Qemu [LAUREANO 2008]

Emulação no modo de usuário: Opção disponível somente para o sitema Linux, nesse modo o
emulador pode executar processos do Linux compilados para uma plataforma em outra, um
programa compilador em uma arquitetura x86 pode ser executado em um PowerPC:




                Figura 4.2. Emulação no modo de usuário [LAUREANO 2008]

O Qemu tem grandes característica que o tornam peculiar dentro das podemos citar: ele não
requer alterações ou otimizações no sistema hospedeiro(anfitrião), facilmente utilizado e suporte
a auto-emulação – é possível chamar o QEMU de dentro de outro QEMU.
4.3 VirtualBox - http://www.virtualbox.org/

        VirtualBox é um software de virtualização desenvolvido pela Sun Microsystems que,
como o VMware Workstation, visa criar ambientes para instalação de sistemas distintos. Ele
permite a instalação e utilização de um sistema operativo dentro de outro dando suporte real a
softwares de outros sistemas.

O VirtualBox tem um desenho extremamente modular com interfaces de programação interna
bem definidas e um desenho cliente/servidor. Isso torna fácil o controle de várias interfaces de
uma só vez. Por exemplo: você pode iniciar uma máquina virtual em uma máquina típica virtual
de interface gráfica e, em seguida, controlar essa máquina a partir da uma linha de comando, ou
possivelmente remotamente. O VirtualBox também vem com um kit completo desenvolvimento
de software: embora seja de código aberto, você não tem que cortar a fonte de escrever uma nova
interface para VirtualBox.

As definições de configuração de máquinas virtuais são armazenados em XML e são totalmente
independentes das máquinas locais. Por isso, as definições podem ser facilmente transferidos
para outros computadores.

O VirtualBox tem um software especial que pode ser instalado dentro das máquinas virtuais
Windows e Linux para melhorar o desempenho e fazer integração muito mais perfeita. Entre os
recursos fornecidos por essas adições clientes são integração do ponteiro do mouse o e soluções
arbitrárias de tela (por exemplo, o redimensionamento da janela do cliente).

Tal como muitos outras soluções de virtualização, para facilitar a troca de dados entre os
hospedeiros e convidados, o VirtualBox permite a declaração dos diretórios de certos
hospedeiros como "pastas compartilhadas", que pode ser acessadas de dentro de máquinas
virtuais.
Capítulo 5

Implementação


5.1 KVM

5.1.1 Executor KVM

Classes implementadas, imagem opcional da arquitetura


5.1.1.1 Workflow


O workflow foi alterado. A máquina virtual só é inicializada no momento em que é invocado o
metodo execute(...).

Durante a criação do script do job, é adicionado ao final do mesmo o comando halt para que a
máquina virtual seja desligada assim que a execução pedida pelo broker for finalizada.

A máquina virtual foi modificada para que após sua inicialização, seja executado o comando do
job e assim após o término, a máquina é desligada.

A checagem se o job ainda está em execução é feita através da checagem se a máquina virtual
ainda está em executação, chamando o metodo isSandboxUp(), que por sua vez executa o
script localizado em /usr/sbin/kvm_status. (COMPLETAR)

Os scripts podem ser analisados no anexo B.

5.1.2 Instalação da tecnologia KVM
* Verifica-se se o processador dá suporte à virtualização. No caso de processadores do fabricante
Intel®, o processador deve possuir a tecnologia VT e no caso dos processadores fabricados pela
AMD, a tecnologia chama-se V (CONFIRMAR)

*

5.1.3 Criação de VMs KVM




5.1.4 Biblioteca libvirt

Para a inicialização da máquina virtual, foi utilizado a bibliotecla libvirt. O Libvirt interage com
a os hypervisor das tecnologias de virtualização Xen, KVM, VirtualBox, Vmware ESX e GSX.


5.2 VirtualBox

Para submeter comandos, arquivos de entrada e poder coletar saídas optamos pelo uso de pastas
compartilhadas entre hospedeiro e máquina virtual. Para tal que isso fosse possível, criamos uma
pasta compartilhada entre o hospedeiro e a máquina virtual e durante o boot da máquina virtual,
a máquina virtual monta partições apontando para essa pasta compartilhada.

5.2.1 Instalação do VirtualBox 3.0 no Windows

Preocupamos-nos em atender as mais diversas versões do Windows. Testamos o sistema no
Windows XP 32 bits, Windows Vista (32 e 64 bits) e Windows 7 (32 e 64 bits).




5.2.2 Criação da VM VirtualBox



Para compartilhar arquivos entre a máquina virtual e a máquina hospedeira foi usado o vboxsf
(VirtualBox Shared Folder).
Os seguintes scripts foram adicionados à máquina virtual:

/workers_scripts/run_app.sh

Script responsável por monta a pasta compartilhada e executar o script com os commandos do
job.

/workers_scripts/VBOX_OPTS/CMD_OPTS

Arquivo contendo os comandos, pontos de montagem e tipos de partição. Dados usados pelas
tarefas a cima.
SH="/bin/sh"
MOUNT="/bin/mount"
UMOUNT="/bin/umount"
MOUNTTYPE=vboxsf
MOUNTPOINT="/mnt/shared"
SHARED="ourgridshared"

      SH

            o Interpretador Shell

      MOUNT

            o Comando de montagem de partições

      UMOUNT

            o Comando de desmontagem de partições

      MOUNTTYPE

            o Tipo de partição.

      MOUNTPOINT

            o Local no qual a partição é montada dentro da máquina virtual

      SHARED
           o Apelido para pasta compartilhada no VirtualBox.




/workers_scripts/VBOX_OPTS/OG_OPTS

Arquivo que define os scripts usados e gerados.
APP_SCRIPT="app.script.sh"
APP_EXIT="app.exit"
APP_STDOUT="app.stdout"
APP_STDERR="app.stderr"
TERMINATION_FILE=".terminated"

    APP_SCRIPT

           o Script com variáveis de ambiente e comando da task

    APP_EXIT

           o Código de saída do script APP_SCRIPT

    APP_STDOUT

           o Valores impressos na tela pelo APP_SCRIPT

    APP_STDERR

           o Mensagens de erro colhidas

    TERMINATION_FILE

           o Arquivo que serve para sinalizar o fim do
              processamento da task
Pacotes instalados na máquina virtual




       Para a criação da máquina virtual nos baseamos nos pacotes instalados na imagem do
vserver linux-vserver_20081216.tar.bz2 encontrada em
http://www.ourgrid.org/images/ourgrid/dist/4/4.1.5/worker-linux-vserver.zip .

Mantivemos a distribuição Debian Lenny 5.0 com acréscimos dos pacotes VirtualBox Guest
Additions.




Veja o anexo 1 – Pacotes instalados na VM VBOX.




Por que não usar o fstab para montar as pastas compartilhadas?

A documentação do VirtualBox 3.0.10 indica o uso do fstab para montar a pasta compartilhada,
mas foram encontradas incompatibilidades com essa técnica durante os concepção da imagem.
Obtemos erros do tipo “Protocol Error” até tentarmos usar o parâmetro “–l root” no momento da
execução. Suspeitamos de diversas hipóteses que justificassem esse erros, mas não confirmamos
nenhuma dessas teorias. Temos esse erro como uma peculiaridade de máquinas virtuais Debian.
Capítulo 6

Deployment
Capítulo 7

Considerações Finais
Referências Bibliográficas
[1] Nome http://www.virtualbox.org/manual/UserManual.html Mes Ano.
[2]
A     Ambientes de Experimentação

A.1. KVM
A.1.1 Versão do KVM utilizada


A.1.2 Configuração da máquina Hospedeira
CPU
      Nome: Intel Core2 Duo® P8600
      Frequencia: 2.4Ghz
      Cache: 3MB
Memória
      Capacidade: 3GB
      Tipo: DDR2
Sistema Operacional
      Nome: Ubuntu
      Versão: Koala, kernel 2.6.31


A.1.3 Configuração da máquina virtual
Memória: 120MB
Espaço ocupado: 394,076 KB
Arquivo de descrição da máquina virtual
<domain type='kvm'>
  <name>VMNAME</name>
  <uuid>be518cb8-9874-26aa-ee4c-0dff0d758d98</uuid>
  <memory>131072</memory>
  <currentMemory>131072</currentMemory>
  <vcpu>1</vcpu>
  <os>
    <type arch='i686' machine='pc'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
  </features>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <devices>
    <emulator>/usr/bin/kvm</emulator>
    <disk type='file' device='disk'>
      <source file='VMPATH/disk0.qcow2'/>
      <target dev='hda' bus='ide'/>
    </disk>
    <disk type='file' device='disk'>
      <source file='VMPATH/dev.img'/>
      <target dev='hdb' bus='ide'/>
    </disk>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='-1' autoport='yes' listen='127.0.0.1'/>
  </devices>
</domain>



A.2. Virtual Box
B     Scripts

B.1 Inicialização da alocação

#!/bin/bash
#
# @author Carla Souza
#

VM_NAME=$1
VM_BASE_DIR=$2
VM_IMAGE_PATH=$3

DISKNAME=disk0.qcow2

cp $VM_BASE_DIR/$DISKNAME $VM_IMAGE_PATH


B.2 Obtenção dos arquivos gerados

#!/bin/bash
#
# @author Carla Souza
#

MVNAME=$1
HOST_STORAGE=$2
HOST_PLAYPEN=$3
VM_STORAGE=$4
VM_PLAYPEN=$5
VM_PATH=$6

DEVNAME=dev.img
DEV=$VM_PATH/$DEVNAME
DEVMOUNTDIR=/tmp/.kvm_scratch

mkdir -p $DEVMOUNTDIR

sudo mount -o loop $DEV $DEVMOUNTDIR

cp $DEVMOUNTDIR/playpen/* $HOST_PLAYPEN
cp $DEVMOUNTDIR/storage/* $HOST_STORAGE

sudo umount $DEVMOUNTDIR
rmdir $DEVMOUNTDIR
rm $DEV
exit 0


B.3 Abortar execução da máquina virtual

#!/bin/bash
#
# @author Carla Souza
#

VMNAME=$1

sudo virsh destroy $VMNAME



B.4 Criação da partição de storage e playpen da máquina virtual

#!/bin/bash
#
# @author Carla Souza
#

MVNAME=$1
VM_DIR=$2

DEV=$VM_DIR/dev.img
DEVDIR=/tmp/.scratch

if [ -f $DEV ]
then
      rm $DEV
fi

# TODO set device size
dd if=/dev/zero of=$DEV bs=1024 count=10000

# Formata o arquivo para o fs ext3
if [ ! -f $DEV ]
then
      exit 1
fi

mkfs.ext3 -F $DEV

# Monta o arquivo
mkdir -p $DEVDIR
sudo mount -o loop $DEV $DEVDIR




B.5 Inicialização da máquina virtual e execução do job

#!/bin/bash
 #
 # @author Carla Souza
 #

VM_NAME=$1
#Start the vm
sudo virsh start $VM_NAME

if [ $? -ne 0 ]; then
      echo "Cannot start VM"
else
      echo "Start done"
fi


B.6 Status da execução

#!/bin/bash
#
# @author Carla Souza
#

VMNAME=$1

if sudo virsh list| grep $VMNAME > /dev/null ; then
      exit 0
fi

exit 1


B.7 Parar a execução da máquina virtual

#!/bin/bash
#
# @author Carla Souza
#

VMNAME=$i

sudo virsh shutdown $VMNAME



B.8 Finalização da configuração do device da máquina virtual

#!/bin/bash
#
# @author Carla Souza
#

VM_NAME=$1
VM_IMAGE_PATH=$2
HOST_STORAGE=$3
HOST_PLAYPEN=$4
LOG_DIR=/tmp/
DEV=$VM_IMAGE_PATH/dev.img
DEVDIR=/tmp/.scratch
mkdir -p $DEVDIR

# Copy host playpen and storage to vm device

cp -r $HOST_STORAGE $DEVDIR
cp -r $HOST_PLAYPEN $DEVDIR

sudo umount $DEVDIR
sleep 2
rm -rf $DEVDIR
C Pacotes instalados na
maquina virtual VirtualBox
                             defoma
acpi-support-base            dhcp3-client
acpid                        dhcp3-common
adduser                      dictionaries-common
apache2-mpm-prefork          diff
apache2-utils                dmidecode
apache2.2-common             dnsutils
apt                          doc-debian
apt-utils                    doc-linux-text
aptitude                     dosbox
at                           dpatch
autoconf                     dpkg
automake                     dpkg-dev
autotools-dev                dselect
avahi-daemon                 e2fslibs
base-files                   e2fsprogs
base-passwd                  ed
bash                         eject
bash-completion              esound-clients
bc                           esound-common
belocs-locales-bin           exim4
belocs-locales-data          exim4-base
bind9-host                   exim4-config
binutils                     exim4-daemon-light
bison                        fakeroot
blender                      file
bsd-mailx                    findutils
bsdmainutils                 fontconfig
bsdutils                     fontconfig-config
build-essential              fping
busybox                      ftp
bzip2                        g++
ca-certificates              g++-4.2
checkinstall                 g++-4.3
console-common               gawk
console-data                 gcc
console-tools                gcc-3.4-base
coreutils                    gcc-4.1
cpio                         gcc-4.1-base
cpp                          gcc-4.2
cpp-4.1                      gcc-4.2-base
cpp-4.2                      gcc-4.3
cpp-4.3                      gcc-4.3-base
cron                         gettext
curl                         gettext-base
dbus                         gfortran
dbus-x11                     gfortran-4.3
dc                           gnupg
debconf                      gnuplot
debconf-i18n                 gnuplot-nox
debian-archive-keyring       gnuplot-x11
debian-faq                   gpgv
debianutils                  grep
groff-base             libcap1
grub                   libcap2
grub-common            libcomerr2
gsfonts                libconsole
gsfonts-x11            libcups2
gzip                   libcurl3
hal                    libcwidget3
hal-info               libdaemon0
hicolor-icon-theme     libdatrie0
hostname               libdb4.2
html2text              libdb4.5
iamerican              libdb4.6
ibritish               libdbus-1-3
ifupdown               libdbus-glib-1-2
info                   libdc1394-13
initramfs-tools        libdc1394-22
initscripts            libdevmapper1.02.1
installation-report    libdirectfb-1.0-0
iproute                libdirectfb-extra
iptables               libdns45
iputils-ping           libdrm2
ispell                 libedit2
java-common            libept0
kbd                    libesd0
klibc-utils            libevent1
klogd                  libexpat1
laptop-detect          libfaad0
ldap-utils             libfftw3-3
less                   libflac8
liba52-0.7.4           libfontconfig1
libacl1                libfontenc1
libalut0               libfreetype6
libapache2-mod-php5    libftgl2
libapr1                libg2c0
libaprutil1            libgc1c2
libasound2             libgcc1
libatk1.0-0            libgcrypt11
libatk1.0-data         libgd2-noxpm
libatlas3gf-base       libgdbm3
libattr1               libgfortran3
libaudiofile0          libgl1-mesa-glx
libavahi-common-data   libglib2.0-0
libavahi-common3       libglib2.0-data
libavahi-core5         libglpk0
libavcodec51           libglu1-mesa
libavformat52          libgmp3c2
libavutil49            libgnutls26
libbind9-40            libgomp1
libblas-dev            libgpg-error0
libblas3gf             libgpm2
libblkid1              libgsm1
libbz2-1.0             libgssglue1
libbz2-dev             libgtk2.0-0
libc6                  libgtk2.0-bin
libc6-dev              libgtk2.0-common
libc6-i686             libhal-storage1
libcairo2              libhal1
libhdf5-serial-1.6.6-0   libsasl2-2
libice6                  libsasl2-modules
libidn11                 libsdl-net1.2
libilmbase6              libsdl-sound1.2
libisc45                 libsdl1.2debian
libisccc40               libsdl1.2debian-alsa
libisccfg40              libselinux1
libjpeg62                libsepol1
libjpeg62-dev            libsigc++-2.0-0c2a
libkeyutils1             libslang2
libklibc                 libsm6
libkrb53                 libsmbios-bin
liblapack-dev            libsmbios2
liblapack3gf             libsmpeg0
libldap-2.4-2            libspeex1
liblocale-gettext-perl   libsplashy1
liblockfile1             libsqlite3-0
libltdl3                 libss2
libltdl3-dev             libssh2-1
liblwres40               libssl0.9.8
liblzo2-2                libstdc++5
libmagic1                libstdc++6
libmikmod2               libstdc++6-4.2-dev
libmpfr1ldbl             libstdc++6-4.3-dev
libmysqlclient15off      libsuitesparse-3.1.0
libncurses5              libsvga1
libncurses5-dev          libswscale0
libncursesw5             libsysfs2
libnewt0.52              libtasn1-3
libnfsidmap2             libtext-charwidth-perl
libnss-mdns              libtext-iconv-perl
libntfs-3g31             libtext-wrapi18n-perl
libogg0                  libthai-data
libopenal1               libthai0
libopenexr6              libtheora0
libpam-modules           libtiff4
libpam-runtime           libtimedate-perl
libpam0g                 libtool
libpango1.0-0            libts-0.0-0
libpango1.0-common       libusb-0.1-4
libpaper-utils           libuuid1
libpaper1                libvolume-id0
libpcap0.8               libvorbis0a
libpci3                  libvorbisenc2
libpcre3                 libvorbisfile3
libpcre3-dev             libwrap0
libpcrecpp0              libwxbase2.6-0
libpixman-1-0            libwxgtk2.6-0
libpng12-0               libx11-6
libpng12-dev             libx11-data
libpopt0                 libx86-1
libpq5                   libxapian15
libraw1394-8             libxau6
libreadline5             libxaw7
libreadline5-dev         libxcb-render-util0
librpcsecgss3            libxcb-render0
libruby1.8               libxcb-xlib0
libxcb1                         nmap
libxcomposite1                  ntfs-3g
libxcursor1                     octave2.1
libxdamage1                     odbcinst1debian1
libxdmcp6                       openbsd-inetd
libxext6                        openssh-blacklist
libxfixes3                      openssh-blacklist-extra
libxfont1                       openssh-client
libxft2                         openssh-server
libxi6                          openssl
libxinerama1                    openssl-blacklist
libxml2                         passwd
libxmu6                         patch
libxmuu1                        patchutils
libxpm4                         pciutils
libxrandr2                      perl
libxrender1                     perl-base
libxt6                          perl-modules
libxtst6                        php5-common
libxv1                          pm-utils
libxxf86dga1                    portmap
libxxf86vm1                     powermgmt-base
linux-headers-2.6.26-2-686      procmail
linux-headers-2.6.26-2-common   procps
linux-image-2.6-686             python
linux-image-2.6.26-2-686        python-central
linux-kbuild-2.6.26             python-imaging
linux-libc-dev                  python-minimal
locales                         python-numpy
login                           python-scipy
logrotate                       python-support
lsb-base                        python2.4
lsof                            python2.4-minimal
lzma                            python2.5
m4                              python2.5-minimal
make                            r-base
makedev                         r-base-core
man-db                          r-base-dev
manpages                        r-base-html
mawk                            r-base-latex
mime-support                    r-cran-boot
mktemp                          r-cran-cluster
mlocate                         r-cran-codetools
module-init-tools               r-cran-foreign
mount                           r-cran-kernsmooth
mtr-tiny                        r-cran-lattice
mutt                            r-cran-mgcv
mysql-common                    r-cran-nlme
nano                            r-cran-rpart
ncurses-base                    r-cran-survival
ncurses-bin                     r-cran-vr
ncurses-term                    r-recommended
net-tools                       radeontool
netbase                         readline-common
netcat                          reportbug
netcat-traditional              rsync
nfs-common                      rsyslog
ruby                  xfonts-encodings
ruby1.8               xfonts-utils
sed                   xterm
ssh                   zip
ssl-cert              zlib-bin
sun-java6-bin         zlib1g
sun-java6-jdk         zlib1g-dev
sun-java6-jre         zlibc
svgalibg1
sysklogd
sysv-rc
sysvinit
sysvinit-utils
tar
tasksel
tasksel-data
tcl8.3
tcl8.4
tcpd
tcpdump
telnet
texinfo
time
tk8.4
traceroute
ttf-dejavu
ttf-dejavu-core
ttf-dejavu-extra
ttf-sazanami-gothic
ttf-sazanami-mincho
ttf-unfonts
ttf-unfonts-core
ttf-unfonts-extra
tzdata
ucf
udev
unixodbc
unzip
update-inetd
usbutils
uswsusp
util-linux
vbetool
vim
vim-common
vim-runtime
vim-tiny
w3m
wamerican
wget
whiptail
whois
x-ttcidfont-conf
x11-common
x11-utils
xauth
xbitmaps

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:30
posted:11/8/2012
language:Portuguese
pages:42