Virtualbox-Zugriff auf internes Laufwerk

0

Wie kann ich von meinen Gastsystemen auf ein internes Laufwerk zugreifen? Mein Host ist Windows 7. Ich habe das Handbuch ausprobiert , aber wenn ich das neue vmdk an einen Windows 7-Gast anhänge, wird es als unformatiert ohne Speicherplatz angezeigt. Der Befehl zum Erstellen des VMDK lautet:

VBoxManage.exe internalcommands createrawvmdk -filename C:\Users\me\.Virtualbox\VDI\mydrive.vmdk -rawdisk \\.\PhysicalDrive0

Wobei die Nummer hinter PhysicalDrive die Festplattennummer in Computermanagement-> Festplattenmanagement ist. Wenn ich das Problem richtig verstehe, scheint sich das Handbuch eher mit der Verwendung der Festplatte als Startgerät anstelle von Speicher zu befassen. Meine Motivation, meinem virtuellen Gast einfach eine weitere Festplatte hinzuzufügen, besteht darin, dass ich über zusätzlichen Speicherplatz verfüge, auf den ohne Virtualisierungsaufwand zugegriffen werden kann. Das Teilen von Daten ist kein Problem. Die Festplatte selbst speichert keine wichtigen Daten, obwohl ich sie nicht löschen möchte, wenn dies eine Option ist. Ich werde jetzt freigegebene Ordner verwenden, aber sie sind im Vergleich langsam.

[BEARBEITEN] Entschuldigung, das von mir verwendete VM-Image ist Windows XP, nicht Windows 7. Ich habe ein neues VMDK mit Administratorrechten erstellt, wie in den Kommentaren vorgeschlagen. Das Verhalten änderte sich jedoch nicht. Als nächstes habe ich versucht, auf die Festplatte in meinem Ubuntu vm zuzugreifen. Beim ersten Start ist eine Fehlermeldung VERR_ACCESS_DENIED aufgetreten. Stellen Sie sicher, dass genügend freier Speicherplatz vorhanden ist. Nach einem erzwungenen Neustart des VM konnte ich über den Dateimanager auf die Festplatte zugreifen. Ich habe auch versucht, von einem Windows 7 VM auf die Festplatte zuzugreifen (ja, diesmal wirklich Windows 7). Dort ist derselbe VERR_ACCESS_DENIED-Fehler aufgetreten. Im Gegensatz zu Ubuntu vm tauchte es bei jedem Neustart wieder auf (dreimal).

[EDIT2] Die Implementierung scheint fehlerhaft zu sein. Ich habe ein Skript geschrieben, um 10 GB 1 MB-Dateien, 10 GB 2 GB usw. zu schreiben. Zuerst habe ich einen Fehler in der 6200.th 1MB-Datei bekommen. Bei der nächsten Ausführung trat derselbe Fehler bei der ersten 3-MB-Datei auf:

