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

70a4d30441a08b6f5607fbc9674b9db8

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

E: ID_WWN_WITH_EXTENSION=0×50014ee2b3311c74

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-0×5002538d421c5853 (ну или /dev/sdb — если уж так надо…)))))

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

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


P.S.

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

E: ID_WWN=0×5002538d421c483f

В правилах udev просто идентификатор »0×5002538d421c483f», а синоним на файловой системе уже имеет такой вид:

/dev/disk/by-id/wwn-0×5002538d421c483f

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

© Habrahabr.ru