virt-install是一个使用libvirt库创建虚拟机或容器的命令行工具,参数比较多,这里仅记录使用该工具创建虚拟机的简单参数。

基本参数

  • --name
    必须的虚拟机名,唯一的。
  • --memory
    必须的内存容量,单位MB。
  • --vcpus
    可选的虚拟机cpu数量。更进一步可以通过该参数设置cpu热拔插和其他更复杂的拓扑结构。
  • --os-variant
    可选项,指定guest操作系统,用于优化配置。可以通过命令osinfo-query os查询支持的操作系统类型。
  • --graphics
    可选项,指定guest图像显示配置,如果不需要图像显示,可以使用--graphics none
  • --console
    可选项,virt-install会默认配置合适的console,可以不填。

存储参数

  • --disk
    指定该虚拟机使用的存储,有多种介质可选。比如指定本地文件可以使用path选项,如果指定文件不存在还需要设置size参数。如果不配置磁盘可以使用--disk none,一般用不到。

安装源参数

安装源可以有多种多则。常用的两种:

  • --location
    指定新创建虚拟机的安装介质。使用该参数指定安装介质时,默认是看不到guest安装过程中的输出文本的,需要另外配置参数--extra-args 'console=ttyS0'
  • --import
    指定新创建虚拟机跳过安装阶段,使用第一个--disk参数指定的磁盘做启动设备。

网络连接

  • --network
    指定虚拟机连接的网络配置,常用的两种:
    • bridge=BRIDGE
      指定连接到host上名为BRIDGE的虚拟网桥上。
    • network=NAME
      指定连接到virsh管控的名为NAME的network上。

例子

创建一个虚拟机并指定安装镜像
1
2
3
4
5
6
7
8
9
10
11
12
#! /usr/bin/env bash

virt-install \
--name domain3 \
--memory 1024 \
--vcpus 2 \
--network network=default \
--graphics none \
--disk path=/var/kvm/images/domain3.img,size=30 \
--os-variant centos7.0 \
--location /var/kvm/CentOS-7-x86_64-Minimal-1804.iso \
--extra-args 'console=ttyS0'

上面的例子如果缺少--graphics none,开始安装后将不会自动连接到console,可以使用命令virsh console domain3连接到console进行文本模式的安装过程。操作系统安装完成后可能会处于关机状态,可以使用命令virsh start domain3开机。

可以使用如下命令从domain3克隆一个新虚拟机domain4并指定存储文件,其中name和file参数可以使用--auto-clone替代。克隆的虚拟机必须处于shutdown或pause状态。
virt-clone --original domain3 --name domain4 --file /var/kvm/images/domain4.img

对domain4关机并从libvirt中删除。

virsh shutdown domain4,这里如果不能正常关机可以使用virsh destroy domain4做断电操作。
virsh undefine domain4

这时domain4的磁盘文件并没有被删除,这里使用该磁盘文件import一个新虚拟机domain5。

从旧磁盘文件导入创建一个新虚拟机
1
2
3
4
5
6
7
8
9
10
11
#! /usr/bin/env bash

virt-install \
--name domain5 \
--memory 2048 \
--vcpus 3 \
--network network=default \
--graphics none \
--disk path=/var/kvm/images/domain4.img \
--os-variant centos7.0 \
--import