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.