Upload
willdson-almeida
View
2.546
Download
2
Embed Size (px)
DESCRIPTION
Este trabalho descreve um método de disponibilização de softwares em laboratórios remotos interativos, no contexto do Ensino a Distância. Laboratórios remotos são amplamente utilizados em instituições de ensino, pesquisa e tecnologia. Um dos desafios na implantação desses ambientes de aprendizagem é a disponibilização de programas aplicativos com segurança, escalabilidade e gerenciabilidade. O objetivo deste trabalho é a elaboração de um método para disponibilizar programas da área de laboratório para usuários geograficamente distribuídos. O método utiliza máquinas virtuais para hospedagem dos softwares utilizando serviços de terminais remotos para prover o acesso. Permitindo uma melhor gestão dos usuários e dos recursos a serem disponibilizados bem como do hardware que hospedará essa infraestrutura.
Citation preview
SERVIÇO PÚBLICO FEDERAL
MEC-SETEC INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MATO
GROSSO DEPARTAMENTO DA ÁREA DE INFORMÁTICA
CURSO SUPERIOR DE TECNOLOGIA EM REDES DE COMPUTADORES
WILLDSON GONÇALVES DE ALMEIDA
MÉTODO DE VIRTUALIZAÇÃO PARA DISPONIBILIZAÇÃO DE
SOFTWARES EM LABORATÓRIOS REMOTOS INTERATIVOS
Cuiabá – MT 2011
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MATO GROSSO
DEPARTAMENTO DA ÁREA DE INFORMÁTICA CURSO SUPERIOR DE TECNOLOGIA EM REDES DE COMPUTADORES
WILLDSON GONÇALVES DE ALMEIDA
MÉTODO DE VIRTUALIZAÇÃO PARA DISPONIBILIZAÇÃO DE
SOFTWARES EM LABORATÓRIOS REMOTOS INTERATIVOS
Cuiabá – MT 2011
Ficha Catalográfica ALMEIDA, Willdson Gonçalves de “MÉTODO DE VIRTUALIZAÇÃO PARA DISPONIBILIZAÇÃO DE SOFTWARES EM LABORATÓRIOS REMOTOS INTERATIVOS”
Cuiabá – MT, 2011 Total de folhas do TCC: 54 SANTOS, Reginaldo Hugo Szezupior dos Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso. Trabalho de Conclusão do Curso de Tecnologia em Redes de Computadores.
WILLDSON GONÇALVES DE ALMEIDA
MÉTODO DE VIRTUALIZAÇÃO PARA DISPONIBILIZAÇÃO DE
SOFTWARES EM LABORATÓRIOS REMOTOS INTERATIVOS
Trabalho de Conclusão de Curso apresentado ao Departamento da Área de Informática do Curso Superior de Tecnologia em Redes de Computadores do Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso – Campus Cuiabá, como requisito para obtenção do título de Tecnólogo em Redes de Computadores.
Orientador: Prof. Msc. Reginaldo Hugo Szezupior dos Santos
Cuiabá - MT 2011
WILLDSON GONÇALVES DE ALMEIDA
MÉTODO DE VIRTUALIZAÇÃO PARA DISPONIBILIZAÇÃO DE
SOFTWARES EM LABORATÓRIOS REMOTOS INTERATIVOS
Trabalho de Conclusão de Curso em Redes de Computadores, submetido à Banca Examinadora composta pelos Professores do Departamento da Área de Informática do Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso, como parte dos requisitos necessários à obtenção do título de tecnólogo.
Aprovado em 30 de dezembro de 2011 às 13:30 horas.
Cuiabá – MT 2011
DEDICATÓRIA
Dedico aos meus familiares, amigos, e aos
professores que contribuíram para este
trabalho.
AGRADECIMENTOS
Agradeço primeiramente a Deus por me guiar em todos os momentos.
Aos meus pais, Delgado e Aparecida, por seu amor e carinho, e por me ensinarem o
valor da honestidade e do estudo, incentivando sempre a perseguir meus objetivos, ainda
que sonhadores demais.
Aos meus irmãos, Willkson, Willverson e Raianny, por sua amizade e por sempre
me ouvirem, além de todo o incentivo.
Às minhas avós Clara (in memoriam), que com certeza está muito feliz por esta
conquista e avó Guanira, por todo o ânimo e amor depositado.
Aos não mais colegas, mas sim amigos, da minha turma na faculdade, Maryel
Juliane, Jean Carlos, Catiane Nascimento, Júlio Mário, Carlos Kempa, Taisy Barros, Vania
Lourenço, Rafael Leão, Thiago Nabor, Renan Susuki, Héliton Ponce, Wanderlei Leão, João
Carlos, Carolina Galante, Felipe Galdino, Bruno Vitali e Ibrahin Baraúna.
Ao amigo Lucas Ramalho, pelas contribuições.
Ao meu orientador, Reginaldo Hugo, pelo tempo disponibilizado entre suas tantas
atividades, contribuindo para a elaboração deste trabalho.
Aos demais professores do Departamento da Área de Informática, em especial
André Valente, Guilherme Pires, Juliana Saragiotto, Sônia Regina e Jacira Soares.
A Silvana e a Laura do Departamento da Área de Informática do IFMT, pelo
atendimento sempre cordial.
A todos os outros que passaram por minha vida, colaborando direta ou
indiretamente na realização deste.
A todos estes, meus mais sinceros agradecimentos.
“A vida sem ciência é uma espécie de morte.” (Sócrates)
RESUMO
Este trabalho descreve um método de disponibilização de softwares em
laboratórios remotos interativos, no contexto do Ensino a Distância. Laboratórios
remotos são amplamente utilizados em instituições de ensino, pesquisa e tecnologia.
Um dos desafios na implantação desses ambientes de aprendizagem é a
disponibilização de programas aplicativos com segurança, escalabilidade e
gerenciabilidade. O objetivo deste trabalho é a elaboração de um método para
disponibilizar programas da área de laboratório para usuários geograficamente
distribuídos. O método utiliza máquinas virtuais para hospedagem dos softwares
utilizando serviços de terminais remotos para prover o acesso. Permitindo uma
melhor gestão dos usuários e dos recursos a serem disponibilizados bem como do
hardware que hospedará essa infraestrutura.
Palavras-chave: EaD, Laboratório Remoto, Sistemas Operacionais, Virtualização,
Xen.
ABSTRACT
This work describes a method of providing remote interactive laboratory
software in the context of e-learning. Remote laboratories are widely used in
educational institutions, research and technology. One of the challenges in the
implementation of these learning environments is the availability of software
applications with security, scalability and manageability. The objective of this work is
to develop a method to provide programs in the area of laboratory for geographically
distributed users. The method uses virtual machines for hosting the software using
terminal services to provide remote access. Allowing better management of users
and resources to be available and the hardware that will host this infrastructure.
Keywords: E-learning, Remote Laboratory, Operating Systems, Virtualization, Xen.
LISTA DE ILUSTRAÇÕES
Figura 1 – Comparações entre os modelos de ensino .............................................. 17
Figura 2 – Sistema computacional ............................................................................ 19
Figura 3 – Funcionamento do sistema operacional ................................................... 20
Figura 4 – Cronologia da família de sistemas operacionais Windows (1985-2010) .. 24
Figura 5 – Área de trabalho do sistema operacional Windows Server 2008 R2 ....... 24
Figura 6 – Área de trabalho da distribuição Ubuntu Linux v.10.04 ............................ 27
Figura 7 – Modelo conceitual de máquinas virtuais ................................................... 28
Figura 8 – Visão dos serviços na consolidação de servidores .................................. 30
Figura 9 – Diminuição do número de servidores com a virtualização ....................... 31
Figura 10 – Máquina virtual de processo .................................................................. 33
Figura 11 – Monitor de máquina virtual ..................................................................... 34
Figura 12 – Funcionamento da técnica de virtualização total .................................... 35
Figura 13 – Funcionamento da técnica de paravirtualização .................................... 36
Figura 14 – Modelo de laboratório remoto interativo ................................................. 38
Figura 15 – Esquema de virtualização e acesso dos usuários às VMs ..................... 39
Figura 16 – Estrutura de camadas do paravirtualizador Xen Server ......................... 40
Figura 17 – Interface de gerenciamento do Xen Center ............................................ 41
Figura 18 – Hospedagem dos serviços no servidor Xen ........................................... 42
Figura 19 – Acesso ao software Microsoft Office Visio via RemoteApp .................... 43
Figura 20 – Acesso ao software Microsoft Paint via RemoteApp .............................. 44
Figura 21 – Acesso ao software de eletrônica Fritizing via NX Server ...................... 45
Figura 22 – Acesso ao Navegador Web Firefox via NX Server ................................. 46
Figura 23 – Interface Web do Laboratório Remoto ................................................... 47
LISTA DE ABREVIATURAS
API – Application Programming Interface
APP – Aplicativo
COM - Communication
E/S – Entrada e Saída
EaD – Educação à Distância
GNU – GNU is Not Unix
GPL – General Public License
IEEE – Institute of Electrical and Electronics Engineers
IIS – Internet Information Services
IP – Internet Protocol
JVM – Java Virtual Machine
LPT – Line Print Terminal
LR – Laboratório Remoto
NetBIOS – Network Basic Input/Output System
POSIX – Portable Operating System Interface
RDC – Remote Desktop Connection
RDP – Remote Desktop Protocol
S.O. – Sistema Operacional
SSH – Secure Shell
SSL – Secure Sockets Layer
TCP – Transmission Control Protocol
TI – Tecnologia da Informação
TS – Terminal Service
VM – Virtual Machine
VMM – Virtual Machine Monitor
W.S.2008 – Windows Server 2008
Web – World Wide Web
SUMÁRIO
INTRODUÇÃO .......................................................................................................... 14
1. FUNDAMENTAÇÃO TEÓRICA ............................................................................ 16
1.1 EDUCAÇÃO À DISTÂNCIA ............................................................................ 16
1.2 LABORATÓRIO REMOTO ............................................................................. 17
2. SISTEMAS OPERACIONAIS ............................................................................... 19
2.1 PRINCIPAIS COMPONENTES DE UM SISTEMA OPERACIONAL .............. 20
2.2 CLASSIFICAÇÃO DE SISTEMAS OPERACIONAIS ...................................... 21
2.3 WINDOWS ...................................................................................................... 23
2.4 LINUX ............................................................................................................. 25
3. VIRTUALIZAÇÃO ................................................................................................. 28
3.1 CONTEXTO HISTÓRICO ............................................................................... 29
3.2 CONSOLIDAÇÃO DE SERVIDORES............................................................. 30
3.3 SUPORTE DE HARDWARE PARA VIRTUALIZAÇÃO................................... 31
3.4 TÉCNICAS DE VIRTUALIZAÇÃO .................................................................. 32
3.4.1 Máquina Virtual de Processo ................................................................. 32
3.4.2 Monitor de Máquina Virtual .................................................................... 34
3.4.2.1 Virtualização Total ........................................................................... 35
3.4.2.2 Paravirtualização ............................................................................. 36
3.5 FERRAMENTAS DE VIRTUALIZAÇÃO ......................................................... 37
4. FERRAMENTAS METODOLÓGICAS .................................................................. 38
4.1 CITRIX XEN SERVER .................................................................................... 40
4.2 TS REMOTE APP ........................................................................................... 42
4.3 NX SERVER ................................................................................................... 44
4.4 POLÍTICAS PARA GESTÃO DO LABORATÓRIO ......................................... 46
CONCLUSÕES ......................................................................................................... 48
REFERÊNCIAS ......................................................................................................... 49
ANEXOS ................................................................................................................... 51
ANEXO A – Código-fonte do pacote RDP utilizado no RemoteApp ...................... 51
ANEXO B – Código-fonte do script de conexão utilizando o NX Server ................ 52
14
INTRODUÇÃO
A Educação a Distância (EaD) é a modalidade de ensino em que professor e
aluno não compartilham do mesmo ambiente físico de aprendizagem, além de
possibilitar a separação cronológica ou espacial entre eles. A comunicação ocorre
por meio das tecnologias, tais como rádio, televisão, vídeo, telefone, e
principalmente a internet. Na EaD o aluno gerencia seu próprio aprendizado,
desenvolvendo sua autonomia e criticidade.
Neste contexto, uma ferramenta muito utilizada são os laboratórios remotos
(LR), ambientes virtuais baseados na web que oferecem acesso a recursos de um
laboratório físico para usuários geograficamente distribuídos. Em geral os recursos
disponibilizados nesses laboratórios são experimentos reais e softwares específicos
da área do conhecimento da qual o LR está inserido, exemplo disso são os
laboratórios de engenharia e computação que disponibilizam softwares simuladores,
compiladores diversos, ambientes integrados de desenvolvimento (IDEs), entre
outros.
A gerência e a hospedagem destes softwares, assim como o controle de
acesso dos usuários, são alguns dos desafios encontrados na implantação deste
tipo de ambiente virtual de ensino, pois fatores importantes devem ser considerados,
como segurança, escalabilidade e gerenciabilidade. Portanto neste trabalho o
problema discutido foi “como gerenciar e hospedar os softwares em laboratórios
remotos interativos?”.
Para tanto, se estabeleceu como objetivo a elaboração de um novo método
de disponibilização de softwares em ambientes virtuais de ensino.
Realizou-se neste trabalho a descrição de um método que utiliza sistemas
operacionais (S.O.) virtualizados para hospedagem de softwares em laboratórios
remotos interativos.
Esta pesquisa é do tipo qualitativa com aspecto exploratório descritivo e
como técnica utilizou-se o estudo de caso.
No primeiro capítulo é apresentado o referencial teórico do trabalho, no qual
foi abordado alguns conceitos de Educação a Distância e Laboratórios Remotos.
No capítulo seguinte foram citados conceitos de Sistemas Operacionais de
modo geral, e de maneira especifica os sistemas operacionais Windows e Linux.
15
No terceiro capítulo o foco é a Virtualização em seus aspectos gerais e
específicos, em diferentes cenários e técnicas.
No quarto capítulo descreveram-se os experimentos realizados e o método
desenvolvido para a resolução do problema do trabalho, bem como as vantagens na
adoção do modelo.
Na sequência, apresentam-se as conclusões sobre o método desenvolvido.
16
1. FUNDAMENTAÇÃO TEÓRICA
Os conceitos apresentados abaixo são essenciais para a compreensão da
motivação e do problema do trabalho.
1.1 EDUCAÇÃO À DISTÂNCIA
Nas últimas décadas, as perspectivas pós-positivistas desenvolveram uma
nova visão do que é o conhecimento, levando a novas estratégias de produção,
validação e transmissão. Nessa perspectiva, o conhecimento não é mais visto como
fato intocável, mas como “produto da interação humana com o mundo através de
sistemas simbólicos, meios técnicos, estilos relacionais e cognitivos que se dão
sempre em um contexto multidimensional que inclui tanto a estética como a ética e
os afetos” (NAJMANIVICH, 2001 apud OGIBOSKI, 2007).
Existe uma forte tendência da conversão de cursos antes oferecidos na
forma tradicional e na modalidade presencial, para a forma eletrônica, a fim de
serem usados a distância, utilizando-se como método a exposição do conteúdo por
meio de textos em páginas utilizando a Internet. Em outras palavras: a prática
presencial de exposição oral é substituída pela textual, por isso consideramos
fundamental a elaboração de novos modelos pedagógicos diferenciados para cursos
na Web (COUTINHO, 2003 apud CAMPOS, 2005).
Atualmente a educação a distância é o instrumento mais promissor em
educação, além de abrir inúmeras possibilidades de aplicação nos negócios e no
comércio (KIRSCHNER, 2001 apud OGIBOSKI, 2007). Seus objetivos e
expectativas são:
Aumento do acesso ao ensino;
Ensino mais personalizado e mais individualizado;
Estímulo à colaboração e à cooperação em todos os níveis educacionais;
Maior poder aos educadores;
Aumento da responsabilidade;
Aumento da eficiência da educação;
17
Redução de custos com estrutura física;
Redução do tempo de capacitação do educador;
Adoção rápida de novas informações e de novos programas.
Para reforçar as características e implicações do novo modelo de ensino em
comparação com o modelo antigo (tradicional), na Figura 1 são apresentadas as
diferenças entre elas bem como as implicações técnicas do ponto de vista dos
recursos tecnológicos utilizados.
Figura 1 – Comparações entre os modelos de ensino
Fonte: Ogiboski, 2007.
1.2 LABORATÓRIO REMOTO
Os termos laboratório virtual e remoto podem gerar confusão entre si, mas
basicamente, um laboratório virtual trata de um software de computador com
capacidade de realizar ou de simular leituras de dados em instrumentos. Por outro
lado, um laboratório remoto é constituído por uma estrutura de hardware e software
para aquisição de dados em instrumentos reais, com experimentos também reais,
18
sendo a manipulação do instrumento realizada necessariamente através de uma
rede de computadores (NEDIC et al., 2003 apud OGIBOSKI, 2007).
O uso da Internet e da tecnologia Web em laboratório interativo de medidas
é realizado com o propósito de fornecer flexibilidade no controle de processos
industriais e na educação de alunos em localidades distantes da sala de aula ou da
universidade (ALTPETER et al., 1995 apud OGIBOSKI, 2007).
Os laboratórios remotos, descritos na literatura acadêmica, demonstram a
união de técnicas de instrumentação virtual com tecnologias de hardware e de
software para controle de experimentos à distância. Os testes e ensaios são
desenvolvidos com base na instrumentação virtual para que o controle de
experimentos possa ser realizado através de um computador conectado diretamente
aos recursos físicos (OGIBOSKI, 2007).
19
2. SISTEMAS OPERACIONAIS
Sistema operacional é um programa que atua como intermediário entre
usuário e o hardware de um computador, controlando e coordenando o uso do
hardware entre os vários programas aplicativos para os vários usuários. Pode ser
compreendido como um alocador de recursos, que são: hardware, software e dados.
O sistema controla a execução de programas do usuário para evitar a ocorrência de
erros ou o uso inadequado do computador, além de ocupar-se em especial da
operação e do controle dos dispositivos de entrada e saída (E/S) (SILBERSCHATZ,
2000 e TANEMBAUM, 2010).
Seu propósito é fornecer um ambiente no qual seus usuários possam
executar seus programas. Os principais objetivos de um sistema operacional são:
Tornar conveniente o uso de um sistema computacional;
Usar o hardware do computador de maneira eficiente.
Um sistema computacional pode ser dividido de maneira geral em quatro
componentes, conforme figura 2:
Hardware;
Sistema operacional;
Programas aplicativos;
Usuários.
Figura 2 – Sistema computacional
Nota: Construção do Autor.
20
Os sistemas operacionais existem porque constituem uma forma racional de
criar um sistema computacional cujo uso seja fácil e proveitoso para os usuários, e
que possam executar seus programas e tornar mais fácil a solução de seus
problemas.
O sistema operacional é a peça mais básica de software e opera em modo
núcleo, também chamado modo supervisor. Nesse modo ele tem acesso completo a
todo o hardware e pode inserir qualquer instrução que a máquina pode executar. O
programa de interface com o usuário, que pode ser um interpretador de comandos
(shell) ou uma Interface gráfica com o usuário (GUI), é o nível mais inferior do
software de modo usuário e permite que este inicie outros programas, como o
navegador web, leitor de email ou reprodutor de música (TANEMBAUM, 2010). Na
figura 3 é mostrado ciclo de funcionamento do sistema operacional.
Figura 3 – Funcionamento do sistema operacional
Nota: Construção do Autor.
2.1 PRINCIPAIS COMPONENTES DE UM SISTEMA OPERACIONAL
A grande maioria dos sistemas operacionais possui pontos comuns quanto
às abstrações básicas, como: processos, espaços de endereçamento, sistema de
arquivos, sistema de entrada e saída (E/S), segurança, etc. Pois estes são
21
fundamentais para seu funcionamento. Abaixo serão descritos os principais
mecanismos do S.O, (SILBERSCHATZ, 2000 e TANEMBAUM, 2010).
Processo: É basicamente uma abstração de um programa em execução.
Fundamentalmente um processo é uma caixa que armazena todas as
informações necessárias para executar um programa. Um processo pode
criar um ou mais processos auxiliares, denominados filhos.
Espaços de endereçamento: Cada processo tem um conjunto de
endereços que pode utilizar, geralmente indo de 0 até alguma quantidade
máxima. Estes espaços de endereços permitem que múltiplos processos
tenham acesso a memória, sem que um interfira no outro.
Sistema de arquivos: É onde por meio de chamadas de sistema (system
calls) é criada a estrutura hierárquica de diretórios. Essencial na organização
dos arquivos.
Gerenciador de E/S: É um subsistema do sistema operacional, utilizado na
gerência dos dispositivos de E/S.
Auditoria e segurança: Cria e gerencia um ambiente de confidencialidade
ao usuário e aos procedimentos do sistema.
Interpretador de comandos (Shell): O Shell não é propriamente um
programa do sistema operacional, pois executa em modo usuário. Criando
uma interface entre o usuário e os recursos do sistema operacional.
Chamadas de sistema (system calls): Interação entre processos dos
usuários e o núcleo do sistema operacional (Kernel).
2.2 CLASSIFICAÇÃO DE SISTEMAS OPERACIONAIS
A evolução dos sistemas operacionais no decorrer do tempo esteve sempre
ligado a evolução dos computadores (TANEMBAUM, 2010), e este processo
continua acelerado com o desenvolvimento de tecnologias para novos dispositivos
computacionais, para que se tenha uma compreensão mais aprofundada desta
evolução, na tabela 1 serão apresentadas as gerações dos computadores:
22
Tabela 1 – Gerações dos computadores
Fonte: Tanembaum, 2010.
GERAÇÃO PERÍODO COMPONENTES
1ª Geração 1945 - 1955 Válvulas
2ª Geração 1955 - 1965 Transístores
3ª Geração 1965 – 1980 Circuitos Integrados
4ª Geração 1980 - Presente Computadores Pessoais
Existem diversos tipos de sistemas operacionais, que se diferenciam
principalmente pelo tipo de hardware suportado, serão listados os mais importantes
deles. Porém não os estudaremos a fundo, por não ser o foco do trabalho.
Existem 05 (cinco) tipos de sistemas operacionais (SILBERSCHATZ, 2000):
Sistemas operacionais de batch multiprogramados
Sistemas operacionais de batch simples
Sistemas operacionais de compartilhamento de tempo
Sistemas operacionais distribuídos
Sistemas operacionais paralelos
No entanto, a classificação encontra-se desatualizada por não contemplar os
sistemas desenvolvidos para os dispositivos desenvolvidos na última década. Com
isso, corroborando (TANEMBAUM, 2010):
Sistemas operacionais de cartões inteligentes (smart cards)
Sistemas operacionais de computadores de grande porte (mainframes)
Sistemas operacionais de computadores pessoais
Sistemas operacionais de computadores portáteis
Sistemas operacionais de multiprocessadores
Sistemas operacionais de nós sensores (sensor node)
Sistemas operacionais de servidores
23
Sistemas operacionais de tempo real
Sistemas operacionais embarcados
2.3 WINDOWS
O Windows é uma coleção de sistemas operacionais desenvolvidos pela
empresa Microsoft, possui licença proprietária e diversas versões diferenciadas
pelas funcionalidades direcionadas a um determinado público. O sistema
operacional mais utilizado em computadores pessoais no mundo, sua mais recente
versão para desktops é o Windows 7, lançado em 2009. Para servidores o Windows
Server 2008 R2 é a versão mais recente e estável, já para dispositivos móveis a
versão mais recente é o Windows Phone 7 (MICROSOFT TECHNET, 2011). Abaixo
serão descritas algumas das principais características das recentes versões dos
sistemas operacionais da família Windows:
Código-fonte das várias versões do S.O. foi desenvolvido na liguagem de
programação C e algumas partes com C++ e Assembly;
Multitarefa;
Multiusuário;
Suporte a Plug and Play;
Sistema de arquivos NTFS (New Tecnology File System);
Neste trabalho optou-se pela utilização do Windows Server 2008 R2, por
possuir a última versão do Terminal Service (RemoteApp), o detalhamento da
implementação utilizando o Server 2008 será descrita na seção 4.2. Na figura 4 é
apresentada uma cronologia dos S.O.s Windows, na figura 5 a área de trabalho do
W.S.2008.
24
Figura 4 – Cronologia da família de sistemas operacionais Windows (1985-2010)
Fonte: Wikipedia <http://en.wikipedia.org/wiki/microsoft_windows>.
Figura 5 – Área de trabalho do sistema operacional Windows Server 2008 R2
Nota: Construção do autor.
25
2.4 LINUX
O Linux é um sistema operacional criado em 1991 por Linus Torvalds, na
Universidade de Helsinki – Finlândia. É um sistema Operacional de código aberto
(open source) distribuído gratuitamente pela internet. Seu código-fonte é liberado na
licença GPL (General Public License). O sistema segue o padrão POSIX que é o
mesmo usado por sistemas UNIX e suas variantes. Assim, com a utilização do Linux
não se encontram grandes dificuldades em operar um sistema do tipo UNIX,
FreeBSD, HPUX, SunOS, etc., diferenciados por algumas particularidades de cada
sistema. O Linux é desenvolvido por uma comunidade com milhares de pessoas
espalhadas pelo mundo, cada uma fazendo sua contribuição ou mantendo alguma
parte do kernel gratuitamente. Os requisitos mínimos do Linux é de um computador
386 SX com 2 MB de memória (para um kernel até a série 2.2.x) ou 4 MB (para
kernels 2.4 e 2.6) e 100 MB disponíveis em seu disco rígido para uma instalação
básica e funcional (GUIA FOCA LINUX, 2011).
Descreve-se abaixo as principais características do S.O. GNU/Linux:
É livre e desenvolvido voluntariamente por programadores experientes,
hackers, e contribuidores espalhados ao redor do mundo que tem como objetivo a
contribuição para a melhoria e crescimento deste sistema operacional;
Recebe apoio de grandes empresas como IBM, Sun, HP, etc. para seu
desenvolvimento;
Convive1 sem nenhum tipo de conflito com outros sistemas operacionais
(com o DOS, Windows, OS/2) no mesmo computador;
Multitarefa real;
Multiusuário;
Suporte a nomes extensos de arquivos e diretórios (255 caracteres);
Conectividade com outros tipos de plataformas como Apple, Sun, Macintosh,
Sparc, Alpha, PowerPc, ARM, Unix, Windows, DOS, etc;
Utiliza permissões de acesso a arquivos, diretórios e programas em
execução na memória RAM;
Proteção entre processos executados na memória RAM;
1 Pode ser instalado no mesmo dispositivo de armazenamento com outros sistemas operacionais.
26
Suporte a mais de 63 terminais virtuais (consoles);
Modularização - O Linux somente carrega para a memória o que é usado
durante o processamento, liberando totalmente a memória assim que o
programa/dispositivo é finalizado;
Não precisa de um processador potente para funcionar. O sistema roda bem
em computadores 386Sx 25 com 4 MB de memória RAM (sem rodar o sistema
gráfico X, que é recomendado 32MB de RAM);
Suporte nativo a múltiplas CPUs, assim processadores como Dual Core
Athlon Duo, Quad Core tem seu poder de processamento integralmente aproveitado;
Suporte nativo a dispositivos SATA, PATA, Fiber Channel;
Suporte nativo a virtualização, onde o Linux se destaca como plataforma
preferida para execução de outros sistemas operacionais;
Acessa corretamente discos formatados pelo DOS, Windows, Novell, OS/2,
NTFS, SunOS, Mac, etc;
Os sistemas de arquivos usados pelo GNU/Linux (Ext2, Ext3, Ext4, reiserfs,
xfs, jfs) organiza os arquivos de forma inteligente evitando a fragmentação e
fazendo-o um poderoso sistema para aplicações multi-usuárias exigentes e
gravações intensivas;
Pode ser executado em 16 arquiteturas diferentes (Intel, Macintosh, Alpha,
Arm, etc.) e diversas outras sub-arquiteturas;
Uma Distribuição Linux (ou simplesmente Distro), é a combinação do kernel
Linux com softwares livres e não-livres. São sistemas completos, prontos para
instalação e uso. Criadas e mantidas por indivíduos, grupos e organizações de todo
o mundo, bem como projetos de comunidades de desenvolvimento.
Algumas das distribuições mais utilizadas: Debian, Fedora, Red Hat,
Slackware, Gentoo, CentOS, OpenSuse, Mandriva, Backtrack, Android (dispositivos
móveis), etc.
27
A distribuição Linux escolhida para a implementação do método foi o Ubuntu
v.10.04, por possuir uma grande comunidade de usuários, maturidade, estabilidade
do sistema e facilidade de uso por usuários comuns. Na figura 6 é apresentada a
interface de área de trabalho do Ubuntu 10.04.
Figura 6 – Área de trabalho da distribuição Ubuntu Linux v.10.04
Nota: Construção do autor.
28
3. VIRTUALIZAÇÃO
Virtualização é a técnica que permite particionar um único sistema
computacional em vários outros denominados de máquinas virtuais. Uma máquina
virtual nada mais é que uma camada de software que oferece um ambiente
completo muito similar a uma máquina física. Com isso, cada máquina virtual pode
ter seu próprio sistema operacional, aplicativos e serviços de rede (CARISSIMI,
2008).
As máquinas virtuais, por emularem um ambiente computacional sobre outro
impõem algumas restrições de implementação e de desempenho. É aqui que entra o
desenvolvimento dos produtos de software para a virtualização. Basicamente, as
máquinas virtuais podem ser implementadas como uma aplicação de um sistema
operacional e executarem em modo usuário, ou uma camada de software
posicionada entre o hardware da máquina e o sistema operacional. A primeira opção
é o que se denomina de máquina virtual de processo e a segunda de monitor de
máquina virtual ou hypervisor (SMITH e NAIR, 2005).
Figura 7 – Modelo conceitual de máquinas virtuais
Fonte: Carissimi, 2008.
29
3.1 CONTEXTO HISTÓRICO
A virtualização não é uma técnica nova, vem sendo utilizada há muitos anos
e para diversos fins, e está novamente em plena evidência elevada pela
virtualização de sistemas operacionais e de servidores em datacenters. Mas, para
que se entenda como ocorreu essa cadeia de eventos é necessário voltar um pouco
na cronologia.
O tema virtualização têm se destacado no mundo da tecnologia da
informação (TI), apesar de não ser exatamente uma novidade. A introdução da
linguagem de programação Java trouxe consigo a noção de máquina virtual, mas a
origem das máquinas virtuais remonta ao início dos anos 70. Nessa época, era
comum que cada computador (mainframe), mesmo de um único fabricante, tivesse
seu próprio sistema operacional, e isso se tornou uma das principais razões para o
aparecimento das máquinas virtuais: permitir que software legado executasse nos
caros mainframes. Na prática, o software não incluía apenas a aplicação, mas sim
todo o ambiente operacional sobre o qual ele executava. Essa abordagem foi usada
com sucesso pela IBM que, na linha de mainframes 370 e seus sucessores, oferecia
uma máquina virtual, portada para várias de suas plataformas, sobre a qual as
aplicações executavam. Dessa forma era possível executar, ou migrar, uma
aplicação de uma plataforma para outra desde que houvesse uma versão de
máquina virtual para a plataforma alvo (CARISSIMI, 2008).
Com a popularização dos computadores pessoais, o mercado dos sistemas
operacionais afunilou-se para apenas três arquiteturas: Microsoft, Unix e Macintosh.
Cada qual possuía um conjunto de softwares aplicativos e um público-alvo bem
definido, tornando-se desnecessário a utilização da virtualização de sistemas,
estagnando por muito tempo a prática da virtualização, que foi resgatada pelos
projetos de datacenters, inserindo o contexto de consolidação de servidores, que
será detalhado do na seção 3.2.
30
3.2 CONSOLIDAÇÃO DE SERVIDORES
Ao se executar múltiplas instâncias de máquinas virtuais em um mesmo
hardware, também se está proporcionando um uso eficiente de seu poder de
processamento. Essa situação é comumente denominada de consolidação de
servidores e é especialmente interessante em datacenters devido à heterogeneidade
de plataformas inerente ao próprio negócio. Além disso, a diminuição de máquinas
físicas implica na redução de custos de infraestrutura física como espaço, energia
elétrica, cabeamento, refrigeração, suporte e manutenção a vários sistemas
(CARISSIMI, 2008).
A consolidação de servidores consiste em centralizar e/ou diminuir o número
de equipamentos e de aplicações instaladas em cada um dos servidores da
organização, com o objetivo de aumentar a produtividade da infraestrutura, melhorar
o gerenciamento do ambiente, aumentar a segurança, diminuir a manutenção e
economizar em recursos humanos, físicos e financeiros (OLIVEIRA, 2004). A Figura
8 mostra que a diminuição do número de servidores não implica na diminuição de
serviços operantes.
Figura 8 – Visão dos serviços na consolidação de servidores
Nota: Construção do Autor.
No modelo tradicional utilizava-se um servidor para cada serviço, fazendo
com que o custo de implantação e manutenção fosse elevado.
31
Com a consolidação de servidores é possível elevar a utilização do
hardware, diminuindo a quantidade de máquinas para manter os mesmos serviços
operantes. Além de haver um alto nível de segurança, os sistemas não ficariam
presos ao hardware. Uma máquina virtual pode ser copiada e transferida sem que
os serviços sejam parados, e se por acaso o hardware apresentar defeito, a cópia
poderá ser colocada em outro servidor e rapidamente o serviço voltará a operar.
Os conceitos da TI Verde2 e a necessidade de redução de custos
operacionais de TI impulsionaram a adoção da consolidação de servidores, pois
seria gasto menos espaço físico, com isso menos gastos com eletricidade,
refrigeração, manutenção e demais itens já citados.
Figura 9 – Diminuição do número de servidores com a virtualização
Nota: Construção do Autor.
3.3 SUPORTE DE HARDWARE PARA VIRTUALIZAÇÃO
Gigantes do mercado de processadores, AMD e Intel, possuem tecnologia
de suporte a virtualização. As extensões da AMD, denominada de AMD-V (AMD-
Virtualization), codinome Pacífica, se aplica às arquiteturas x86 de 64 bits como o
Athlon, Turion, Phenom e as linhas mais recentes. A Intel apresenta suas extensões
para as arquiteturas x86 de 32 e 64 bits. Essas extensões são conhecidas por IVT
(Intel Virtualization Technology) ou pelo seu codinome, Vanderpool. As soluções da
AMD e da Intel foram desenvolvidas independentemente uma da outra e são 2 Consiste na soma da gestão da economia de energia, com a de recursos desde a extração da
matéria-prima até o final da vida útil do equipamento (SILVA et. al, 2009).
32
incompatíveis, embora sirvam para o mesmo propósito. A AMD implementa funções
especiais no processador que são executadas por um hypervisor e que podem
controlar, em seu nome, acessos de um sistema hóspede ao hardware hospedeiro.
A Intel introduziu mecanismos similares (virtual machines extensions) que
complementam a idéia do conceito de anéis de proteção com dois novos modos:
root e não-root. Esses modos são controlados pelo hypervisor (que executa em
modo root) e que pode transferir a execução de um sistema operacional hóspede
para o modo não-root no qual instruções do anel zero são executadas sem risco
para o sistema (CARISSIMI, 2008).
3.4 TÉCNICAS DE VIRTUALIZAÇÃO
A virtualização é utilizada para diversas finalidades, neste trabalho será
abordada no âmbito da virtualização de sistemas operacionais em servidores.
Neste contexto, existem basicamente dois tipos de virtualização:
Máquina Virtual de Processo
Monitor de Máquina Virtual
o Virtualização Total
o Paravirtualização
3.4.1 Máquina Virtual de Processo
Uma máquina virtual de processo nada mais é que uma aplicação que
executa sobre um sistema operacional A e que emula o comportamento de um
sistema operacional B. Assim, aplicações desenvolvidas para o sistema B podem
executar sobre um sistema A. É importante salientar que essa técnica de
implementação permite que binários de um processador sejam interpretados e
substituídos por código equivalente de outro processador. Portanto, além de emular
sistema operacional é possível emular processadores. As desvantagens dessa
técnica são basicamente duas: desempenho e desperdício de capacidades do
hardware físico. O desempenho é sacrificado já que há uma tradução de um sistema
33
a outro, além de executarem em modo de usuário. O desperdício de capacidades
físicas do hardware vem do fato que as máquinas virtuais de processo oferecem
dispositivos de E/S genéricos e simples. O exemplo típico são placas de vídeo. Por
executarem como uma aplicação, ao terminar o processo máquina virtual, nenhum
rastro permanece no sistema (CARISSIMI, 2008).
Máquina Virtual de Processo cria um ambiente de execução para outras
aplicações, e pode gerar um conjunto de instruções que são interpretadas para
criação de instruções não-privilegiadas, chamadas de sistemas e APIs de bibliotecas
que correspondem à ação abstrata desejada. Pode-se defini-la como uma aplicação
de um Sistema Operacional executando em modo usuário, ou seja, as instruções
são executadas no modo não-privilegiado a partir de instruções abstratas que
representam a ação desejada (VIEIRA, 2008).
Figura 10 – Máquina virtual de processo
Fonte: Carissimi, 2008.
Considerando essas interfaces, a implementação de máquinas virtuais pode
ser feita de dois modos. Primeiro é possível fazer um programa de aplicação que
forneça um ambiente de execução para outras aplicações. Esse ambiente pode
possuir um conjunto de instruções abstratas que são interpretadas para gerar as
34
instruções de máquinas não privilegiadas, as chamadas de sistema e de API de
bibliotecas que correspondem a ação abstrata desejada. É o caso da máquina virtual
Java (JVM). Ainda é possível que esse programa de aplicação emule chamadas de
sistemas de outro sistema operacional, como ocorre quando se executa Linux em
sistemas Windows com a ferramenta VMware player. Esse tipo de virtualização é o
que se denomina de máquina virtual de processo (SMITH e NAIR, 2005).
3.4.2 Monitor de Máquina Virtual
VMM (Virtual Machine Monitor – Monitor de Máquina Virtual) ou hypervisor
pode ser compreendida como uma camada de software entre o hardware e as
máquinas virtuais.
O processo ou sistema que executa sobre uma máquina virtual é chamado
de hóspede, enquanto o ambiente sobre o qual ele executa é chamado de
hospedeiro (CARISSIMI, 2008).
Figura 11 – Monitor de máquina virtual
Fonte: Carissimi, 2008.
Pode ser implementando por dois métodos distintos: a virtualização total e a
paravirtualização, que serão abordados a seguir:
35
3.4.2.1 Virtualização Total
Esta técnica de virtualização cria uma réplica virtual do hardware hospedeiro
e oferece total acesso ao sistema hóspede. Com isso diversos inconvenientes
surgem, pois para que o hardware tenha que ser simulado torna-se necessário a
utilização de drivers genéricos pelo VMM, causando subutilização dos componentes
de hardware e consequentemente queda de desempenho. Os sistemas operacionais
hóspedes neste caso não são alterados. Outro inconveniente da virtualização total é
o fato de o sistema operacional visitante não ter conhecimento de que está sendo
executado sobre o VMM, então as instruções executadas pelo sistema operacional
visitante devem ser testadas pelo VMM para que depois sejam executadas
diretamente no hardware, ou executadas pelo VMM e simulada a execução para o
sistema visitante (CARISSIMI, 2008).
Figura 12 – Funcionamento da técnica de virtualização total
Fonte: Carissimi, 2008.
36
3.4.2.2 Paravirtualização
A paravirtualização é uma alternativa de contorno dos problemas que a
técnica de virtualização total possui. Com este método, é possível apresentar ao
sistema operacional hóspede uma arquitetura virtual que é muito similar, mas não
idêntica ao hardware real. Essa solução aumenta o desempenho das máquinas
virtuais que as utilizam (BARHAM, 2003).
Entretanto, são necessárias modificações nos sistemas operacionais
convidados, que executam na atual arquitetura x86. Ainda assim, as mudanças
necessárias nos sistemas convidados devem ser passíveis de implementação, o que
já é implementado nas versões mais recentes do Linux (versão 2.6). Isso mostra que
a modificação do sistema operacional convidado é possível de ser feita com um
esforço não tão grande a ponto de impactar substancialmente na evolução de
sistemas operacionais já consolidados no mercado.
Figura 13 – Funcionamento da técnica de paravirtualização
Fonte: Carissimi, 2008.
37
3.5 FERRAMENTAS DE VIRTUALIZAÇÃO
Existem diversas soluções de mercado para virtualização de servidores, que
utilizam as técnicas de virtualização mencionadas nas seções anteriores. Dentre
elas, listadas na tabela abaixo as mais populares:
Tabela 2 – Ferramentas de virtualização
Nota: Construção do Autor.
PROJETO TÉCNICA LICENÇA
VMWare ESXi Virtualização total Proprietária
VMWare Workstation Máquina virtual de processo Proprietária
Citrix Xen Server Paravirtualização Proprietária
Xen Source Paravirtualização GPL
Virtual Box Virtualização total Módulos do kernel GPL. RDP e suporte a USB são proprietários.
38
4. FERRAMENTAS METODOLÓGICAS
Existem diversos tipos de laboratórios baseados na web, diferenciados pelos
recursos disponibilizados. Para a criação do método, foi elaborado um modelo de
laboratório remoto interativo, constituído por uma estrutura de hardware e software
para manipulação de instrumentos e experimentos reais, sendo realizada
obrigatoriamente através de uma rede de comunicação, conforme figura 14.
Figura 14 – Modelo de laboratório remoto interativo
Adaptado de: Murray et. al, 2008.
Adotou-se como ferramenta de virtualização, o paravirtualizador Citrix Xen
Server, nele são hospedadas e gerenciadas as máquinas virtuais onde os softwares
do laboratório remoto serão instalados.
Para o acesso dos usuários aos softwares instalados nas máquinas virtuais
do Xen Server serão utilizados serviços de terminais do Windows e Linux, conforme
figura 15.
39
Figura 15 – Esquema de virtualização e acesso dos usuários às VMs
Nota: Construção do Autor.
O objetivo disto é tornar a plataforma do laboratório remoto compatível com
clientes utilizando sistemas operacionais Windows e Linux, ou seja, independente de
qual desses sistemas a máquina do usuário estiver rodando ele consiga facilmente
acessar as máquinas virtuais e consequentemente os aplicativos dela. O laboratório
tem de suportar esses processos de forma transparente para o usuário, para que a
navegação seja leve e tranquila.
Se o usuário utiliza o S.O. Windows, possui suporte nativo aos arquivos de
Área de Trabalho Remota do Windows (RDP – Remote Desktop Protocol) e com o
cliente NX instalado ele poderá acessar as máquinas virtuais Linux e seus
aplicativos.
Mas, se o usuário utilizar o sistema operacional Linux, para utilizar softwares
hospedados em máquinas virtuais Linux, é necessário à instalação do cliente NX.
Porém se for necessário o acesso a máquinas virtuais Windows, por não possuir
suporte nativo aos arquivos de área de trabalho remota do Windows será utilizado o
software rdesktop, aplicativo para conexão remota a máquinas Windows a partir de
máquinas Linux. De acordo com o site da comunidade rdesktop, além da conexão
40
remota você também pode: redirecionar portas LPT e COM, redirecionar o áudio,
criar disco virtual mapeado e redirecionar o drive de CD/DVD, entre outros.
Para a aplicação do método de virtualização em nível de teste, foi utilizado
uma máquina com processador Intel Core I5, disco rígido de 2 Terabytes e memória
RAM de 8 Gigabytes como servidor Xen e um notebook com processador Intel Core
2 Duo, disco rígido de 320 Gigabytes e memória RAM de 4 Gigabytes como cliente
para acesso às VMs.
4.1 CITRIX XEN SERVER
Com intuito de criar um ambiente de execução para as máquinas virtuais,
optou-se pela utilização de um monitor de máquinas virtuais com a técnica de
paravirtualização, por utilizar toda a capacidade do hardware hospedeiro, elevando o
desempenho das máquinas virtuais.
Para tanto, foi escolhido como paravirtualizador o Xen Server. Baseado na
distribuição CentOS Linux, sistema operacional livre, possui algumas melhorias
realizadas por sua atual mantenedora Citrix. Este funciona como um gerenciador de
máquinas virtuais, como mostra a Figura 16.
Figura 16 – Estrutura de camadas do paravirtualizador Xen Server
Nota: Construção do Autor.
A gerência do servidor Xen Server é feita pelo software Xen Center, que
deve ser instalado em uma máquina cliente que pode possuir sistema operacional
Windows ou Linux, nele é possível fazer todas as configurações do servidor, como
41
criação de grupos de servidores Xen (New Pool), adição de servidores Xen (Add
New Server), criação de máquinas virtuais (New VM), alterar o estado de uma
máquina virtual (Start, Shutdown, Reboot e Suspend), configuração de recursos da
máquina virtual como processador, memória, placas de rede, entre outros. A Figura
17 apresenta a tela inicial do Xen Center.
Figura 17 – Interface de gerenciamento do Xen Center
Nota: Construção do Autor.
Todos os serviços do laboratório remoto foram hospedados no servidor Xen
(Figura 18), utilizando os conceitos de consolidação de servidores, apresentado na
seção 3.2.
42
Figura 18 – Hospedagem dos serviços no servidor Xen
Nota: Construção do Autor.
4.2 TS REMOTE APP
O TS RemoteApp é uma ferramenta que faz parte do pacote Terminal
Services presente no Microsoft Windows Server 2008. Permite acesso a programas
compatíveis com a plataforma Windows de praticamente qualquer lugar para
usuários de qualquer computador, desde que tenham o cliente da Conexão de Área
de Trabalho Remota (RDC – Remote Desktop Connection) instalado. Os usuários
podem executar programas RemoteApp lado a lado com seus programas locais. Um
usuário pode minimizar, maximizar e redimensionar a janela do programa e pode
facilmente iniciar vários programas ao mesmo tempo. Se um usuário estiver
executando mais de um programa RemoteApp no mesmo servidor de terminal, os
programas RemoteApp compartilharão a mesma sessão (sessão 0) dos Serviços de
Terminal. Por padrão utiliza a porta TCP 3389, que pode ser alterada. (MICROSOFT
TECHNET, 2011). Os usuários podem executar programas RemoteApp de várias
maneiras:
Clicar duas vezes no arquivo do protocolo RDP (Remote Desktop
Protocol);
Acessar um link para o programa em um site usando o TS Web Access;
Clicar duas vezes em um ícone de programa na área de trabalho ou no
menu Iniciar criado e distribuído em pacote do Windows Installer (.msi).
43
Neste modelo optou-se pela utilização de arquivos com extensão RDP para
todos os programas RemoteApp e chamados no servidor web do laboratório remoto,
o código do arquivo RDP pode ser visto no Anexo A.
Na Figura 19 e Figura 20, é apresentada a execução remota dos softwares
Microsoft Office Visio e o Microsoft Paint, respectivamente.
Figura 19 – Acesso ao software Microsoft Office Visio via RemoteApp
Nota: Construção do Autor.
44
Figura 20 – Acesso ao software Microsoft Paint via RemoteApp
Nota: Construção do Autor.
4.3 NX SERVER
O NX Server é um aplicativo baseado na linguagem CGI perl, que permite o
acesso remoto a servidores com o NX instalado, independente da localização
geográfica do usuário.
Mantido pela empresa NoMachine, possui versões com licença proprietária
e também versões gratuitas, existe também a opção de usar o FreeNX, versão
totalmente open-source do servidor NX, que combina as bibliotecas de código aberto
distribuídas pela NoMachine e um conjunto de scripts desenvolvidos pela
comunidade. Atualmente, não existe muita vantagem no uso do FreeNX, já que
temos a versão gratuita do NX Server, mas ele já foi a versão mais usada.
45
O servidor NX utiliza o SSH (Secure Shell) como meio de transporte, por
isso, para utilizá-lo é necessário que o servidor SSH esteja ativo. É justamente
devido à necessidade do servidor SSH e do servidor de terminal X que o servidor NX
roda apenas sobre o Linux e Solaris. Você pode se conectar ao servidor a partir das
estações Windows, mas não rodar o servidor NX sobre elas.
A ferramenta foi adotada por ser uma excelente alternativa para o acesso a
máquinas Linux via SSH Forwarding, que utiliza a porta TCP 22. O Anexo B mostra
um script para conexão via NX.
A Figura 21 mostra a execução remota do software Fritzing e a Figura 22 a
execução remota do Navegador Web Mozilla Firefox.
Figura 21 – Acesso ao software de eletrônica Fritizing via NX Server
Nota: Construção do Autor.
46
Figura 22 – Acesso ao Navegador Web Firefox via NX Server
Nota: Construção do Autor.
4.4 POLÍTICAS PARA GESTÃO DO LABORATÓRIO
Os laboratórios remotos são amplamente utilizados por instituições de
ensino, pesquisa e tecnologia, que necessitam gerenciar a utilização dos
experimentos pelos usuários, bem como o uso de softwares essenciais ao ensino. O
método de virtualização de S.O. possibilitará o gerenciamento de:
Máquinas virtuais;
Licenças de software;
Tempo de uso do software por cada usuário;
Recursos de hardware do servidor.
A disponibilização de softwares em laboratório remoto traz desafios como a
utilização simultânea de uma mesma chave por múltiplos usuários, violando assim
as leis de direitos autorais. Como solução, este método prevê o agendamento de
47
uso do software por meio da divisão flexível do tempo para todos os usuários. Esta
flexibilidade permite que a expiração do tempo possa ser prorrogada, caso haja
disponibilidade de horário. Assim, cada software não poderá ser utilizado
simultaneamente pelos usuários. O agendamento de software pode ser visto na
Figura 23, o ícone “Meus Softwares” apresenta ao usuário os aplicativos agendados.
Figura 23 – Interface Web do Laboratório Remoto
Nota: Construção do autor.
48
CONCLUSÕES
Com o modelo de virtualização proposto espera-se contribuir com
instituições interessadas na criação de ambientes virtuais de ensino, potencializando
suas atividades de pesquisa.
Conclui-se que a disponibilização de softwares através de máquinas virtuais
traz diversos benefícios como a centralização da gerência dos softwares bem como
do controle de acesso dos usuários. Além de prover escalabilidade, confiabilidade,
flexibilidade e independência de plataformas por parte dos usuários.
Espera-se ainda permitir a racionalização dos recursos no estabelecimento
dos critérios de agendamento obedecendo às leis vigentes de licenciamento de
software.
A implementação do método apresentado neste trabalho proporcionou
resultados satisfatórios, demonstrando a viabilidade no desenvolvimento de uma
infraestrutura de instrumentação remota utilizando a virtualização de sistemas
operacionais para a hospedagem e disponibilização de softwares que possam ser
utilizados em laboratórios remotos.
Contudo, o método ainda poderá sofrer modificações no decorrer do tempo.
Pois, em trabalhos futuros novas ferramentas de virtualização e de acesso aos
aplicativos remotos poderão ser testados e possivelmente possibilitarão novas
funcionalidades e perspectivas na utilização, como o suporte a conexão USB para
máquinas hóspedes e substituição de ferramentas proprietárias por livres, desde que
se mantenha a qualidade.
49
REFERÊNCIAS
ALTPETER, F., S. CH., et al. A General Instrument for Real-Time Control and Data Acquisition. 3rd IFAC/IFIP Workshop on Algorithms and Architecture for Real Time Control. Ostend, Belgica. Junho, 1995. 323-327 p. BARHAM, P.; DRAGOVIC, B.; FRASER, K.; HAND, S.; HARRIS, T.; Ho, A.; NEUGEBAUER, R.; PRATT, I.; WARFIELD, A. Xen and the Art of Visualization. In Proc. 19th ACM Symp. On Operating System Principles (SOSPí03), 2003. CARISSIMI, A. Virtualização: da teoria a soluções. In Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos, 2008, Rio de Janeiro. Livro texto dos minicursos. Rio de Janeiro: SBC, 2008. p. 174-199. CAMPOS, G. H. B.; COUTINHO, L.; ROQUE, G. O. B. Design didático: O desafio de um Metacurso. PUC-RJ, 2005. COUTINHO, L. Web Didática: um modelo para auxílio na elaboração de cursos baseados na Web, Dissertação de mestrado, Programa de Pós-graduação do Instituto de Matemática, Núcleo de Computação Eletrônica, UFRJ, 2003. GUIA DO HARDWARE, Documentação sobre a instalação do NX Server, 2011. <http://www.hardware.com.br/artigos/instalando-nx-server-versao-gratuita/ > Acesso em: 01/11/2011. GUIA FOCA GNU/LINUX, Documentação Completa sobre o GNU/Linux. <http://www.guiafoca.org> Acesso em: 22/11/2011. KIRSCHNER, P. A. e F. PAAS. Web-enhanced higher education: a tower of Babel. Computers in Human Behavior, v.17, n.4, p.347-353. 2001. MICROSOFT TECHNET, RemoteApp Serviços de Terminal (TS RemoteApp). <http://technet.microsoft.com/pt-br/library/cc753844(WS.10,printer).aspx> Acesso em: 14/11/2011. MURRAY, S.; LOWE, D.; LINDSAY, E.; LASKY, V.; and LIU, D. Experiences with a Hybrid Architecture for Remote Laboratories, IEEE. NY USA, 2008. NAJMANOVICH, D. O sujeito encarnado – questões para pesquisa no/do cotidiano. Rio de Janeiro: DP&A, 2001 NEDIC, Z., J. MACHOTKD, et al. Remote Laboratories versus Virtual and Real Laboratories. 33rd ASEE/IEEE Frontiers in Education Conference. Boulder, Colorado, USA: IEEE, 2003. T3E p. NOMACHINE. Documentação sobre o servidor NX Server. <http://www.nomachine.com/documents.php> Acesso em: 01/11/2011.
50
OGIBOSKI,L. ESCOLA POLITÉCNICA DA UNIVERSIDADE DE SÃO PAULO. Laboratório remoto baseado em software livre para realização de experimentos didáticos. São Paulo, 2007. Dissertação de Mestrado. OLIVEIRA, G. INSTITUTO SUPERIOR TUPY. Estudo comparativo de metodologias de consolidação de servidores para a elaboração de uma proposta de implementação, 2004. RDESKTOP, Conexão remota de máquinas Linux a máquinas Windows. <www.rdesktop.org/> Acesso em: 17/11/2011. SILBERCHATZ, A.; GALVIN, P. Sistemas Operacionais: Conceitos. 5ª Edição. Prentice Hall, São Paulo, 2000. SILVA, M. R. P.; ZANETI, G. B.; ZAGO, M. G e SOUZA A. N. TI Verde – Princípios e Práticas Sustentáveis para Aplicação em Universidades, 2009. SMITH, J.E; NAIR, R. The architecture of virtual machines. IEEE Computer, v.38, n.5, pp. 32-38, 2005. TANEMBAUM, A. S. Sistemas Operacionais Modernos, 3ª Edição. Pearson Prentice Hall, São Paulo, 2010. VIEIRA, W. V. CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DO ESPÍRITO SANTO. Virtualização. Mostra Tecnológica do CEFET-ES, 2008. WIKIPEDIA, Documentação sobre o sistema operacional Windows. < http://en.wikipedia.org/wiki/microsoft_windows > Acessado: 24/11/2011.
51
ANEXOS
ANEXO A – Código-fonte do pacote RDP utilizado no RemoteApp
1. redirectclipboard:i:1 2. redirectposdevices:i:0 3. redirectprinters:i:1 4. redirectcomports:i:1 5. redirectsmartcards:i:1 6. devicestoredirect:s:* 7. drivestoredirect:s:* 8. redirectdrives:i:1 9. session bpp:i:32 10. span monitors:i:1 11. prompt for credentials on client:i:1 12. remoteapplicationmode:i:1 13. server port:i:3389 14. allow font smoothing:i:1 15. promptcredentialonce:i:1 16. authentication level:i:0 17. gatewayusagemethod:i:2 18. gatewayprofileusagemethod:i:0 19. gatewaycredentialssource:i:0 20. full address:s:SRV-REMOTE 21. alternate shell:s:||VISIO 22. remoteapplicationprogram:s:||VISIO 23. gatewayhostname:s: 24. remoteapplicationname:s:VISIO.EXE 25. remoteapplicationcmdline:s: 26. signscope:s:Full Address,Server
Port,GatewayHostname,GatewayUsageMethod,GatewayProfileUsageMethod,Gat
ewayCredentialsSource,PromptCredentialOnce,Alternate
Shell,RemoteApplicationProgram,RemoteApplicationMode,RemoteApplicatio
nName,RemoteApplicationCmdLine,Authentication
Level,RedirectDrives,RedirectPrinters,RedirectCOMPorts,RedirectSmartC
ards,RedirectPOSDevices,RedirectClipboard,DevicesToRedirect,DrivesToR
edirect
27. signature:s:AQABAAEAAACgCwAAMIILnAYJKoZIhvcNAQcCoIILjTCCC4kCAQExCzAJBgUrDgMC [...]
Comentários do autor: Linha 13 – Porta do servidor Terminal Services (RemoteApp). Linha 20 – Nome NetBIOS completo do servidor. Linha 21 – Nome do aplicativo para chamada via prompt do comandos do Windows. Linha 22 – Nome do aplicativo para conexão remota. Linha 22 – Parâmetros de configuração da conexão entre cliente e servidor. Linha 27 a [...] – Resposta aos parâmetros de configuração da conexão entre cliente e servidor. Este campo é criptografado para a segurança da comunicação.
52
ANEXO B – Código-fonte do script de conexão utilizando o NX Server
1. <!DOCTYPE NXClientSettings> 2. <NXClientSettings application="nxclient" version="1.3" > 3. <group name="Advanced" > 4. <option key="Cache size" value="16" /> 5. <option key="Cache size on disk" value="64" /> 6. <option key="Current keyboard" value="true" /> 7. <option key="Custom keyboard layout" value="" /> 8. <option key="Disable DirectDraw" value="false" /> 9. <option key="Disable ZLIB stream compression" value="false" /> 10. <option key="Disable deferred updates" value="false" /> 11. <option key="Enable HTTP proxy" value="false" /> 12. <option key="Enable SSL encryption" value="true" /> 13. <option key="Enable response time optimisations" value="false" /> 14. <option key="Grab keyboard" value="false" /> 15. <option key="HTTP proxy host" value="" /> 16. <option key="HTTP proxy port" value="8080" /> 17. <option key="HTTP proxy username" value="" /> 18. <option key="Remember HTTP proxy password" value="false" /> 19. <option key="Restore cache" value="true" /> 20. <option key="StreamCompression" value="" /> 21. </group> 22. <group name="Environment" > 23. <option key="Font server host" value="" /> 24. <option key="Font server port" value="7100" /> 25. <option key="Use font server" value="false" /> 26. </group> 27. <group name="General" > 28. <option key="Automatic reconnect" value="true" /> 29. <option key="Command line"
value="/home/fritzing.2011.08.18.linux.i386/Fritzing.sh" />
30. <option key="Custom Unix Desktop" value="application" /> 31. <option key="Desktop" value="console" /> 32. <option key="Disable SHM" value="false" /> 33. <option key="Disable emulate shared pixmaps" value="false" /> 34. <option key="Link speed" value="adsl" /> 35. <option key="Remember password" value="true" /> 36. <option key="Resolution" value="available" /> 37. <option key="Resolution height" value="600" /> 38. <option key="Resolution width" value="800" /> 39. <option key="Server host" value="000.000.000.000" /> 40. <option key="Server port" value="22" /> 41. <option key="Session" value="unix" /> 42. <option key="Spread over monitors" value="false" /> 43. <option key="Use default image encoding" value="0" /> 44. <option key="Use render" value="true" /> 45. <option key="Use taint" value="true" /> 46. <option key="Virtual desktop" value="false" /> 47. <option key="XAgent encoding" value="true" /> 48. <option key="displaySaveOnExit" value="true" /> 49. <option key="xdm broadcast port" value="177" /> 50. <option key="xdm list host" value="localhost" /> 51. <option key="xdm list port" value="177" /> 52. <option key="xdm mode" value="server decide" /> 53. <option key="xdm query host" value="localhost" /> 54. <option key="xdm query port" value="177" /> 55. </group> 56. <group name="Images" >
53
57. <option key="Disable JPEG Compression" value="0" /> 58. <option key="Disable all image optimisations" value="false" /> 59. <option key="Disable backingstore" value="false" /> 60. <option key="Disable composite" value="false" /> 61. <option key="Image Compression Type" value="3" /> 62. <option key="Image Encoding Type" value="0" /> 63. <option key="Image JPEG Encoding" value="false" /> 64. <option key="JPEG Quality" value="6" /> 65. <option key="RDP Image Encoding" value="3" /> 66. <option key="RDP JPEG Quality" value="6" /> 67. <option key="RDP optimization for low-bandwidth link" value="false"
/>
68. <option key="Reduce colors to" value="" /> 69. <option key="Use PNG Compression" value="true" /> 70. <option key="VNC JPEG Quality" value="6" /> 71. <option key="VNC images compression" value="3" /> 72. </group> 73. <group name="Login" > 74. <option key="Auth" value="(]N@1;%oaYB3!yjQC>+qc[G4${[email protected]_*" /> 75. <option key="Guest Mode" value="false" /> 76. <option key="Guest password" value="" /> 77. <option key="Guest username" value="" /> 78. <option key="Login Method" value="nx" /> 79. <option key="Public Key" value="-----BEGIN DSA PRIVATE KEY----- 80. MIIBuwIBAAKBgQCXv9AzQXjxvXWC1qu3CdEqskX9YomTfyG865gb4D02ZwWuRU/9 81. C3I9/bEWLdaWgJYXIcFJsMCIkmWjjeSZyTmeoypI1iLifTHUxn3b7WNWi8AzKcVF 82. aBsBGiljsop9NiD1mEpA0G+nHHrhvTXz7pUvYrsrXcdMyM6rxqn77nbbnwIVALCi 83. xFdHZADw5KAVZI7r6QatEkqLAoGBAI4L1TQGFkq5xQ/nIIciW8setAAIyrcWdK/z 84. 5/ZPeELdq70KDJxoLf81NL/8uIc4PoNyTRJjtT3R4f8Az1TsZWeh2+ReCEJxDWgG 85. fbk2YhRqoQTtXPFsI4qvzBWct42WonWqyyb1bPBHk+JmXFscJu5yFQ+JUVNsENpY 86. +Gkz3HqTAoGANlgcCuA4wrC+3Cic9CFkqiwO/Rn1vk8dvGuEQqFJ6f6LVfPfRTfa 87. QU7TGVLk2CzY4dasrwxJ1f6FsT8DHTNGnxELPKRuLstGrFY/PR7KeafeFZDf+fJ3 88. mbX5nxrld3wi5titTnX+8s4IKv29HJguPvOK/SI7cjzA+SqNfD7qEo8CFDIm1xRf 89. 8xAPsSKs6yZ6j1FNklfu 90. -----END DSA PRIVATE KEY----- 91. " /> 92. <option key="User" value="usuario" /> 93. </group> 94. <group name="Services" > 95. <option key="Audio" value="false" /> 96. <option key="IPPPort" value="631" /> 97. <option key="IPPPrinting" value="false" /> 98. <option key="Shares" value="false" /> 99. </group> 100. <group name="VNC Session" > 101. <option key="Display" value="0" /> 102. <option key="Remember" value="false" /> 103. <option key="Server" value="" /> 104. </group> 105. <group name="Windows Session" > 106. <option key="Application" value="" /> 107. <option key="Authentication" value="2" /> 108. <option key="Color Depth" value="8" /> 109. <option key="Domain" value="" /> 110. <option key="Image Cache" value="true" /> 111. <option key="Password" value="senha" /> 112. <option key="Remember" value="true" /> 113. <option key="Run application" value="true" /> 114. <option key="Server" value="" /> 115. <option key="User" value="" /> 116. </group>
54
117. <group name="share chosen" > 118. <option key="Share number" value="0" /> 119. </group> 120. </NXClientSettings>
Comentários do autor:
Linha 12 – Opção de encriptação da conexão com protocolo SSL. Linha 16 – Número da porta HTTP a ser utilizada. Linha 29 – Local onde é inserido o comando que chama o aplicativo, ou seja, o endereço do arquivo executável do software remoto. No exemplo está sendo executado software Fritzing. Linhas 37 e 38 – São configuradas a altura e largura da janela do aplicativo que será executado, que pode ser configurada livremente. A resolução utilizada no exemplo é 800x600. Linha 39 – IP do servidor NX. Linha 40 – Porta do protocolo da conexão, no caso porta 22, protocolo SSH. Linhas de 79 a 90 – Chave pública compartilhada na conexão. Linha 29 – Usuário a ser conectado no servidor NX. Linha 29 – Senha para o usuário a ser conectado no servidor NX.