在场景工程中配置共享存储

更新时间:
2024-02-21

在场景工程中配置共享存储

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-vm1hvdev_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 服务。

文档内容是否对您有所帮助?
有帮助
没帮助