/bin/dd: opening `/media/Ultra_/samplefiles/3MB_1': Input/output error

Danach erhalte ich eine E / A-Fehlermeldung, wenn ich versuche, auf das Verzeichnis samplefiles zuzugreifen.

[EDIT3] Hier ist ein Testskript, um den Fehler zu reproduzieren. Wenn ich über mein Hostsystem auf die Festplatte zugreife, kann ich die Dateien / Ordner, die ich über den Gast geschrieben habe, nicht sehen. Auf dem Gast selbst sind die Dateien sichtbar, und die durch df -h sichtbare Dateisystemgröße des unformatierten Dateisystems nimmt ab, wenn ich Dateien darauf schreibe. Ich kann nach dem Auftreten des Fehlers immer noch auf andere Dateien auf der Festplatte zugreifen.

    #!/usr/bin/python
"""Generate directory of files for testing."""
import sys, os
import argparse
try:
    import sh
    from sh import dd
except:
    print 'Please install the python sh module first : pip install sh'
    exit(1)

class MyParser(argparse.ArgumentParser):
    def error(self, message):
        print_help()
        sys.exit(1)

def print_help():
   print
   print '  Not enough arguments.\n'
   print '      Example: '
   print '          %s directory_for_generated_files' %  sys.argv[0]
   print '          Generate 10GB worth of 1MB, 2MB, 3MB, 4MB, 5MB, and 6MB files to the directory *directory_for_generated_files*.'
   print

def main():
    parser = MyParser()
    parser.add_argument('directory')
    args = parser.parse_args()
    directory = args.directory
    if not os.path.exists(directory):
        os.makedirs(directory)
    filesize_arr = [1,2,3,4,5,6]
    filequantity_arr = [10000,5000,3333,2500,2000,1667]

    idx = 0 
    for size in filesize_arr:
        for nr in range(1,filequantity_arr[idx]+1):  # from 1 to file quantity
            filename =  directory+'/'+str(size)+'MB_'+str(nr)
            print "writing "+directory+'/'+str(size)+'MB_'+str(nr)
            dd('if=/dev/zero', 'of='+filename, 'bs=1MB', 'count='+str(size))
        idx += 1

if __name__ == '__main__':
    main()

[EDIT4] Die am Dateisystem vorgenommenen Änderungen sind nach dem Neustart der virtuellen Maschine nicht sichtbar.

phobisch
quelle
Führen Sie den Befehl vboxmanage mit Administratorrechten aus?
KA
Ich bin mir nicht sicher, ob sich dies geändert hat, musste aber VirtualBox als Administrator ausführen, um auf Raw-Festplatten zugreifen zu können.
Brian
Danke, ich werde es am Abend versuchen. Da ich mir in diesem Punkt nicht sicher war, habe ich es zunächst ohne Administratorrechte versucht. Da es sich nicht beschwerte, fand ich es in Ordnung.
Phobic

Antworten:

0

Von VMs aus kann nur auf Laufwerke und Partitionen zugegriffen werden, die nicht in das Host-Betriebssystem eingebunden sind. Ich denke, es \\.\PhysicalDrive0ist das Laufwerk, von dem Sie Ihren Host booten, sodass Sie es nicht verwenden können. Es ist sehr unwahrscheinlich, dass sich dies in Zukunft ändert, da die gemeinsame Nutzung eines Laufwerks zwischen zwei Betriebssystemen eine Reihe von Problemen verursachen und möglicherweise zu einer Beschädigung der Daten führen kann.

Wenn Sie Dateien zwischen dem Host-Betriebssystem und dem Gast-Betriebssystem freigeben möchten, sollten Sie VirtualBox Addons im Gast installieren. In den VM-Einstellungen wird eine Freigabeoption angezeigt, mit der Sie einen freigegebenen Netzwerkordner im Gast einrichten können, der auf einige Ordner des Hosts verweist .

gronostaj
quelle
Ich verstehe, dass mein Beitrag lang ist, aber es heißt ausdrücklich, dass das Teilen kein Problem ist. Außerdem enthält das Laufwerk keine wichtigen Daten. Es ist also kein Betriebssystem darauf. Wissen Sie zufällig, wie Sie den Datenträger in Windows "aushängen" können, wenn Sie der Meinung sind, dass dies das Problem hier ist?
phobische
Entschuldigung, ich habe den Teil zum Teilen übersehen. Zum "Aushängen" der Festplatte sollten meines Erachtens alle Laufwerksbuchstaben oder Einhängepunkte von den Partitionen auf diesem Laufwerk entfernt werden. Sie können dies im Fenster Computerverwaltung tun (klicken Sie mit der rechten Maustaste auf Computer im Startmenü und klicken Sie auf Verwalten ). Wenn dies nicht funktioniert, versuchen Sie es mit einzelnen Partitionen anstelle des gesamten Laufwerks (eine Partition, die sich über das gesamte Laufwerk erstreckt, sollte ebenfalls funktionieren). Das VBox-Handbuch behandelt dieses Thema . Beachten Sie, dass Festplatten von 0 indiziert werden, Partitionen jedoch von 1.
gronostaj
Nach dem Abmelden der Festplatte in Windows kann ich den Fehler mit dem obigen Skript immer noch reproduzieren.
phobische
Versuchen Sie einen Neustart. Die Neuinstallation derselben oder einer aktualisierten Version von VirtualBox kann ebenfalls Abhilfe schaffen. Es sind einige Probleme mit VMDK bekannt, die durch eine Neuinstallation von VBox behoben werden.
Gronostaj
Nach der "Reparatur" -Installation des neuesten VB und dem Neustart von Host und Gast kann ich den Fehler immer noch zuverlässig reproduzieren.
Phobic