Answers:
如果在创建虚拟机时未定义CDROM,则可以通过运行以下命令将设备甚至连接到正在运行的域(虚拟机):
virsh attach-disk testbed /dev/sr0 hdc --type cdrom
如果您已经定义了CDROM,但是它指向的是ISO映像,那么根据我的经验,您仍然可以运行相同的命令。该hdc
部件需要匹配testbed
虚拟机中具有的块设备。
当您要再次指向ISO映像时,将替换/dev/sr0
为主机上的文件名,例如
virsh attach-disk testbed ~/virtio-win-0.1-22.iso hdc --type cdrom
该文档建议使用virsh update-device
,但是创建类似以下内容的XML定义会比较费力:
<disk type='block' device='cdrom'>
<driver name='qemu' type='raw'/>
<source dev='/dev/sr0'/>
<target dev='hdc' bus='ide'/>
<readonly/>
</disk>
如果您喜欢这种方法,请将类似的内容保存到文件中(例如~/cdrom-real.xml
),然后执行以下操作:
virsh update-device testbed ~/cdrom-real.xml
virsh detach-disk testbed hdc
,但是我得到了error: unsupported configuration: This type of device cannot be hot unplugged
。
detach-disk
对于已停止的虚拟机不起作用。要完全删除CD,您需要virsh edit testbed
在机器停止时使用它,并删除disk
定义到cdrom 的元素。如果您不是vi
编辑专家,请export EDITOR=nano
在执行edit命令之前执行。
使用virsh的qemu-monitor-command传递弹出命令并将更改命令向下传递到qemu。
首先使用“信息块”为您的cdrom获取qemu的设备名称。
virsh # qemu-monitor-command mirage --hmp --cmd "info block"
drive-virtio-disk0: type=hd removable=0 file=/home/daoist/mirage/mirage.qcow2 ro=0 drv=raw encrypted=0
drive-ide0-0-0: type=cdrom removable=1 locked=0 file=/home/daoist/iso/en_windows_7_ultimate_with_sp1_x64_dvd_u_677332.iso ro=1 drv=raw encrypted=0
因此,就我而言,我对drive-ide0-0-0感兴趣。因此,要更改磁盘,请执行以下操作:
virsh # qemu-monitor-command mirage --hmp --cmd "eject drive-ide0-0-0"
virsh # qemu-monitor-command mirage --hmp --cmd "change drive-ide0-0-0 /path/to/new.iso"
virsh #
我正在通过的蓝光播放器无法正常工作,除非我以其他方式通过它。根据本文,这是我的操作方法。
https://lime-technology.com/forums/topic/33851-blu-ray-dvd-rom-passthrough/
查找SCSI#:
lsscsi
[root@kvmatrix ~]# lsscsi
[#:0:0:0] cd/dvd HL-DT-ST BD-RE WH14NS40 1.03 /dev/sr0
编辑域XML并添加以下内容:
注意:将scsi_host#替换为lssci中的#
<controller type='scsi' index='0' model='virtio-scsi'/>
<hostdev mode='subsystem' type='scsi'>
<source>
<adapter name='scsi_host#'/>
<address type='scsi' bus='0' target='0' unit='0'/>
</source>
<readonly/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</hostdev>
我不得不强迫xml被接受,因为virsh edit给出了错误,只需按i,然后重新启动vm即可进行测试。