Назад | Перейти на главную страницу

Правильная установка virtio на 64-битном хосте Ubuntu 14.04

В настоящий момент мой гость работает внутри qemu, а хост - kvm intel, работает под управлением Ubuntu 14.04, ядро ​​стабильно 4.3.0. Изнутри гостя, когда я бегу "hdparm -i / dev / sdb" на гостя я получаю:

Ошибка HDIO_GET_IDENTITY: недопустимый аргумент

как ошибка, но на хосте я получу полную информацию о жестком диске / SSD.

Могу ли я узнать, как решить эту проблему, чтобы результат был одинаковым для хоста и гостя?

Моя strace hdparm из гостя (отслеживается только "-e ioctl"):

ioctl(3, HDIO_GET_MULTCOUNT, 0x618ef0)  = -1 EINVAL (Invalid argument)
ioctl(3, SG_IO, {'S', SG_DXFER_FROM_DEV, cmd[16]=[85, 08, 0e, 00, 00, 00, 01, 00, 00, 00, 00, 00, 00, 40, ec, 00], mx_sb_len=32, iovec_count=0, dxfer_len=512, timeout=15000, flags=0, data[512]=["@\0\377?7\310\20\0\0\0\0\0?\0\0\0\0\0\0\0HPAD0409105B"...], status=00, masked_status=00, sb[0]=[], host_status=0, driver_status=0, resid=0, duration=184, info=0}) = 0
ioctl(3, HDIO_GET_IDENTITY, 0x7fffda088500) = -1 EINVAL (Invalid argument)
 HDIO_GET_IDENTITY failed: Invalid argument
+++ exited with 22 +++

И на уровне хоста:

ioctl(1, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, 0x7ffd4b096d90) = -1 ENOTTY (Inappropriate ioctl for device)
ioctl(3, HDIO_GET_MULTCOUNT, 0x618ef0)  = -1 ENOTTY (Inappropriate ioctl for device)
ioctl(3, SG_IO, {'S', SG_DXFER_FROM_DEV, cmd[16]=[85, 08, 0e, 00, 00, 00, 01, 00, 00, 00, 00, 00, 00, 40, ec, 00], mx_sb_len=32, iovec_count=0, dxfer_len=512, timeout=15000, flags=0, data[512]=["@\0\377?7\310\20\0\0\0\0\0?\0\0\0\0\0\0\0HPAD0409105B"...], status=00, masked_status=00, sb[0]=[], host_status=0, driver_status=0, resid=0, duration=184, info=0}) = 0
**ioctl(3, HDIO_GET_IDENTITY, 0x7ffd4b0976e0) = 0**
+++ exited with 0 +++

И моя командная строка qemu:

sudo ./x86_64-softmmu/qemu-system-x86_64 -m 1024 -boot c -enable-kvm -net nic -net user \
-device virtio-scsi-pci \
-drive if=none,file=/dev/sdb,id=sdb,cache=none,format=raw \
-device scsi-block,drive=sdb \
-hda /home/user/ubuntu1404_x86_64/ubuntu1404_x86_64.img

где qemu-system_x86_64 недавно скомпилирован из последнего дерева git qemu-devel.

Я бы хотел, чтобы SSD (внутренний SATA) в / dev / sdb передавался непосредственно в qemu.

Пожалуйста, порекомендуйте лучшее решение: дистрибутив (CentOS ??), версию ядра, команду qemu like и процедуру установки libvirtd? или virtio-scsi? Идентичный вывод для "hdparm" будет основным критерием.

Если вам нужен точно такой же вывод, вам понадобится отдельный дисковый контроллер с отдельным подключенным диском, подключенным через pci-passthrough к гостю.

Образ диска virtio НЕ совпадает с физическим диском, на котором он находится. Это просто изображение со своими метаданными. Инфраструктура virtio, вероятно, даже не предоставляет метаданные для запросов hdparm, потому что она не предназначена для этой цели.