miniaturadaimagem|Sistema OpenIndiana rodando no QEMU Em computação, virtualização é o ato de criar uma versão virtual (ao invés de real) de algo, incluindo a simulação de uma plataforma de hardware, sistema operacional, dispositivo de armazenamento ou recursos de rede.

A virtualização começou na década de 1960, como um método de dividir logicamente os recursos do sistema fornecidos pelos computadores mainframe entre diferentes aplicações. Desde então, o significado do termo foi ampliado.

É a tecnologia central de datacenters e essencialmente transforma, obedecidas certas condições, um servidor físico em vários servidores virtuais. Os servidores virtuais criados com a virtualização oferecem um ambiente similar ao de um servidor físico e otimizam o uso de recursos, tornando as aplicações independentes do hardware. O principal motivo apontado pelas organizações para fazerem uso da virtualização tem sido a redução de custos de hardware, a melhoria da condição de recuperação a desastres e a economia de espaço para datacenters.

História Pode- se afirmar que o artigo “Time Sharing Processing in Large Fast Computers”, por Chrisopher Strachey, cientista da computação, na Conferência Internacional de Processamento de Informação realizada em Nova Iorque em 1959, deu início a ideia de virtualização, o qual tratou do uso de multiprocessamento em tempo compartilhado e estabeleceu um novo conceito de utilização de máquinas de grande porte.

Posteriormente a IBM introduziu o multiprocessamento nos mainframes, o que permitiu que várias unidades de processamento trabalhassem como uma só, antecipando o conceito de virtualização. Seguindo, a IBM lança então seu Sistema Operacional VM (Virtual Machine), baseado no conceito de hipervisor, que é a camada que permite que vários sistemas operacionais rodem de forma isolada em um único hardware.

Até o final da década de 1990 existia uma dificuldade tecnológica para a implementação da virtualização em servidores x86.

Em 1998 a criação da VMware é tida como marco dessa nova era, criada por Diana Greene e Mendel Rosenblum, que desenvolveram o primeiro hipervisor que permitia a virtualização de servidores em plataformas baixas x86. Já existia a empresa Connectix que desde 1996 tratava a virtualização em ambientes Mac, a qual foi adquirida pela Microsoft em 2003 vindo a lançar em 2004 seu primeiro produto com foco em virtualização o “Microsoft Virtual Server 2005”. A empresa VMware foi adquirida pela ECM em 2004.

Conceito 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 software e pode ser disponibilizado onde for mais conveniente. Uma aplicação deve ser executada em um sistema operacional em um determinado software. Com virtualização de aplicação ou apresentação, estas aplicações podem rodar em um servidor ou ambiente centralizado e ser deportada para outros sistemas operacionais e hardwares.

Workload e Throughput Workload ou carga de trabalho constitui-se dos dados a serem processados e das instruções a serem executadas sobre esses dados e define a qualidade de serviço percebida pelo usuário na ponta. Logicamente, a workload varia de acordo com a aplicação a ser processada. Assim ela é definida pela demanda da aplicação e SGBD, combinando as diversas solicitações tais como transações online, bath Jobs, consultas analíticas e comandos dirigidos a aplicação.

O Throughput define a capacidade de hardware/software para processar os dados e é composto por velocidade I/O, velocidade de CPU, capacidade de paralelismo e eficiência do SO.

Desafios da 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 ambientes de data centers, e cuja solução pode ser encontrada na virtualização, podemos destacar:

Servidores subutilizados: por meio da virtualização, pode-se fazer um uso mais eficiente do hardware disponível. Adotando a estratégia organizacional conhecida como consolidação de servidores, que advoga o uso de máquinas virtuais para abrigar os diversos servidores (de nomes, de arquivos, de e-mail, de Web) de um determinado domínio;. Gerenciamento e segurança complexa dos servidores: também por meio da consolidação de servidores, a manutenção de um parque computacional torna-se mais simples em função da concentração/centralização de sistemas em uma quantidade menor de dispositivos físicos. A virtualização também tem como uma de suas principais características o isolamento: permite isolar entre si subsistemas independentes (exemplos: DNS, e-mail, web, aplicação, banco de dados, arquivos, impressão) que executam sobre o mesmo hardware; Problemas de compatibilidade entre interfaces: a presença de interfaces rígidas entre hardware, sistemas operacionais, bibliotecas e aplicações diminui a compatibilidade entre os componentes, por exemplo, não é possível executar diretamente aplicações Microsoft Windows em um sistema operacional Linux, ou também um sistema operacional Microsoft Windows sobre um hardware Sun SPARC. A virtualização provê uma camada abstrata construída em software para permitir a interoperabilidade entre componentes antes incompatíveis. Data centers atingiram a capacidade máxima.

