Как стать автором
Обновить

Прямое подключение диска в VirtualBox

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров1.7K

Статья (и в целом проблема как таковая) уровня для-мамкиных-админов (или админов локалхоста, как зло и хлестко говорят на/в опеннете), поэтому “подкованным” можно проходить мимо! Написать эти 3 абзаца сподвигла злоба на горе-СЕОшников, которые завалили инет перепечатками статей 2005-2010г.г. Кроме того, Оракл задеприкэйтил определенную опцию командной строки, и скоро эти статьи протухнут окончательно (напоследок будет пара фраз про KVM).


1. Проблема (которая, в общем-то, непроблема)

Она произрастает из параллельного (в нынешнем Линуксе) обнаружения устройств, поэтому дисковые устройства часто меняют имена между перезагрузками (что-то типа: было /dev/sda - стало /dev/sdb)

Поэтому, если тест нужет в моменте, и больше повторов не будет, можно опираться на /dev/sdX. Но если тесты/работа на большой период времени, нужно что-то универсальное и идентифицирующее нужное устройство однозначно. Здесь на помощь приходят синонимы, коих система плодит при загрузке в достатке (и слава богу!!!).

Взглянем на вывод команды "ls /dev/disk":

by-diskseq by-id by-loop-inode by-loop-ref by-partlabel by-partuuid by-path by-uuid

Во всех этих подкаталогах ссылки на устройства/разделы с использованием разных идентификаторов. Вот их и надо использовать!

2. Udev.

Сначала подсмотрите с помощью команды “udevadm info /dev/sdX” идентификатор, по которому будете отлавливать появление вашего устройства.

...........

E: ID_REVISION=01.01A01

E: ID_SERIAL=WDC_WD20NPVX-00EA4T0_WD-WX81A43A9823

E: ID_SERIAL_SHORT=WD-WX81A43A9823

……….

E: ID_WWN=0x50014ee2b3311c74

E: ID_WWN_WITH_EXTENSION=0x50014ee2b3311c74

E: ID_PATH=pci-0000:02:00.1-ata-6.0

.............

Далее назначаем права доступа для вашего диска (Vbox работает под пользователем, а не рутом). Создаем файл /etc/udev/rules.d/99-vbox-disks.rules:

ENV{ID_SERIAL_SHORT}=="WD-WX81A43A9823", GROUP="vboxusers"

В этом примере идентификация у нас идет по серийному номеру.

3. Создание файла-привязки.

Теперь о той опции командной строки, которая постепенно протухает. Речь идет о ком-строке вида: vboxmanage internalcommands createrawvmdk …

Для создания файла-привязки следует пользоваться командной строкой вида:

vboxmanage createmedium disk --variant=RawDisk --format=VMDK --filename="${_file}" --property RawDrive=${_id}

где _id – это что-то типа /dev/disk/by-id/wwn-0x5002538d421c5853 (ну или /dev/sdb – если уж так надо…)))))

Теперь обещаные пара слов про KVM.

Маневр с синонимами имеет силу и для KVM. Там оформляем подключение дискового устройства по схожему принципу (выжимка XML):

........................

<disk type='block' device='disk'>

<driver name='qemu' type='raw' cache='none'/>

<source dev='/dev/disk/by-id/wwn-0x50014ee2b3315694'/>

<target dev='vdc' bus='virtio'/>

<address type='pci' domain='0x0000' bus='0x09' slot='0x00' function='0x0'/>

</disk>

.........................

P.S.

Обратите внимание на следующий момент:

E: ID_WWN=0x5002538d421c483f

В правилах udev просто идентификатор “0x5002538d421c483f”, а синоним на файловой системе уже имеет такой вид:

/dev/disk/by-id/wwn-0x5002538d421c483f

Поэтому будьте внимательны! (И да, это полупочетное звание мамкин-админ - его заслужить тоже надо постараться )))))

Теги:
Хабы:
Всего голосов 2: ↑1 и ↓10
Комментарии3

Публикации

Ближайшие события