长期支持版本

    社区创新版本

      虚拟机配置

      概述

      不同于Libvirt通过xml文件配置虚拟机的方式,StratoVirt可以通过命令行参数指定配置,也可以通过json文件进行配置。配置包括虚拟机CPU、内存、磁盘等信息。这里给出两种方式的具体操作方法。

      同时使用命令行配置和json文件配置时,以命令行配置为准。

      本文中的/path/to/socket为用户自定义路径下的socket文件。

      规格说明

      • 虚拟机CPU个数:[1, 254]
      • 虚拟机内存大小:[128M, 512G]
      • 虚拟机磁盘个数(包括热插的磁盘):[0, 6]
      • 虚拟机网卡个数(包括热插的网卡):[0, 2]
      • 虚拟机console设备仅支持单路连接
      • x86_64平台,最多可以配置11个mmio设备;但是除了磁盘和网卡,建议最多配置2个其他设备; AArch64平台,最多可以配置160个mmio设备;但是除了磁盘和网卡,建议最多配置12个其他设备。

      最小配置

      StratoVirt能够运行的最小配置为:

      • 有一个PE格式的Linux内核文件
      • 将rootfs镜像设置成virtio-blk设备,并添加到内核参数中
      • 使用api-channel来控制StratoVirt
      • 如果要使用ttyS0登录,添加一个串口到启动命令行,并将ttyS0添加到内核参数中

      命令行配置

      概述

      命令行配置即通过命令行参数直接指定虚拟机配置内容。

      命令格式

      使用cmdline配置的命令格式如下:

      $ /path/to/stratovirt -[参数1] [参数选项] -[参数2] [参数选项] ...

      使用说明

      1. 首先,为确保可以创建api-channel需要的socket,可以参考如下命令清理环境:

        $ rm [参数] [用户自定义socket文件路径]
        
      2. 然后,运行cmdline命令。

        $ /path/to/stratovirt -[参数1] [参数选项] -[参数2] [参数选项] ...
        

      参数说明

      cmdline命令行配置参数请参见下表:

      表1 :命令行配置参数说明

      参数参数选项说明
      -nameVMName配置虚拟机名称 (字符长度:1-255字符)
      -kernel/path/to/vmlinux.bin配置内核镜像
      -appendconsole=ttyS0 root=/dev/vda reboot=k panic=1配置内核命令行参数
      -initrd/path/to/initrd.img配置initrd文件
      -smp[cpus=]个数配置cpu个数,范围[1, 254]
      -m内存大小(字节单位)、内存大小M(M单位)、内存大小G(G单位)配置内存大小,范围[128M, 512G]
      -driveid=rootfs,file=/path/to/rootfs[,readonly=false,direct=true,serial=serial_num]配置virtio-blk设备
      -netdevid=iface_id,netdev=tap0[,mac=mac_address]配置virtio-net设备
      -chardevid=console_id,path=/path/to/socket配置virtio-console,运行前须保证socket文件不存在
      -devicevsock,id=vsock_id,guest-cid=3配置vhost-vsock
      -api-channelunix:/path/to/socket配置api-channel,运行前须保证socket文件不存在
      -serialstdio配置串口设备
      -D/path/to/logfile配置日志文件
      -pidfile/path/to/pidfile配置pid文件,必须和-daemonize一起使用。运行前须保证pid文件不存在
      -disable-seccompNA关闭Seccomp,默认打开
      -omit_vm_memoryNA当进程panic时,不dump虚拟机内存
      -daemonizeNA开启进程daemon化

      配置示例

      1. 删除socket文件,确保可以创建api-channel。

        $ rm -f /tmp/stratovirt.socket
        
      2. 运行StratoVirt。

        $ /path/to/stratovirt \
            -kernel /path/to/vmlinux.bin \
            -append console=ttyS0 root=/dev/vda rw reboot=k panic=1 \
            -drive file=/home/rootfs.ext4,id=rootfs,readonly=false \
            -api-channel unix:/tmp/stratovirt.socket \
            -serial stdio
        

        运行成功后,将根据指定的配置参数创建并启动虚拟机。

      json配置

      概述

      使用json文件配置即在运行StratoVirt创建虚拟机时,读取给定的json文件,该文件中包含了对虚拟机的相关配置。

      命令格式

      使用json文件配置虚拟机的命令格式如下,其中 /path/to/json 为对应文件的路径。

      $ /path/to/stratovirt -config /path/to/json -[参数] [参数选项]

      使用说明

      1. 编写json文件,将虚拟机配置写入该文件。

      2. 执行StratoVirt创建虚拟机。

        $ /path/to/stratovirt -config /path/to/json -[参数] [参数选项]
        

      参数说明

      json文件中可配置字段及含义请参见下表:

      表2:配置文件的字段

      配置参数配置参数选项说明
      boot-source"kernel_image_path": "/path/to/vmlinux.bin","boot_args": "console=ttyS0 reboot=k panic=1 pci=off tsc=reliable ipv6.disable=1 root=/dev/vda quiet","initrd_fs_path": "/path/to/initrd.img"配置内核镜像和内核参数, 参数initrd_fs_path可选。
      machine-config"name": "abc","vcpu_count": 4,"mem_size": 805306368,"omit_vm_memory": true配置虚拟cpu和内存大小,参数 omit_vm_memory可选。
      drive"drive_id": "rootfs","path_on_host": "/path/to/rootfs.ext4","read_only": false,"direct": true,"serial_num": "xxxxx"配置virtio-blk磁盘 ,参数serial_num可选。
      net"iface_id": "net0","host_dev_name": "tap0","mac": "xx:xx:xx:xx:xx:xx"配置virtio-net网卡,参数mac 可选
      console"console_id": "charconsole0","socket_path": "/path/to/socket"配置virtio-console串口,运行前须保证socket文件不存在
      vsock"vsock_id": "vsock0","guest_cid": 3配置virtio-vsock设备
      serial"stdio": true配置串口设备

      使用json运行的参数请参见下表:

      表3:使用json运行的参数

      参数参数选项说明
      -config/path/to/json配置文件的路径
      -api-channelunix:/path/to/socket配置api-channel,运行前须保证socket文件不存在
      -D/path/to/logfile配置日志文件
      -pidfile/path/to/pidfile配置pid文件,必须配合daemonize使用。运行前须保证pid文件不存在
      -disable-seccompNA关闭Seccomp,默认打开
      -daemonizeNA开启进程daemon化

      配置示例:

      1. 创建json文件,例如/home/config.json,其内容如下:
      {
        "boot-source": {
          "kernel_image_path": "/path/to/vmlinux.bin",
          "boot_args": "console=ttyS0 reboot=k panic=1 pci=off tsc=reliable ipv6.disable=1 root=/dev/vda quiet"
        },
        "machine-config": {
          "name": "abc",
          "vcpu_count": 2,
          "mem_size": 268435456,
          "omit_vm_memory": false
        },
        "drive": [
          {
            "drive_id": "rootfs",
            "path_on_host": "/path/to/rootfs.ext4",
            "direct": true,
            "read_only": false,
            "serial_num": "abcd"
          }
        ],
        "net": [
          {
            "iface_id": "net0",
            "host_dev_name": "tap0",
            "mac": "0e:90:df:9f:a8:88"
          }
        ],
        "console": {
          "console_id": "charconsole0",
          "socket_path": "/path/to/console.socket"
        },
        "serial": {
          "stdio": true
        },
        "vsock": {
          "vsock_id": "vsock-123321132",
          "guest_cid": 4
        }
      }
      
      1. 运行StratoVirt,读取json文件配置创建并启动虚拟机。
      $ /path/to/stratovirt \
          -config /home/config.json \
          -api-channel unix:/tmp/stratovirt.socket
      

      执行成功后,虚拟机创建并启动成功。

      文档捉虫

      “有虫”文档片段

      问题描述

      提交类型 issue

      有点复杂...

      找人问问吧。

      PR

      小问题,全程线上修改...

      一键搞定!

      问题类型
      规范和低错类

      ● 错别字或拼写错误;标点符号使用错误;

      ● 链接错误、空单元格、格式错误;

      ● 英文中包含中文字符;

      ● 界面和描述不一致,但不影响操作;

      ● 表述不通顺,但不影响理解;

      ● 版本号不匹配:如软件包名称、界面版本号;

      易用性

      ● 关键步骤错误或缺失,无法指导用户完成任务;

      ● 缺少必要的前提条件、注意事项等;

      ● 图形、表格、文字等晦涩难懂;

      ● 逻辑不清晰,该分类、分项、分步骤的没有给出;

      正确性

      ● 技术原理、功能、规格等描述和软件不一致,存在错误;

      ● 原理图、架构图等存在错误;

      ● 命令、命令参数等错误;

      ● 代码片段错误;

      ● 命令无法完成对应功能;

      ● 界面错误,无法指导操作;

      风险提示

      ● 对重要数据或系统存在风险的操作,缺少安全提示;

      内容合规

      ● 违反法律法规,涉及政治、领土主权等敏感词;

      ● 内容侵权;

      您对文档的总体满意度

      非常不满意
      非常满意
      提交
      根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
      文档捉虫
      编组 3备份