Soluções de virtualização 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. Um programa de computador em execução em um sistema operacional comum pode ver todos os recursos (dispositivos conectados, arquivos e pastas, compartilhamentos de rede, CPU, capacidade de hardware quantificável) desse computador. No entanto, programas em execução dentro de um contêiner só podem ver o conteúdo e os dispositivos do contêiner atribuídos ao contêiner; Virtualização de desktop: consiste na execução de múltiplos sistemas operacionais em uma única estação de trabalho, 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; Virtualização de dados: é uma abordagem para unificar dados de várias fontes em uma única camada para que aplicativos, ferramentas de relatórios e usuários finais possam acessar os dados sem precisar de detalhes sobre a origem original, a localização e as estruturas de dados; Virtualização de programa: Virtualização de aplicativos e virtualização de espaço de trabalho: isolando aplicativos individuais do sistema operacional subjacente e de outros aplicativos; intimamente associado com o conceito de aplicações portáteis; Virtualização de serviços: emulando o comportamento de componentes específicos em aplicativos heterogêneos baseados em componentes, como aplicativos orientados por API, aplicativos baseados em nuvem e arquiteturas orientadas a serviços; Virtualização de memória: agregando recursos de memória RAM de sistemas em rede em um único conjunto de memórias; Memória virtual: dando a um aplicativo a impressão de que ele possui uma memória de trabalho contígua, isolando-o da implementação da memória física subjacente;

Virtualização de armazenamento: o processo de abstrair completamente o armazenamento lógico do armazenamento físico;

Sistema de arquivos distribuídos: qualquer sistema de arquivos que permita o acesso a arquivos de vários hosts que compartilham através de uma rede de computadores;

Sistema de arquivos virtual: uma camada de abstração sobre um sistema de arquivos mais concreto, permitindo que aplicativos clientes acessem tipos diferentes de sistemas de arquivos concretos de maneira uniforme;

Hypervisor de armazenamento: o software que gerencia a virtualização de armazenamento e combina recursos de armazenamento físico em um ou mais conjuntos flexíveis de armazenamento lógico;"Enterprise Systems Group White paper, Page 5" (PDF). Enterprise Strategy Group White Paper written and published on August 20, 2011 by Mark Peters. Archived from the original (PDF) on March 30, 2012. Retrieved July 18, 2013.

Disco virtual: um programa de computador que emula uma unidade de disco, como uma unidade de disco rígido ou unidade de disco ótico (consulte a comparação do software de imagem de disco);

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 (virtual desktop infrastructure);

Virtualização de rede: criação de uma rede virtualizada endereçando o espaço dentro ou através de sub-redes de rede;

Rede privada virtual (VPN): um protocolo de rede que substitui o fio real ou outra mídia física em uma rede com uma camada abstrata, permitindo que uma rede seja criada pela Internet;

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.

As instruções de virtualização são processadas em variáveis locais utilizando um modelo principal modelo de computação, usualmente cada stack machine, register machine, ou Random access machine são chamadas de máquina memória. A utilização destas três técnicas é motivada por técnicas de otimização de máquinas virtuais e máquinas físicas, como a facilidade utilização do interpretador, compilação e verificação para a segurança.

O gerenciamento de memória nestes sistemas portáveis de virtualização inicia-se num nível superior de abstração que num caso típico de máquina física. Alguns programas de virtualização, como a popular JVM, gerem os endereços de memória numa determinada maneira, que requerem um seguro gerenciamento automático da memória permitindo à maquina virtual manter registos de referências indicativas, e não permitir que o código fonte possa construir novas referências indicativas na memória. Outros tipos de software de virtualização como os LLVM, são mais parecidos como uma computador tradicional, permitindo o uso e manipulação de indicadores de memória. A CIL oferece uma solução híbrida entre as soluções apresentadas, oferecendo os dois tipos de controle da memória (como o JVM, que permite gestão de memória automática), e também um modo "inseguro" que permite manipulação de indicadores num modo que pode violar os constrangimento dos tipo e suas permissões.