1.说明
qemu-kvm虚拟机与宿主机之间实现文件传输,主要是使用网络来进行,一般是qemu在创建虚拟机时在xml中配置好<network>标签然后通过ssh的scp远程拷贝命令实现。
<interface type='network'>
<source network='default'/>
<model type='virtio'/>
</interface>
但在某些情况下,qemu不是以xml创建的虚拟机,而是以纯命令创建的虚机。这就只能手动配置宿主机和虚拟机之间的网络,需要先在宿主机上配置网络桥接,然后在qemu-kvm启动时配置网卡。除了这种方式外,还可以配置共享文件夹,它也可以实现简单的虚拟机和宿主机之间的文件传输,尤其适合少量的大文件,接下来介绍其配置方法。
2.宿主机上操作
1. 使用dd创建一个4G大小的文件,作为虚拟机和宿主机之间传输桥梁
dd if=/dev/zero of=/opt/share.img bs=4M count=1k
2. 格式化share.img文件:
mkfs.ext4 /opt/share.img
3. 创建一个共享文件夹并挂载:
mkdir /tmp/share
mount -o loop /opt/share.img /tmp/share
4. 把需要传输给虚拟机的文件放到/tmp/share 下即可:
cp stress.xxx.rpm tmp/share
3.虚拟机操作
1. 启动qemu-kvm虚拟机时,额外添加上 -hdb /opt/share.img参数:
/usr/libexec/qemu-kvm -m 4G -smp 4 -name bcl-qemu --enable-kvm -boot cd -hda /root/linux.qcow2 -hdb /opt/share.img -vnc :1
2. 在虚拟机中lsblk查看本地磁盘是否挂载上宿主机的/opt/share.img,可以看到虚机多了一个sdb,且大小正好是之前创建/opt/share.img的4G
3. 创建/root/share文件夹,作为虚拟机的挂载点
mkdir /root/share
4. 以同样的文件格式ext4挂载刚刚添加的/dev/sdb硬盘:
mount -t ext4 /dev/sdb /root/share
5. 通过访问/root/share文件夹即可以获得宿主机上放在/tmp/share文件夹下的文件
6. 若宿主机重新往共享文件夹下添加文件,就在虚拟机中先卸载/dev/sdb然后再挂载以实时共享(直接用mount -o remount /dev/sdb重新挂载/dev/sdb测试不成功)
umount /dev/sdb
mount -t ext4 /dev/sdb /root/share