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

от автора

Статья (и в целом проблема как таковая) уровня для-мамкиных-админов (или админов локалхоста, как зло и хлестко говорят на/в опеннете), поэтому “подкованным” можно проходить мимо! Написать эти 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

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


ссылка на оригинал статьи https://habr.com/ru/articles/894420/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *