Как я могу получить доступ к внутреннему диску из моих гостевых систем? Мой хост - 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] Изменения, внесенные в файловую систему, не отображаются после перезапуска виртуальной машины.

1 ответ1

0

Только диски и разделы, которые не смонтированы в хост-ОС, доступны из виртуальных машин. Я думаю, \\.\PhysicalDrive0 - это диск, с которого вы загружаете свой хост, поэтому вы не сможете его использовать. Это вряд ли изменится в будущем, так как совместное использование диска между двумя ОС вызовет ряд проблем, что может привести к повреждению данных.

Если вы хотите обмениваться файлами между операционной системой хоста и гостевой ОС, вы должны установить VirtualBox Addons в гостевой системе - в настройках виртуальной машины появится опция общего доступа, которая позволит вам настроить общую сетевую папку в гостевой системе, которая будет указывать на некоторые папки хоста. ,

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .