Fysieke schijf benaderen vanuit VirtualBox

harddrive

Wanneer je VirtualBox gebruikt, heb je in de meeste gevallen virtuele harddisks aangemaakt. Toch kan het in sommig gevallen ook wenselijk zijn om een fysieke harddisk vanuit je virtuele machine te benaderen. Bijvoorbeeld wanneer je je NAS virtueel draait of wanneer je een harddisk vanuit een andere machine hebt gehaald.

VirtualBox biedt de mogelijkheid om een virtuele harddisk toe te voegen die rechtstreeks communiceert met je fysieke harddisk. Deze methode wordt ook wel raw hard disk access genoemd.

Overzicht van aangesloten harddisks

Om te beginnen hebben we een overzicht nodig van de harddisks die aangesloten zijn. Dit doe je als volgt:

Windows

Open Disk ManagementJe ziet nu de disk nummers aan de linkerzijde. Straks ga je deze gebruiken als PhysicalDrive0, PhysicalDrive1, enz.

Linux

Voer het volgende commando uit:

fdisk -l

MacOS

Voer het volgende commando uit:

diskutil list

Open nu de command line interface van je besturingssysteem. Wanneer je Windows gebruikt, dien je eerst naar de directory te gaan waar VirtualBox geïnstalleerd is:  cd C:\Program Files\Oracle\VirtualBox

De virtuele drive aanmaken

Windows

VBoxManage internalcommands createrawvmdk -filename "C:\Users\<user_name>\VirtualBox VMs\<VM_folder_name>\<file_name>.vmdk" -rawdisk \\.\PhysicalDrive#

Vervang de # door het nummer van de harddisk die je wilt gebruiken.

Linux

VBoxManage internalcommands createrawvmdk -filename "</path/to/file>.vmdk" -rawdisk /dev/sdx

Vervang de x door de drive die je wilt gebruiken, dus bijvoorbeeld /dev/sdb of /dev/sdc.

MacOS

VBoxManage internalcommands createrawvmdk -filename "</path/to/file>.vmdk" -rawdisk /dev/disk#

Vervang de # door het nummer van de harddisk die je wilt gebruiken, dus bijvoorbeeld /dev/disk1 of /dev/disk2.

Het aangemaakte VMDK-bestand zal erg klein zijn omdat het enkel maar je fysieke harddisk verwijst. Nu kun je deze VMDK koppelen aan je virtuele machine. Om dit te doen open je de instellingen van je VM, klik op Instellingen, vervolgens op Opslag en voeg een harddisk toe. Kies nu de optie Kies een bestaande schijf en selecteer de VMDK die je zojuist hebt aangemaakt.

VirtualBox Headless – Een VM aanmaken

PhpVirtualBox

In mijn vorige artikel heb ik je laten zien hoe je een VirtualBox Headless server met web-interface opzet. Nu ga ik je laten zien hoe je via deze webinterface een nieuwe Virtuele Machine (VM) aanmaakt en installeert.

In dit voorbeeld ga ik de machine installeren met Debian 9, maar je kunt natuurlijk ook kiezen voor een ander besturingssysteem, zoals Windows, MacOS of een andere Linux distributie.



Virtualisatie met headless VirtualBox

Regelmatig heb ik een nieuwe server nodig voor een nieuw projectje of een experiment. Vroeger betekende dit dat er weer nieuwe hardware bijgeplaatst werd, maar tegenwoordig maken we gebruik van virtualisatie. Simpel gezegd is dit het draaien van een virtuele computer op je PC. Zo kun je bijvoorbeeld een Windows-computer binnen je Mac-besturingssysteem laten draaien. Of een Linux-computer binnen je Windows-besturingssysteem.

Hiervoor zijn veel verschillende pakketten beschikbaar. Voor desktopcomputers zijn bijvoorbeeld VMware, Parallels en VirtualBox beschikbaar. Ik heb gekozen voor VirtualBox omdat deze gratis te verkrijgen is voor Windows, Linux en de Mac.

Het aardige van VirtualBox is dat deze ook “headless” te draaien is. Dat betekent dat je het pakket gebruikt zonder grafische gebruikersinterface. Reuze handig voor bijvoorbeeld server waar je toch nooit een scherm op aansluit en die je alleen via het netwerk benadert, zoals een web- of mailserver. Zo heb ik een server gebouwd waarin diverse virtuele servers draaien. Omdat de virtuele server hun geheugen niet met elkaar kunnen delen, is het verstandig om de machine waarop de virtuele servers gaan draaien (host) te voorzien van voldoende RAM-geheugen.



De virtuele servers worden voorzien van virtuele harddisks. Dit zijn feitelijk bestanden die op de harddisk van de host staan. Omdat meerdere virtuele servers tegelijkertijd lezen en schrijven naar hun virtuele harddisks, is het verstandig om de host te voorzien van een snelle harddisk of, nog beter, een SSD. Voor het besturingssysteem van de host heb ik gekozen voor Debian, een Linux-distributie. Deze is gratis te downloaden.

