在场景工程中配置共享存储
SylixOS 作为 ServiceVM 的场景中
当 SylixOS 独占物理磁盘,并向其它 GuestOS 提供共享网络服务时,场景工程应做如下配置:
- 首先确保 quickvisor bsp 中已注册
ram_disk
驱动或emu_disk
驱动。ram_disk
驱动将申请多块内存,将内存作为存储介质并向 quickvisor 注册块设备对象。emu_disk
驱动将与 ServiceVM 中的 blk-proxy 建立数据通道,并根据 blk-proxy 提供的物理磁盘分区信息创建块设备对象,然后注册到 quickvisor 中。每一个块设备对象都有一个唯一的名字,这个名字在创建虚拟块设别时会被用到,即虚拟块设备的实际存储介质是块设备对象提供的。 - 修改 quickvisor.cfg 配置文件中的
hvdevs
节点,向其中添加虚拟块设备节点block-vm1
,并设置hvdev_host_dev
属性为对应的 quickvisor 块设备对象的名字,例如:"ramdiskp1"
或者"virtblkp1"
等。 - 如果虚拟机
vm1
需要使用共享存储,则将block-vm1
的hvdev_host_dev
设置为"virtblkp1"
,然后在vm1
的配置节点中添加virtio-blk
设备并将该设备的后端绑定到block-vm1
即可。
/***********************************************************/
/* quickvisor_bsp: src/bsp_init.c 中正确注册相关驱动 */
/***********************************************************/
static void __bsp_boot_thread_entry(qv_ptr_t arg)
{
...
/* Register test ram disk */
bsp_ram_disk_device_register();
/* Register test emu disk */
bsp_emu_disk_device_register();
...
}
/***********************************************************/
/* quickvisor.cfg: hvdevs 中创建虚拟块设备并关联到正确的设备对象 */
/***********************************************************/
hvdevs {
...
hvdev5 {
compatible = "qv-hvdev";
hvdev_name = "disk-vm1";
hvdev_type = "blk-disk";
hvdev_mem_size = <0>;
hvdev_port_num = <1>;
hvdev_host_dev = "ramdisk-p1"; //设备对象
};
...
};
/***********************************************************/
/* quickvisor.cfg: guest1 添加虚拟磁盘设备并关联到正确的虚拟块设备 */
/***********************************************************/
guest1 {
...
blkdev {
compatible = "qv-guest-device";
guest_device_type = "vdev";
guest_device_class = "dev";
guest_device_model = "virtio,blk";
guest_aspace_gpa = <0x0 0x21f0000>;
guest_aspace_siz = <0x0 0x10000>;
guest_interrupt_guest = <52>;
guest_backend_name = "disk-vm1"; //虚拟块设备
guest_backend_chan = <0>;
};
...
};
完成场景工程配置后,需要在 ServiceVM 中配置或开启 blk-proxy
服务。当 SylixOS 作为 ServiceVM 时,需要向 SylixOS 的 BSP 添加 blk-proxy
的代码,然后正确划分好磁盘分区,最后将 blk-proxy
配置为启动时自动启动。开发者可以参考 quickvisor_fte2000_src
中的示例场景工程 test_multi_vms
进行相关修改和配置。
Linux 作为 ServiceVM 的场景中
TODO:暂未提供 Linux 上的 blk-proxy 服务。