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.
quelle
Antworten:
Von VMs aus kann nur auf Laufwerke und Partitionen zugegriffen werden, die nicht in das Host-Betriebssystem eingebunden sind. Ich denke, es
\\.\PhysicalDrive0
ist 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 .
quelle