VirtualBox running Red Hat Guests

Recently I was using a Red Hat guest on my notebook’s VirtualBox, but with the VM started I noticed that one of my 2 core processor was lost, getting 60% to 100% of CPU load with the guest system totally idle. While testing the same VirtualBox with a Debian and an ArchLinux guest (simultaneously), the processor usage didn’t beat 10% of processor use with the guests idle.

Looking for some information on VirtualBox forums and on CentOS bugtracker, I found some information that shows up how to solve this problem in a very simple way, just changing the default divider kernel parameter to 10 (adjusting the system clock rate to 100Hz) directly at boot time.

Note: Since Red Hat Enterprise Linux 5.1 / CentOS 5.1 the default system clock rate that is set to 1000Hz and can be changed at boot time, with no need to recompile you kernel, remember that Xen guests don’t need the system clock rate to be modified because they already have a 250Hz kernel.

For those that are not familiar changing kernel parameters, just edit your grub menu.lst file (usually /boot/grub/menu.lst), add divider=10 in the end of the kernel line and reboot your system.

Ps. Sorry for the long time without new posts… Now I’m back!

VirtualBox Advanced Networking

Normalmente utilizamos o VirtualBox para acessar nossos sistemas virtualizados utilizando as interfaces de rede configuradas para fazer NAT (Network Address Transalation) que além de ser a forma mais simples e rápida atende a boa parte de nossas necessidades, porém quando necessitamos de acesso externo através da rede para nossa virtual machine (isso normalmente acontece quando utilizamos servidores virtuais) é necessária a configuração de uma nova interface de rede virtual (Host Interface Network) utilizando configurações em bridge para acessar diretamente nossa interface “real”.

Existem diversos tutoriais disponíveis na internet, porém a grande maioria deles são referentes a configuração específica em Debian e Ubuntu, vou descrever abaixo alguns procedimentos genéricos para auxiliar na configuração em plataforma Linux em geral:

Primeiramente é necessário ter as ferramentas pertencentes ao pacote bridge-utils (disponível em grande parte das distribuições) instalado em seu sistema.

Para que seja possível a criação de interfaces virtuais é necessário ter o módulo “TUN” carregado no sistema e com as permissões de gravação e leitura liberadas para o usuário que roda o VirtualBox. Utilizando como exemplo:

# modprobe tun
# chmod 666 /dev/net/tun

Dica: Para quem utiliza ArchLinux ou outros sistemas com a configuração de hardware baseada em UDev, edite o arquivo /etc/udev/rules.d/60-vboxdrv.rules e adicione as seguintes linhas:

KERNEL=="vboxdrv", NAME="vboxdrv", OWNER="root",\ GROUP="vboxusers", MODE="0660"
KERNEL=="tun", OWNER="root", GROUP="vboxusers", MODE="0660"

Lembrando que o módulo vboxdrv deve estar carregado e o grupo vboxusers deve estar disponível…

Crie uma nova bridge com:

# brctl addbr br0

No próximo passo será necessário retirar quaisquer configurações de rede presentes na interface e habilitar o modo “promiscuous” para aceitar frames ethernet vindos de diferentes endereços MAC. Exemplo:

# ifconfig eth0 0.0.0.0 promisc

Lembrando que a conectividade de rede é finalizada neste ponto!

# brctl addif br0 eth0

Agora com a interface atribuída restaure suas configurações de rede diretamente na br0 (com ifconfig mesmo), e caso esteja utilizando dhcp é necessário entrar com o hostname na configuração:

# dhcpcd -t 30 -h hostnamedamaquina br0

Para a criação de novas interfaces (em nosso caso “tap0″) utilize:

# tunctl -b -t tap0 -u username
# ip link set up dev tap0
# brctl addif br0 tap0
# ifconfig tap0 0.0.0.0 promisc

Lembrando que o username é referente ao usuário utilizado na execução do VirtualBox e tap0 deve ser atribuido como identificação da interface de sua virtual machine.

Extra Info:

Para automatizar o processo de criação e remoção de interfaces é possível criar 2 scripts, onde um deles é responsável pela criação e o outro pela remoção. Exemplo:

Script vbox_start:

#!/bin/sh
sudo /sbin/ifconfig $2 up
sudo /usr/sbin/brctl addif br0 $2

Script vbox_stop:

#!/bin/sh
sudo /usr/sbin/brctl delif br0 $2

Após a criação entre com as permissões apropriadas para a execução:

# chmod u+x vbox_start vbox_stop

Nas configurações de rede de sua máquina virtual selecione “Host Interface”, entre com os scripts em seus respectivos lugares e entre com o nome da interface (em nosso caso tap0).

Virtualização de Sistemas

Para quem ainda não conhece, virtualização é uma técnica que vem sendo muito difundida ultimamente que em uma definição geral é o processo de executar diversos sistemas operacionais simultaneamente em um único equipamento.

Uma máquina virtual é um ambiente operacional completo e independente, sendo assim, seu servidor pode hospedar vários sistemas operacionais distintos, sejam eles iguais, similares ou completamente diferentes e independentes uns dos outros.

Cada máquina virtual tem seu próprio conjunto de hardware virtual (Memória, Processador, etc…) no qual o sistema operacional estará sendo executado contando com drivers consistentes e normalizados para garantir a estabilidade do sistema.

É necessária a utilização de um sistema de virtualização no sistema hospedeiro para que estas atribuições e gerenciamento de harware virtual sejam possíveis… estes sistemas são bem distintos e têm suas particularidades que podem ser de grande utilidade em sua estrutura operacional, antes de selecionar um sistema é recomendado conhecer todos os recursos que cada um deles pode oferecer….

Os sistemas de virtualização mais conhecidos são:

Para quem tem interesse em começar a trabalhar com sistemas virtualizados em plataforma x86 recomendo a utilização do VirtualBox por ser opensource, apresentar ótimos recursos e por sua facilidade de implementação…

É muito parecido com o VMware, porém sua versão free é bem mais completa, deixando na versão paga somente recursos específicos… O download está disponível no site oficial do projeto e deixei um tutorial de instalação e utilização no fórum