Antons blogg om elektronik och Linux

5 september, 2010

Komma åt ext4-partitioner i Windows med hjälp av Virtualbox

Filed under: Linux,Terminal — Anton @ 09:30
Tags: , , ,

Det har blivit dags för ny lagringshårddisk igen och jag står återigen inför det svåra valet om vilket filsystem jag ska välja.  Visserligen kör jag nästan enbart Ubuntu nuförtiden men de få gånger jag använder Windows XP behöver jag komma åt hårddisken även därifrån. NTFS hade varit det enklaste men det stödjer tyvärr inte POSIX-rättigheter och dessutom vill jag inte behöva defragmentera hårddisken hela tiden. Så det var uteslutet. Det finns ett par Windows-drivrutiner för ext2 (som även fungerar till ext3 eftersom det är bakåtkompatibelt), men det är kanske inte den optimala lösningen heller. Det finns dock ytterligare en lösning (förutom att använda en lagringsserver som kör Linux ständigt) som jag läst om på denna bloggen, och det är att köra någon minimal Linux-distribution i Windows genom Virtualbox. I den monterar man sin hårddisk med hjälp av ”raw disk access”, därefter delas den ut till Windows-värden med VirtualBox delade mappar eller Samba. Det tänker jag försöka täcka i denna guide.

  • Börja med att läsa igenom denna guiden i VirtualBox-manualen, som är den jag utgår från.
  • Installera Windows-versionen av Oracles VirtualBox, och installera sedan valfri Linuxdistribution i en ny gäst i VirtualBox. Jag använde Ubuntu 10.04 Minimal CD. Var noga med att ställa in nätverket till bryggat med ditt nätverkskort och inte NAT som är standard. Annars kommer värden och gästen inte kunna kommunicera med varandra.
  • Ta reda på vad Windows kallar hårddisken med Linux-filsystemet i Diskhantering (högerklicka på Den här datorn -> Hantera). Min syns i följande skärmdump som Disk 1. Den är formaterad med EXT4 och visas därför som ”okänd”. Rime är den gamla lagringsdisken formaterad som ext2 och monterad med IFS Driver.

Skapa en ny VMDK-fil från kommandotolken med ett kommando liknande detta:

C:\Documents and Settings\Anton\.VirtualBox\HardDisks>\Program\Oracle\VirtualBox\VBoxManage.exe internalcommands createrawvmdk -filename .\Everdunes.vmdk -rawdisk \\.\PhysicalDrive1
Oracle VM VirtualBox Command Line Management Interface Version 3.2.8
(C) 2005-2010 Oracle Corporation
All rights reserved.

RAW host disk access VMDK file .\Everdunes.vmdk created successfully.

Kalla den vad du vill, jag brukar döpa mina hårddiskar efter olika Ages i Myst-spelen, i detta fallet Everdunes. Var mycket noga med att välja rätt PhysicalDrive.

  • Lägg till hårddisken i VirtualBox hanterare för virtuella media. Notering: 1 GB räckte inte till root-filsystemet på en Ubuntu-server. 2 GB borde dock fungera (min använder efter installation 1,3 GB).

  • Lägg till din hårddisk i /etc/fstab i den virtuella maskinen. Min rad ser ut så här:
# Everdunes on /dev/sdb1
UUID=blablabla    /media/Everdunes    ext4    defaults    0    0

UUID får du reda på med kommandot blkid.

  • Installera samba. I Ubuntu/Debian görs det enklast med kommandot
sudo aptitude install samba
  • Lägg till en utdelning i /etc/samba/smb.conf. För mig ser det ut som följande:
[Everdunes]
read only = no
guest account = anton
guest ok = yes
write list = @anton

Jag är inte säker på att det är helt optimala inställningar men det fungerar någorlunda. Bättre förslag är välkomna i kommentarerna 🙂

  • Starta om samba-servern:
sudo service smbd restart && sudo service nmbd restart
  • Vänta en minut på att saker ska börja fungera, sedan kan du komma åt utdelningen från värddatorn eller annan dator i nätverket:

Resultat

Jag gjorde några tester för att kolla prestandan. De bestod i att jag kopierade en 800 MB stor fil fram och tillbaka och mätte hur lång tid det tog, för att sedan räkna ut överföringshastigheten.

Kopiera gäst -> värd (lästest): 14 MB/s
Kopiera värd -> gäst (skrivtest: 12,7 MB/s
Kopiera gäst -> nätverk (lästest): 7,5 MB/s
Kopiera nätverk -> gäst (skrivtest): 5,7 MB/s

Värden kör Windows XP Home, gästen är Ubuntu-servern. Nätverk är en annan dator som kör Windows XP, kopplad med nätverkskabel genom en 100 Mbps-router (ger maximal överföringshastighet på ungefär 12 MB/s). Vid samtliga tester gick processoranvändningen på värden upp till max. Vid det lokala skrivtestet fick filerna ägaren anton i gruppen anton, med rättigheterna rwx-r–r–. Vid skrivtestet över nätverk fick de dock ägaren nobody i gruppen nogroup, med samma filrättigheter. Det gör att de inte gick att ta bort efter att de kopierats, men det får bli ett senare problem eftersom det är enkelt att bara öppna den virtuella maskinen och köra ett sudo chown-kommando för att fixa det.

Som avslutning kan jag säga att det här är en ”lösning” som jag inte rekommenderar till särskilt många. Kör du Windows och Linux ungefär lika mycket är NTFS fortfarande det bästa alternativet, då det har stöds så bra i både Linux och Windows. För oss nördar som inte vill använda NTFS av en eller annan anledning fungerar detta tillräckligt bra för att vara användbart, även om prestandan är mycket sämre.

4 kommentarer »

  1. Testat om det blir någon skillnad om du använder ”Paravirtualized network adapter (virtio-net)” i din Virtualbox-gäst?

    ”The ”Paravirtualized network adapter (virtio-net)” is special. If you select this, then VirtualBox does not virtualize common networking hardware (that is supported by common guest operating systems out of the box). Instead, VirtualBox then expects a special software interface for virtualized environments to be provided by the guest, thus avoiding the complexity of emulating networking hardware and improving network performance. Starting with version 3.1, VirtualBox provides support for the industry-standard ”virtio” networking drivers, which are part of the open-source KVM project.”

    Kommentar av Ronny — 25 november, 2010 @ 09:51

  2. Låter spännande, jag ska kika på det när jag får tillfälle. Med tanke på hur lite jag använder Windows duger dock min nuvarande lösning även om det är lite segt.

    Kommentar av Anton — 26 november, 2010 @ 22:37

  3. Tja, annars är det bara en enda simpel inställning att ändra i virtualbox-setupen för den virtuella maskinen. Linuxgästen har inyggda drivers i kärnan för virtio nätverksadapter så man behöver troligen inte in och pilla något i gästoperativsystemet. Vet inte om det gör någon skillnad i praktiken men kan vara intressant att testa.

    Tackar för en intressant blogg!

    Kommentar av Ronny — 27 november, 2010 @ 19:32

  4. Jaså, jag trodde att man behövde någon särskild drivrutin till värden också. Men nu har jag till slut startat om till Windows igen och testat virtio-net och skrivit några rader om det i ett nytt inlägg. Kul att du gillar min blogg förresten 🙂

    Kommentar av Anton — 4 december, 2010 @ 14:09


RSS feed for comments on this post. TrackBack URI

Lämna en kommentar

Skapa en gratis webbplats eller blogg på WordPress.com.