Introducción á Virtualización
A virtualización é moi diversa. Exemplos de virtualización, son a memoria virtual (na que se mapea no espacio de direccións de memoria RAM espazo de almacenamento situado fora de ella de xeito que o sistema a recoñece como espacio RAM normal), as VPN (Virtual Private Network) na que se emula unha rede local entre equipos situados en redes distintas, ou software que emula determinado hardware no que se poden executar aplicacións nativas como os emuladores de consolas. En xeral, podemos distinguir entre varios tipos de virtualización:
- Virtualización Hardware
Tamén coñecido como virtualización de plataformas, fai referencia á creación de máquinas virtuais que actúan como ordenadores normais co seu propio sistema operativo. O software que se executa nesas máquinas virtuais non accede directamente aos recursos hardware, se non que o fai a través dun software chamado hypervisor ou virtual machine monitor, que é o que vai a determiñar o modo no que o sistema virtualizado actúa co hardware real da máquina.
A máquina real recibe o nome de Host, mentras que a máquina virtualizada denomínase Guest.
Podemos distinguir entre 3 tipos principais de virtualización:
- Full Virtualization ou Virtualización Hardware (HV) - Se virtualiza prácticamente todo o hardware da máquina
- Partial Virtualization - Non é necesario virtualizar certos elementos hardware
- Paravirtualization (PV) - Non se virtualiza o hardware, pero é posible executar aplicacións e sistemas operativos en entornos completamente aillados, como si dispuxeran dunha máquina exclusiva para eles.
Tanto a virtualización parcial, como a paravirtualización precisan de modificacións no sistema emulado (guest) para o seu funcinonamento, mentras que na virtualización completa non. Sen embargo, o rendimento é maior canta menos virtualización se utilice. A virtualización parcial consegue este obxectivo mediante na instalación no sistema guest de drivers paravirtualizados, sobre todo de disco, rede e memoria.
- Virtualización de Desktop (VDI)
- Consiste en separar o escritorio sobre o que traballa o usuario do sistema físico. O usuario interactúa co seu sistema utilizando outro ordenador mediante unha conexión de rede, como unha LAN ou a través de Internet. O sistema Host será normalmente un servidor capaz de almacenar e executar múltiples máquinas virtuais ao mesmo tempo para distintos usuarios, e o usuario mediante a conexión de rede obten acceso a unha de elas.
- [[wikipedia
- Operating_system-level_virtualization|Virtualizacion a nivel de Sistema Operativo]: Consiste en que baixo un kernel común se divide o sistema en varias partes que se comportarán como máquinas individuais. O sistema operativo proporciona entornos aillados baixo os que executarán as distintas aplicacións de usuario. Exemplos son Solaris Zones, OpenVZ/Virtuozzo ou LXC.
Podemos falar de virtualización a nivel de sistema operativo (varios sistemas funcionando baixo ún un único sistema operativo, de xeito aillado), virtualización de aplicacións (que facilita a portabilidade das aplicacións encapsulándoas de xeito que proporcionen a maior independencia do sistama posible, como as aplicacións de máquina virtual como JAVA) ou virtualización de servicios (implementación de servicios “falsos” de proba para o test de programas en desenvolvemento). Memoria Os servizos de virtualización de memoria permiten que o sistema acceda a un rango de direccións de memoria que non se corresponden coa realmente instalada, este rango é mapeado logo por un xestor de memoria ás direccións físicas. Deste xeito se pode por exemplo, utilizar máis RAM da dispoñible simulándoa en outro tipo de dispositivos, ou facilitar que varios programas accedan as mesmas direccións de memoria sen interferir, o que permite a multitarefa real. Almacenamento Se trata de separar o almacenamento lóxico dos datos do seu almacenamento físico, de xeito que se poda acceder á información sen preocuparse dos dispositivos de almacenamento físicos nin da súa localización. Exemplos de este tipo de virtualización son o manexo lóxico de volumes (LVM en Linux, LDM ou discos dinámicos en Windows), sistemas RAID e JBOD, ou sistemas de rede como iSCSI ou Fiber Channel. Virtualización de Datos Trátase de facilitar o acceso a fontes de datos diversas a través dunha única capa que nos permite non ter en conta o seu sistema de almacenamento real, como ODBC ou JDBC. Virtualización de Redes A virtualización de redes consiste na combinacíón de recursos de rede hardware e software nunha única entidade basada en software chamada rede virtual. A rede virtual pode ser externa, combinando múltples redes ou partes de redes nunha unidade virtual, ou interna, proporcionando funcionalidade de rede a contenedores software nun único sistema. Ferramentas de Virtualización Existen distintos sistemas que implementan Full Virtualization dispoñibles. Os máis importantes son Xen, VMWare, VirtualBox, Qemu (kvm) e Microsoft Hyper-V, sendo VMWare, Qemu e VirtualBox multiplataforma. A maior parte de estes sistemas implementan certo grado de paravirtualización mediante drivers especiais que permiten un acceso máis directo ao hardware real da máquina. Entre as características principais de estes sistemas de máquinas virtuais atópanse o snapshotting (crear imáxes do estado da máquina virtual nun instante determiñado, permitindo parar e reanudar a mesma) e a migración que permite mover unha máquina virtual dun host a outro, prácticamente sen interrupción da mesma. Xen Xen é un sistema principalmente de paravirtualización, na que o sistema operativo accede directamente ao hardware do sistema a través dunha API facilitada polo sistema. Esto ofrece una velocidade de execución prácticamente nativa, pero a cambio, o sistema guest debe ser modificado para soportalo, o que na práctica impide a virtualización de sistemas propietarios como Windows (aínda que existen versións modificadas de proba completamente funcionais, a súa distribución non está permitida). Para sistemas como Windows, Xen ofrece tamén Full Virtualization a través das extensións de virtualización da CPU. Un guest Xen pode funcionar polo tanto en modo paravirtualizado (coas modificacións pertinentes) e en Full-Virtualization. Os modernos Kernels Linux incorporan as modificacións necesarias para funcionar como guests PV, que ofrecen un rendimento óptimo. Xen é un dos sistemas de virtualización máis extendido e a competencia máis directa con VMWare, soportando infraestructuras complexas como os servizos ofrecidos por Amazon EC2, una das empresas máis importantes de servizos na nube. Xen foi adquirido pola empresa Citrix, aínda que debido a súa licenza atópase dispoñible en múltiples sistemas. Todos os kernels Linux actuais están preparados para funcionar en Xen en modo de paravirtualización. VMWare VMWare é a empresa líder en virtualización de sistemas. Dispón de numerosos productos, gratuitos e de pago, que proporcionan sistemas de virtualización e paravirtualización permitindo a implantación e xestión de servidores virtualizados (virtualización de infraestructuras facilitando servidores e escritorios) e servizos na nube. Os seus productos principais son: VMWare WorkStation/Fusion/Player. Son sistemas que permiten a execución de máquinas virtuais baixo o sistema operativo anfitrión. VMWare ESXi (VMware vSphere Hypervisor), e un sistema que sustitúe ao sistema operativo proporcionando un entorno para a execución de máquinas virtuais. Estas máquinas se xestionan a través da rede mediante outros productos como VMWare vSphere e VMWare vCenter. Esta aproximación é similar a utilizada por Xen. VirtualBox VirtualBox proporciona virtualización multiplataforma (funcionando baixo Windows e Linux) de xeito similar ao ofrecido por VMware Workstation/Player. Proporciona ademáis certograo de paravirtualización instalando os virtualbox guest addons, o que porporciona unha maior velocidade e o acceso a máis características do hardware real. KVM O KVM (Kernel Virtual Machine) e o heredeiro do qemu, un sistema de máquina virtual multiplataforma. KVM é un dos pilares sobre os que se pretende asentar a nova infraestructura virtual baseada en Linux, en sustitución de Xen, que era a alternativa máis utilizada, xa que é a adoptada por RedHat na súa plataforma de virtualizacion Red Hat Virtualization Server. KVM proporciona certo grado de virtualización gracias aos seus drivers paravirtualizados VirtIO para rede, almacenamento e memoria RAM. De xeito similar ao ofrecido por plataformas como Citrix XenServer, ou VMWare vServer, Red Hat Virtualization Server proporciona un entorno sobre o que se xestionan as distintas máquinas e servidores virtuais. En xeral, en Linux se dispon de xeito estándar dunha librería de xestión de virtualización chamada libvirt que ofrece unha API que permite xestionar múltiples máquinas virtuais nunha rede, configurando redes virtuais, espazos de almacenamento, migración de máquinas entre hosts... etc. Sobre esta librería se construen numerosos sistemas de virtualización como OpenNebula, ou o mesmo RHVS. libvirt permite xestionar máquinas virtuais de diversos hypervisors, como Xen, VirtualBox, VMWare, LXC ou KVM. Temén existen entornos simples de xestión como virt-manager. LXC LinuX Containers e un sistema de virtualización a nivel de sistema operativo que permite a execución de múltiples entornos baixo un kernel común dun xeito completamente aillado, de xeito que se poden executar servizos de modo independente. A velocidade de execución é idéntica ao do host, sen existir retrasos debidos a algún tipo de emulación hardware (que non existe). Outra ventaxa é a posibilidade de executar entornos LXC dentro de máquinas virtuais en Full-Virtualization ao non precisar de acceso as características de virtualización das CPU. Todos os sistemas descritos con anterioridade poden enfocarse á creación de servidores virtuais e de Desktops (VDI), especialmente VMWare, Xen e LXC e a través de libvirt, KVM e VirtualBox. Para elo, se crea o almacenamento, as máquinas virtuais e a infraestructura de rede virtual, e se lanzan as distintas máquinas sen entorno gráfico, utilizando posteriormente sistemas de acceso remoto como RDP (Terminal Server), VNC, NX. X2Go, SPICE.. etc para obter acceso ao desktop de xeito remoto.