Как я могу предоставить KVM доступ для чтения к / dev / sg0?

Я пытаюсь передать физический оптический привод гостю KVM.

Вот как у меня есть устройство, определенное в XML:

<controller type='scsi' index='0' model='virtio-scsi'/>
    <hostdev mode='subsystem' type='scsi'>
      <source>
        <adapter name='scsi_host4'/>
        <address type='scsi' bus='0' target='0' unit='0'/>
      </source>
  <readonly/>
  <address type='drive' controller='0' bus='0' target='0' unit='0'/>
</hostdev>

К сожалению, когда я пытаюсь загрузить виртуальную машину, я получаю эту ошибку:

файл диска = / dev / sg0, если = нет, id = drive-hostdev0, readonly = on: не удается открыть '/ dev / sg0': разрешение запрещено

Как это исправить?

0
задан 9 May 2018 в 21:45

1 ответ

Сначала необходимо проверить, является ли это AppArmor, который блокирует устройство:

dmesg | grep /dev/sg0

Если Вы видите сообщение, подобное:

[159883.682167] аудит: аудит type=1400 (1534114680.047:392): apparmor = "ОТКЛОНЕННЫЙ" в операции = "file_lock" представляют = "libvirt-40d3ad0d-0574-4823-ae7d-eaf38afa7fb6" имя = "/dev/sg0"

Затем это блокируется AppArmor. Если поле профиля похоже выше с идентификатором домена, расположенным после profile= часть затем, это - динамично созданный профиль, созданный KVM после домена, запускается как часть интеграции KVM с AppArmor.

Можно предоставить доступ некоторым или всем устройствам SCSI для хостов KVM путем редактирования шаблонного файла, обычно располагаемого в /etc/apparmor.d/libvirt. Необходимо видеть A TEMPLATE.qemu файл, который используется в качестве основания для динамично созданных профилей AppArmor. Можно добавить устройство (устройства) в белый список в этом файле или отредактировать файл, на который указывает включение, перечисленное в шаблонном файле, который обычно является /etc/apparmor.d/abstractions/libvirt-qemu. Для белого списка просто добавьте записи на их собственных строках в файл как так:

Для чтения:

/dev/sg* rk,

Для чтения-записи:

/dev/sg* rwk,

При использовании GUI для редактирования устройств SCSI в домене, можно заметить, что устройства не обнаруживаются правильно в GUI. Например, при попытке пройти через оптический диск, он не может показать, что медиа находятся в диске, даже если некоторые присутствуют. Вы захотите к whilelist эти устройства к сервису KVM также путем добавления подобных записей в /etc/apparmor.d/usr.lib.libvirt.virt-aa-helper файл и затем говорит AppArmor перезагружать конфигурации:

service apparmor reload

Если устройства SCSI являются symlinked, Вы, возможно, должны добавить те symlinked устройства к своему белому списку также. Ошибки AppArmor сообщат, если это верно, поскольку Вы будете видеть обновленные ошибки, поскольку Вы добавляете устройства в белый список для чтения или пишете, нет ли у Вас их всех покрытыми.

3
ответ дан 29 October 2019 в 09:07

Другие вопросы по тегам:

Похожие вопросы: