VBoxManage: 오류: 요청한 장치로 사용할 수 없습니다.

VBoxManage: 오류: 요청한 장치로 사용할 수 없습니다.

나는 다음의 솔루션을 사용했습니다.이 스레드하지만 난 항상

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

SATA, SCSI, IDE 및 SAS 컨트롤러를 모두 사용해 보았지만 여전히 작동하지 않습니다.

호스트 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

답변1

udev를 사용하여 Ubuntu 12.10과 동등한 시스템을 실행하는 경우 Virtualbox에 할당하려는 논리 볼륨에 적절한 권한을 할당하도록 udev에 지시해야 합니다.

논리 볼륨의 현재 권한을 확인하려면:

$ 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가 그룹 목록에 있는지 확인합니다 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사용자 이름과 함께 제공되는 그룹 ID입니다. "gid="에 대한 출력을 확인하세요.id

물론 udev를 다시 로드해야 하지만 udev 규칙에 실수가 있으면 시스템이 충돌할 수 있습니다. 따라서 가능한 한 많은 응용 프로그램을 닫고 sync가능한 한 많은 데이터를 디스크에 플러시하는 프로그램을 실행하십시오. 작동하지 않는 경우를 대비해 최소한 문제가 발생하는 이유를 찾을 수 있도록 로그 수준을 높이는 것이 좋습니다.

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

Ubuntu에서는 로깅이 /var/log/syslog.

udev가 설정된 후에만 논리 볼륨을 생성해야 합니다. 그렇지 않으면 udev에 이벤트가 표시되지 않습니다. LV가 이미 존재하는 경우 다음을 실행하십시오.

$ 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

관련 정보