Virtualização
Cada vez mais empresas estão buscando formas de reduzir os custos e complexidade com o ambiente de TI, a virtualização se tornou um componente chave para o desenvolvimento de uma estratégia eficiente na busca destes objetivos. Dentre os desafios enfrentados nos datacenters podemos destacar:
- datacenters atingiram a capacidade máxima;
- servidores subutilizados;
- gerenciamento e Segurança complexa dos servidores;
- hardware e sistemas legados;
- problemas de compatibilidade de aplicações.
Índice |
O que é virtualização? [editar]
Virtualização, basicamente, é a técnica de separar aplicação e sistema operacional dos componentes físicos. Por exemplo, uma máquina virtual possui aplicação e sistema operacional como um servidor físico, mas estes não estão vinculados ao hardware e pode ser disponibilizado onde for mais conveniente. Uma aplicação deve ser executada em um sistema operacional em um determinado hardware. Com virtualização de aplicação ou apresentação, estas aplicações podem rodar em um servidor ou ambiente centralizado e ser portada para outros sistemas operacionais e hardwares.1 2
Soluções de virtualização [editar]
Abaixo, as formas mais comuns de virtualização:
- virtualização de servidor — técnica de execução de um ou mais servidores virtuais sobre um servidor físico; permite maior densidade de utilização de recursos (hardware, espaço e etc), enquanto permite que isolamento e segurança sejam mantidos;
- virtualização de aplicação — a virtualização de aplicação permite executar aplicações em um ambiente virtualizado no desktop do usuário, isolando a aplicação do Sistema Operacional; isso é possível através do encapsulamento da aplicação no ambiente virtual — quando a solução completa de virtualização de aplicações é implantada, é possível distribuir aplicações de um servidor central;
- virtualização de desktop — consiste na execução de múltiplos sistemas operacionais em uma única workstation e permitindo que uma aplicação de linha de negócio seja executada em um sistema operacional não compatível;
- virtualização de apresentação — a virtualização de apresentação permite executar e manter o armazenamento das aplicações em servidores centralizados, enquanto provê uma interface familiar para o usuário em sua estação.
- Infraestrutura de desktop virtual (Virtual Desktop Infrastructure - VDI) — o VDI permite que você hospede máquinas virtuais cliente em uma estrutura de virtualização como virtualização de servidores.
- virtualização de perfil — com a virtualização de perfil, os usuários podem ter os documentos e perfil separados de uma máquina específica, o que permite a fácil movimentação do usuário para novas estações em caso de roubo ou quebra de equipamento; a virtualização de perfil também permite ter uma experiência de desktop única quando utilizando outras tecnologias de virtualização, como VDI.
Um dos componentes críticos para a implantação de um projeto de virtualização, independente da tecnologia utilizada, são as ferramentas de gerenciamento. As ferramentas que gerenciam o ambiente Virtual devem gerenciar tanto o ambiente físico como o virtual, assim como Sistema Operacional e Aplicações.
Lista de implementações de máquinas virtuais [editar]
Em soma aos métodos de virtualização portável descritas acima, as máquinas virtuais são usualmente utilizadas como modelo de execução para linguagens individuais de script. Esta tabela descreve as implementações de máquinas virtuais, ambos da categoria de máquinas virtuais portáveis e máquinas virtuais de linguagens de script.
| Máquina virtual | Linguagens | Comentários | Interpretador | Compilação Just in Time | Linguagem implementação | Linhas de códio fonte |
|---|---|---|---|---|---|---|
| Adobe Flash Player (aka Tamarin) | ActionScript, SWF (formato ficheiro) | interactive web authoring tool. bytecode is named "ActionScript Byte Code (.abc)" | Sim | Sim | C++ | 135k (initially released) |
| BEAM | Erlang, Reia, Lisp Flavoured Erlang, Elixir | There exists a native-code compiler, HiPE. | Sim | Não | C | 247k |
| Clipper p-code | Clipper, Harbour | plankton, HVM | Sim | Não | C | |
| Dis (Inferno) | Limbo | Dis Virtual Machine Specification | Sim | Sim | C | 15k + 2850 per JIT arch + 500 per host OS |
| DotGNU/Portable.NET | Linguagens de programação CLI incluindo: C# | Clone of Common Language Runtime | Não | Sim | C, C# | |
| Forth | Forth | Funções estão simplificadas, normalmente contêm assemblador, compilador, interpretadores de nível-textos e nível-binarios, algumas vezes com editor, debugador e sistema operativo.sometimes editor, debugger and OS. Compilation speeds are >20 SKLOC/S and behave much like JIT. | Sim | Não | Forth, Forth Assembler | 2.8K to 5.6K; advanced, professional implementations are smaller. |
| Glulx | Glulx, Z-code | |||||
| Icon | Icon | |||||
| JVM | Java, Jython, Groovy, JRuby, C, C++, Clojure, Scala e e outros | Reference implementation by Sun ; OpenJDK: code under GPL ; IcedTea: code and tools under GPL | Sim | Sim | JDK, OpenJDK & IcedTea com JIT regular : Java, C, ASM ; IcedTea com o "Zero" JIT : Java, C | JVM contêm cerca de 6500k linhas; TCK é 80k de testes e têm cerca de 1000k linhas |
| LLVM | C, C++, Objective-C, Ada, and Fortran | MSIL, C and C++ output are supported. ActionScript Byte Code output is supported by Adobe Alchemy. bytecode is named "LLVM Bytecode (.bc)". assembly is named "LLVM Assembly Language (*.ll)". | Sim | Sim | C++ | 811k 3 |
| Lua | Lua | Sim | LuaJIT | C | 13k + 7k LuaJIT | |
| MMIX | MMIXAL | |||||
| Mono | CLI languages including: C#, VB.NET, IronPython, IronRuby, e outros | clone do Common Language Runtime. | Sim | Sim | C#, C | 2332k |
| Oz | Oz, Alice | |||||
| NekoVM | currently Neko and haXe | Sim | x86 only | C | 46k | |
| O-code machine | BCPL | |||||
| UCSD p-System | Pascal | UCSD Pascal, muito utilizado no final da década de 1970 incluindo o Apple II | ||||
| Parrot | Perl (6 & 5), NQP-rx, PIR, PASM, PBC, BASIC, bc, C, ECMAScript, Lisp, Lua, m4, Tcl, WMLScript, XML, e outros | Sim | Sim | C, Perl | 111k C, 240k Perl | |
| Perl virtual machine | Perl | op-code tree walker | Sim | Não | C, Perl | 175k C, 9k Perl |
| CPython | Python | Sim | Psyco | C | 387k C, 368k Python, 10k ASM, 31k Psyco | |
| PyPy | Python | Self-hosting implementation of Python, next generation of Psyco | Sim | Sim | Python | |
| Rubinius | Ruby | para outra implementação Virtual machine for another Ruby | Sim | Sim | C++, Ruby | |
| Silverlight | C#, VB.NET | A Micro-version of Microsoft .NET Framework to let applications run sandboxed inside browser | Sim | Sim | C++ | 7MB (initially released) |
| SEAM | Alice | |||||
| ScummVM | Scumm | Computer game engine | ||||
| SECD | ISWIM, Lispkit Lisp | |||||
| Squirrel | Squirrel | Sim | Squirrel_JIT | C++ | 12k | |
| Smalltalk | Smalltalk | |||||
| SQLite | SQLite opcodes | Virtual database engine | ||||
| Squeak | Squeak Smalltalk | Self hosting implementation of Squeak virtual machine. Rich multi-media support. | Sim | Cog[1] & Exupery | Smalltalk/Slang | 110k Smalltalk, ~300K C |
| TaoGroup VP/VP2 | C, Java | Proprietary embedded VM | ||||
| TraceMonkey | JavaScript | Based on Tamarin | Não | Sim | C++ | 173k |
| TrueType | TrueType | Motor visualização de fontes | Sim | Não | C (típico) | |
| Valgrind | x86/x86-64 binaries | Verificando acessos de memória e falhas de indicadores sobre o Linux | C | 467k 4 | ||
| VisualWorks | Smalltalk | Não | Sim | C | ||
| VMKit | JVM and CLI virtual machine based on LLVM. | Não | Sim | |||
| Vx32 virtual machine | x86 binaries | Application-level virtualization for native code | Não | Sim | ||
| Waba | Virtual machine for small devices, similar to Java | |||||
| Yet Another Ruby VM (YARV) | Ruby | Virtual machine of the reference implementation for Ruby 1.9 and newer versions | Sim | Sim | C | |
| Z-machine | Z-Code | |||||
| Zend Engine | PHP | Sim | Não | C | 75k | |
| libJIT Library for Just-In-Time compilation | Common Intermediate Language Java bytecode Domain-specific programming language | Virtual machine is used in Portable.NET Just-In-Time compiler, ILDJIT, HornetsEye | Sim | Sim | C, ia32, arm, amd64, alpha, low-level CPU architecture specific machine code |
Referências
- ↑ Virtualization in education (PDF) (em ingles). IBM (Outubro 2007).
- ↑ Microsoft, VMware, Citrix Battle for Hypervisor Cloud | Virtualization (em ingles). ITBusinessEdge.com. Página visitada em 2010-12-10.
- ↑ A infraestrutura compilador LLVM, ohloh.net, 2011 Nov 30
- ↑ Valgrind, ohloh.net, 2011 Nov 30.
Ver também [editar]
- Virtualização de servidor
- VMware
- Xen
- KVM
- Hyper-V
- Hipervisor
- "discussão libJIT vs LLVM" Rhys Weatherley (libJIT) e Chris Lattner (LLVM)
- en:Application virtualization - Virtualização aplicação
- Language binding
- en:Foreign function interface
- Convenção de chamada de funções
- en:Name mangling (em inglês)
- Application programming interface (API)
- Interface binária de aplicação (ABI)
- en:Comparison of platform virtual machines (em inglês)
Bibliografia
Ligações externas [editar]
- (em inglês) searchservervirtualization.techtarget.com
- (em inglês) Virtualization.com - Portal dedicado à virtualização com foruns e novidades Xen, VMware, Virtual PC, Virtual server, etc.
- List of Java Virtual Machines (JVMs), Java Development Kits (JDKs), Java Runtime Environments (JREs) (em inglês)
| A Wikipédia possui o portal: Portal das tecnologias de informação {{{Portal2}}}
{{{Portal3}}}
{{{Portal4}}}
{{{Portal5}}}
|
- Este artigo foi inicialmente traduzido do artigo da Wikipédia em inglês, cujo título é «Comparison of application virtual machines», especificamente desta versão.