virt-install
概述
参考:
virt-install 是一个命令行工具,用于通过 Libvirt 管理程序管理库创建新的 KVM、Xen 或 Linux 容器。请参阅本文档末尾的示例部分以快速入门。
virt-manager 在图形化界面创建的虚拟机本质上就是调用的 virt-install 命令在系统中执行的。virt-manager 创建的虚拟机生成的 xml 文件可以推导出 virt-install 创建同样虚拟机所需要使用到的参数。
virt-install 命令中很多参数都可以在 XML 文件中找到对应的配置。比如 --memory
的全部可配置参数可以在 https://libvirt.org/formatdomain.html#memory-allocation 这里找到。
Syntax(语法)
virt-install –name NAME –memory MB STORAGE INSTALL [OPTIONS]
许多参数都有子选项,要查看与该参数相关联的子选项的完整列表使用例子中类似的命令,例如:virt-install –disk=?
随着版本的更新,很多选项都会被更好的选项而替代,那些被弃用的选项可能不会在笔记中出现,具体详见官方文档。
有几个参数是在使用 libvirt 工具安装虚拟机时必须指定的:
- –name is required
- –memory amount in MiB is required
- –disk storage must be specified (override with –disk none)
- 安装方式
- –location URL, –cdrom CD/ISO, –pxe, –import, –boot hd|cdrom|…
注意: 在创建虚拟机时,我们一般都会指定一下虚拟机的系统类型,以便优化 virtio 等性能相关功能。所有 virt-manager 支持的虚拟机列表可以通过
virt-install --osinfo list
命令列出。
GENERAL OPTIONS(通用选项)
- -n, –name STRING # 指定 VM 名称,必须要全局唯一
- –memory # 设定 VM 的内存大小,单位为 MiB
- --vcpus=VCPU[,maxvcpus=MAX][,sockets=NUM][,cores=NUM][,threads=NUM] # 设定 VCPU 的个数,最大数,CPU 插槽数,内核数,线程数
- --cpu=CPU # 设定 CPU 的型号及特性,如 coreduo 等,可以使用 kvm -cpu ? 来获取支持的 CPU 模式
INSTALLATION OPTIONS(安装选项)
- -c, –cdrom=STRING # 设定从光盘介质安装
- -l, –location OPTIONS # 指定本地安装介质
- –import # 使用已经存在的磁盘镜像构建 VM。比如通过一个已经正常运行 VM 的文件
Guest OS OPTIONS(虚拟机操作系统选项)
- –os-variant, –osinfo OSNAME # 指定要虚拟机的操作系统的信息。常用来优化 virtio 等性能相关功能。OSNAME 可用的值可以用过
virt-install --osinfo list
命令列出。- 注意,–osinfo 是新版本的名称
STORAGE OPTIONS(存储选项)
–disk
--disk /Some/Storage/Path[,OPT1=VAL1][,OPT2=VAL2][,…..]
设置 VM 存储介质,比如最常见的就是 /var/lib/libvirt/images/XXX.qcow2 这种,virt-install 会自动生成目标文件所在路径,并记录成存储池。
除了 VM 本身 OS 的存储介质,还可以设置诸如 cdrom 之类的存储介质。
SUB_OPTIONS:
- device=STRING # 指定设备类型,如 cdrom,disk。
默认值: disk
- bus=STRING # 指定磁盘总线类型,如 ide、scsi、usb、virtio、xen
- size= # 指定新磁盘映像的大小,单位为 GB
- cache= # 指定缓存类型,如 none、writethrouth、writeback
- format= # 指定磁盘映像格式,如 qcow2、raw、vmdk 等
NETWORKING OPTIONS(网络选项)
设置 VM 要使用的网络以便连接到宿主机上。说白了,就是告诉 qemu-system 要模拟什么样的网卡,以及要连接到宿主机的哪个网络设备上。可以在 Domain 中找到更多关于网络的 XML 配置。
如果省略 –network,则将在来 VM 中创建单个NIC(网卡)。如果主机中有一个连接了物理接口的桥接设备,则该设备将用于连接。否则,将使用称为 default 的虚拟网络。可以多次指定此选项以设置多个NIC。
–network
网络选项分两部分,这是网络类型及其名称,以及为这个类型的网络设置运行时行为
-w,–network TYPE,OPT1=VAL1,OTP2=VAL2,……
TYPE
- bridge=BridgeName # 指定网络连接类型为 bridge 桥接模式,并选择用哪个桥
- network=STRING # 连接到
virsh net-list
命令列出的虚拟网络中。选项的值是虚拟网络的名称
SUB_OPTIONS:
- model=STRING # 指定 GuestOS 中的设备型号,如 e1000、virtio、rt18193 等
- mac=STRING # 指定 mac 地址,
默认值:随机
GRAPHICS OPTIONS(图形选项)
这个选项并不是为 VM 设置任何与显示有关的虚拟硬件,而是指我们如何访问 VM 的图形界面。可以在Domain 中找到更多关于连接 VM 图形界面的 XML 配置。
注意,如果想要使用图形界面安装系统,则必须要配置图形选项,否则无法连接到为 VM 虚拟显卡。
如果未指定图形相关选项,则 virt-install 将会在 ${DISPLAY}
变量被设置时选择合适的图形与 VM 的虚拟显卡对接。否则,默认为 --graphics none
。
–graphics
–graphics TYPE,OPT1=ARG1,OPT2=ARG2,… #
TYPE:
- vnc # 在来宾中设置虚拟控制台并将其导出为主机中的 VNC 服务器。除非同时提供端口参数,否则 VNC 服务器将运行在 5900 或以上的第一个空闲端口号上。分配的实际 VNC 显示可以使用 vncdisplay 命令到 virsh 获得(或者可以使用 virt-viewer(1) 来处理这个细节以供使用)。
- spice # 使用 Spice 协议导出来宾的控制台。 Spice 允许高级功能,如音频和 USB 设备流,以及改进的图形性能。
- none # 不会为来宾分配图形控制台。来宾可能需要在来宾的第一个串行端口上配置文本控制台(这可以通过 –extra-args 选项完成)。命令“virsh console NAME”可用于连接串行设备。
SUB_OPTIONS:
- listen=STRING # 指定 vnc 监听的地址(默认值通常为 127.0.0.1。i.e.仅限本地主机使用),如果配置 0.0.0.0,则可以被非宿主机的设备通过宿主机的 IP 与 PORT 来进行 vnc 访问
- port=NUM # 指定访问该 VM 的 vnc 所使用的端口
其他选项
–autoconsole STRING # 在使用 virt-install 创建虚拟机时,将要默认启用的交互式控制台。可用的值有 graphical、text、none。
- 这个选项不是必须的,默认行为是自适应的,取决于 VM 的配置方式。
–noautoconsole # 与 --autoconsole none
一样。
推荐使用 –noautoconsole,这样执行 virt-install 命令创建虚拟机时不会自动打开 virt-viewer,x11 转发还是比较卡的。推荐使用 VNC 连接端口以访问虚拟机的图像界面。
VIRTUALIZATION OPTIONS(虚拟化选项)
DEVICE OPTIONS(设备选项)
指定文本控制台、声音设备、串行接口、并行接口、显示接口等
- –serial TYPE,OPT1=VAL1,OPT2=VAL2,… # 指定一个串行设备附加到 VM,TYPE 包括 pty(伪终端)等
- --console= # 指定启动的控制台
MISCELLANEOUS OPTIONS(其他选项)
应用示例
使用本地文件当做磁盘镜像,VM 名字为 test,1024M 大小的内存,1 个 CPU,指定操作系统版本为 centos7,指定所使用的存储文件为 /var/lib/images/test.qcow2(该文件会自动创建),指定网络桥接到 br0 上、模式为 virtio,指定图形模式为 vnc、把 vnc 暴露到宿主机上、监听端口为 5910
virt-install --import --name test \
--memory 2048 --vcpus 2 \
--os-variant centos7.0 \
--disk /var/lib/libvirt/images/test/test.qcow2,size=100 \
--network bridge=br0,model=virtio \
--graphics vnc,listen=0.0.0.0,port=5910
使用 cdrom 安装系统
virt-install --name centos7 \
--memory 4096 --vcpus 2 \
--os-variant centos7.0 \
--disk /var/lib/libvirt/images/test/centos7.qcow2,size=100,bus=virtio \
--network bridge=br0,model=virtio \
--graphics vnc,listen=0.0.0.0,port=5911 \
--noautoconsole \
--cdrom /var/lib/libvirt/iso/CentOS-7-x86_64-DVD-2009.iso
创建完成后,可以使用 virt-viewer 访问虚拟机,也可以使用 VNC 连接到 5911 以访问虚拟机,然后开始安装系统。
这里使用了 –noautoconsole,所以不会自动打开 virt-viewer,x11 转发还是比较卡的,推荐使用 VNC 连接端口以访问虚拟机的图像界面 –os-variant 可用的值可以用过
virt-install --osinfo list
命令列出
这是最基本的创建方式,virt-install 会自动创建很多默认的虚拟设备以满足所需。我们只需要指定网络、连接显示的方式、系统版本、cpu、内存即可
其他安装
爱快,使用通用的 linux
virt-install --name ikuaios \
--memory 2048 --vcpus 1 \
--os-variant linux2022 \
--disk /var/lib/libvirt/images/ikuaios.qcow2,size=30,bus=virtio \
--network bridge=br0,model=virtio \
--network bridge=br1,model=virtio \
--graphics vnc,listen=0.0.0.0,port=5901 \
--noautoconsole \
--cdrom /var/lib/libvirt/iso/iKuai8_x64_3.7.6_Build202309081651.iso
ChatGPT 通过 xml 文件推倒出来的 virt-install 参数
virt-install \
--name=centos7-2009 \
--memory=67108864 \
--vcpus=2 \
--cpu host-passthrough \
--os-type=linux \
--os-variant=centos7 \
--boot menu=off \
--disk path=/var/lib/libvirt/images/centos7-2009.qcow2,device=disk,bus=virtio \
--network bridge=virbr0,model=virtio \
--graphics none \
--console pty,target_type=serial
反馈
此页是否对你有帮助?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.