VBoxManage: ошибка: не может использоваться как запрошенное устройство

Я использовал soluton из этой темы, но всегда получаю

VirtualBox error: The medium 'lvol.vmdk' can't be used as the requested device type (0x80004005) 

Я пробовал все контроллеры SATA, SCSI, IDE и SAS, которые все еще не работают.

Host SO: Ubuntu 12.04.1 amd64 VirtualBox 4.1

lvol.vmdk был создан с

 vboxmanage internalcommands createrawvmdk -filename /VDK/lvlol.vmdk -rawdisk /dev/vg/lv 

необработанный диск:

 1 primary ext3 156MB 2 primary swap 2147MB 3 primary ext3 4137MB 

Если вы используете систему, сопоставимую с Ubuntu 12.10, используя udev, тогда вы должны указать udev назначить правильные разрешения для логического тома, который вы хотите назначить Virtualbox.

Чтобы проверить текущие разрешения на логический том:

 $ ls -lL /dev/mapper/vg_usbraid-vm_webserver brw-rw---- 1 root disk 252, 8 Oct 26 09:26 vg-lv id uid=1000(username) gid=1000(groupid) groups=1000(groupid),4(adm),20(dialout),24(cdrom),46(plugdev),115(lpadmin),117(admin),122(sambashare) 

И проверьте, указан ли идентификатор группы устройства в списке групп из команды id .

Проблема в приведенном выше примере заключается в том, что ни «root», ни «disk» не входят в список, из которого вырывается id . Хотя для пользователя легко расширить список групп, это действительно не то, что вы хотите, так как добавление root или disk в учетную запись пользователя является серьезным риском для безопасности. Вы могли бы как обычный пользователь писать на любой диск на очень низком уровне. Лучшее решение объяснено ниже.

Имея ограниченную информацию, доступную на момент написания статьи, я не могу вдаваться в подробности, но это то, что я сделал, чтобы выполнить виртуальную виртуальную машину Vbox из логического тома под моим собственным именем пользователя:

Создайте следующий файл: /etc/udev/rules.d/65-vmdmsetup.rules с содержимым:

 SUBSYSTEM!="block", GOTO="vm_device_mapper_end" KERNEL!="dm-*", GOTO="vm_device_mapper_end" ACTION!="add|change", GOTO="vm_device_mapper_end" # Obtain device status IMPORT{program}="/sbin/dmsetup export -j%M -m%m" ENV{DM_NAME}!="?*", GOTO="vm_device_mapper_end" ENV{DM_NAME}=="vg_usbraid-vm_webserver", GROUP="groupid" LABEL="vm_device_mapper_end" 

Где:

  • vg_usbraid – это название группы томов
  • vm_webserver – это имя логического тома
  • groupid – это идентификатор группы, который поставляется с вашим именем пользователя. Проверьте, что 'gid =' в выводе id

Конечно, вам нужно перезагрузить udev, но создание опечаток в правилах udev может привести к краху вашей системы. Поэтому обязательно закройте как можно больше приложений и, возможно, просто запустите sync чтобы как можно больше объединить данные на диск. Подумайте об увеличении уровня журнала, чтобы в случае, если он не работает, по крайней мере, у вас есть некоторые причины для того, что пошло не так.

 $ udevadm control --log-priority=info $ sudo udevadm control --reload 

В Ubuntu ведение журнала перенаправляется в /var/log/syslog .

Только когда udev настроен, вы должны создать логический том, иначе udev не увидит события. Если ваш LV уже существует, запустите a:

 $ sudo udevadm trigger --subsystem-match=block 

Затем, наконец, проверьте, правильно ли установлены разрешения:

 $ ls -lL vg_usbraid-vm_webserver brw-rw---- 1 root groupid 252, 8 Oct 26 09:26 vg_usbraid-vm_webserver ^^^^^^^ 

И верните рычаг каротажа в значение по умолчанию:

 $ sudo udevadm control --log-priority=err