Nadat je Debian op je host-machine hebt geïnstalleerd, kun je VirtualBox als volgt installeren:

  • Om te beginnen heb je root-toegang. Wanneer je niet ingelogd bent als root, toets dan het commando su <enter> om te switchen naar de root-gebruiker.
  • Toets nu het volgende commando:
    nano /etc/apt/sources.list.d/virtualbox.list
  • De nano tekstverwerker wordt nu geopend. Voer de volgende regel in:
    deb http://download.virtualbox.org/virtualbox/debian stretch contrib
  • Sla nu het bestand op met CTRL+O en sluit vervolgens de tekstverwerker af met CTRL+X.
  • We hebben nu de Oracle repository toegevoegd aan het systeem. Om software te downloaden uit deze repository, moeten we ook de bijbehorende GPG-sleutel downloaden en toevoegen aan ons systeem. Dit doen we met het volgende commando:
    wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | apt-key add -

    De GPG-sleutel wordt gebruikt om de integriteit van te verifiëren van pakketten die we downloaden uit de toegevoegde repository.

  • Nu gaan we de lokale index van de APT package manager bijwerken zodat de beschikbare pakketten in de zojuist toegevoegde repository worden opgenomen:
    apt-get update
  • Vervolgens gaan we via de APT package manager VirtualBox installeren:
    apt-get install virtualbox-5.1

VirtualBox is nu geïnstalleerd. Vanaf de command line kun je nu virtuele machines machines aanmaken en opstarten. Om te leren hoe dit moet, raad ik je aan om de handleiding te lezen. Heb je daar geen zin in of tijd voor, dan kun je ook een user-interface installeren, waarmee je via een webpagina eenvoudige machines kunt aanmaken, instellen en beheren:

Deze user-interface heet PhpVirtualbox. Wanneer je deze installeert, kun je VirtualBox via een webpagina beheren. Je installeert hem als volgt:

  • Om te beginnen heb je een webserver met PHP nodig. Deze installeer je als volgt:
    apt-get install apache2 php5
  • Vervolgens installeren we unzip, omdat we PhpVirtualbox downloaden als ZIP-bestand en dus moeten uitpakken:
    apt-get install unzip
  • Nu gaan we naar de web-root (de directory waarin de webserver zijn bestand leest):
    cd /var/www/html
  • Nu downloaden we PhpVirtualbox:
    wget http://sourceforge.net/projects/phpvirtualbox/files/latest/download -O phpvirtualbox.zip
  • Vervolgens pakken we het gedownloade bestand uit:
    unzip phpvirtualbox.zip
  • De map die vervolgens uit het ZIP-bestand wordt, hernoemen we zodat ie gemakkelijker te benaderen is:
    mv phpvirtualbox-5.0-3/ phpvirtualbox
  • Nu gaan we de meegeleverde configuratie kopiëren:
    cd /var/www/html/phpvirtualbox/
    cp config.php-example config.php
  • Vervolgens openen we het configuratiebestand in nano:
    nano /var/www/html/phpvirtualbox/config.php
  • Wijzig de username en password in het configuratiebestand:
    var $username = 'vbox';
    var $password = 'P@55w0rd';

    In dit voorbeeld gebruiken we P@55w0rd als wachtwoord, maar natuurlijk kun je hier zelf een wachtwoord verzinnen.

  • Sla nu het bestand op met CTRL+X, en sluiten de tekstverwerker af met CTRL+X.
  • Nu wijzigen we het wachtwoord van de vbox gebruiker:
    passwd vbox
  • Tot slot zoeken we nog even het IP-adres van onze host-machine op:
    Toets het volgende commando:

    ifconfig

    Je krijgt nu het onderstaande overzicht te zien:

    eth0      Link encap:Ethernet  HWaddr 04:01:37:2f:c8:01  
              inet addr:188.226.175.14  Bcast:188.226.175.255  Mask:255.255.255.0
              inet6 addr: fe80::601:37ff:fe2f:c801/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:34653091 errors:0 dropped:0 overruns:0 frame:0
              TX packets:37594638 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:9932275540 (9.2 GiB)  TX bytes:15550676802 (14.4 GiB)
    
    lo        Link encap:Local Loopback  
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING  MTU:16436  Metric:1
              RX packets:6093088 errors:0 dropped:0 overruns:0 frame:0
              TX packets:6093088 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0 
              RX bytes:9777020882 (9.1 GiB)  TX bytes:9777020882 (9.1 GiB)

    In het bovenstaande voorbeeld zien we dat het IP-adres van onze netwerkkaart (eth0) is: 188.226.175.14

  • Open nu een browser op een computer in je netwerk en toets dit IP-adres in je browser, gevolgd door /phpvirtualbox, dus:
    ip.adres.vanje.hostcomputer/phpvirtualbox
  • Je wordt nu gevraagd om in te loggen. Standaard gebruikersnaam is admin en het standaard wachtwoord is ook admin.
    Het is mogelijk dat je een foutmelding krijgt over een verkeerde versie. Deze kun je wegklikken en negeren. Ik heb e.e.a. getest en geverifieerd dat het gewoon werkt.

Zodra je in bent gelogd, kun je via deze pagina nieuwe virtuele machines aanmaken en beheren. Hierover binnenkort meer…