Как я могу получить доступ к внутреннему диску из моих гостевых систем? Мой хост - Windows 7. Я попробовал руководство, но когда я присоединяю новый vmdk к гостевой системе Windows 7, он отображается как неформатированный с нулевым дисковым пространством. Команда для создания vmdk:
VBoxManage.exe internalcommands createrawvmdk -filename C:\Users\me\.Virtualbox\VDI\mydrive.vmdk -rawdisk \\.\PhysicalDrive0
Где число за PhysicalDrive - это номер диска в разделе «Управление компьютером-> Управление дисками». Если я правильно понимаю проблему, скорее всего, в руководстве рассматривается использование жесткого диска в качестве загрузочного устройства вместо хранилища. Моя мотивация просто добавить еще один диск к моему виртуальному гостю в том, что у меня есть дополнительное хранилище, к которому можно получить доступ без лишних затрат на виртуализацию. Обмен данными не является проблемой. На самом диске не хранятся важные данные, хотя я не хотел бы их удалять, если это вариант. Сейчас я собираюсь использовать общие папки, но на самом деле они медленны по сравнению.
[EDIT] Извините за путаницу, образ VM, который я использовал, является Windows XP, а не Windows 7. Я создал новый vmdk с правами администратора, как предложено в комментариях. Однако поведение не изменилось. Затем я попытался получить доступ к диску в моем Ubuntu vm. При первом запуске я получил ошибку VERR_ACCESS_DENIED, убедитесь, что свободного места достаточно. После принудительного перезапуска виртуальной машины я смог получить доступ к диску через файловый менеджер. Я также пытался получить доступ к диску из Windows 7 VM (да, на этот раз действительно Windows 7). Там произошла та же ошибка VERR_ACCESS_DENIED. В отличие от Ubuntu vm, он появлялся каждый раз, когда я перезагружался (три раза).
[EDIT2] Реализация, похоже, имеет недостатки. Я написал скрипт для записи 10 ГБ файлов по 1 МБ, 10 ГБ по 2 ГБ и т.д. Сначала я получил ошибку в 6200.th 1MB файле. При следующем запуске такая же ошибка произошла в первом файле размером 3 МБ:
/bin/dd: opening `/media/Ultra_/samplefiles/3MB_1': Input/output error
После этого я получаю ошибку ввода-вывода при попытке доступа к каталогу samplefiles любым способом.
[EDIT3] Вот тестовый скрипт для воспроизведения ошибки. Если я получаю доступ к диску через хост-систему, я не вижу файлы / папки, которые я записал на него через гостя. На самом госте файлы видны, и размер файловой системы необработанной файловой системы, видимой через df -h, уменьшается, когда я записываю в нее файлы. Я могу получить доступ к другим файлам на диске после возникновения ошибки.
#!/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] Изменения, внесенные в файловую систему, не отображаются после перезапуска виртуальной машины.