Прямое подключение диска в 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=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
Поэтому будьте внимательны! (И да, это полупочетное звание мамкин-админ — его заслужить тоже надо постараться)))))