Я нашел инструкции о том, как создать виртуальный диск для использования с virtualbox, который указывает на устройство raw block. Вы не можете сделать это из пользовательского интерфейса, но вы можете сделать это из командной строки:
VBoxManage internalcommands createrawvmdk -filename "</path/to/file>.vmdk" -rawdisk /dev/sda
это работает отлично, за исключением того, что не делает прямого ввода-вывода на блочное устройство, поэтому все оказывается в кэше страниц, и если вы знаете, как работает кэш страниц, он скармливает блочному устройству грязные страницы по одной за раз. Это занимает вечность на медленном блочном устройстве.
Если бы VirtualBox обращался к блочному устройству с помощью прямого ввода-вывода, то пакетные операции чтения и записи направлялись бы непосредственно на блочное устройство в виде пакета (био со множеством сегментов), и все это выполнялось бы намного быстрее.
Я не могу найти нигде опцию, которая описывает, как это сделать или возможно ли это вообще. Кто-нибудь знает о такой вещи?