kvm命令行启动如何操作?

kvm 命令行启动是一种通过直接输入指令来创建和管理虚拟机的方式,相比图形化界面,命令行启动具有更高的灵活性和自动化程度,尤其适合服务器环境或需要批量部署虚拟机的场景,以下将详细介绍 kvm 命令行启动的完整流程,包括环境准备、命令参数解析、虚拟机创建、磁盘管理、网络配置及常见问题处理等内容。

kvm 命令行启动
(图片来源网络,侵删)

环境准备

在使用 kvm 命令行启动虚拟机前,需确保宿主机系统满足基本要求,检查 cpu 是否支持虚拟化技术(intel vt-x 或 amd-v),可通过命令 grep -E 'vmx|svm' /proc/cpuinfo 验证,若输出结果为空,则需在 bios 中开启虚拟化支持,安装必要的软件包,以 ubuntu 系统为例,执行 sudo apt update && sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst,qemu-kvm 提供 kvm 内核模块,libvirt 用于虚拟机管理,bridge-utils 实现网络桥接,安装完成后,确认用户是否加入 libvirt 和 kvm 用户组,避免权限问题:sudo usermod -aG libvirt,kvm $user,随后重新登录使配置生效,启动 libvirt 服务并设置为开机自启:sudo systemctl enable --now libvirtd,使用 virsh list --all 验证 libvirt 是否正常工作。

虚拟机磁盘准备

虚拟机的磁盘文件是虚拟机运行的基础,kvm 支持多种磁盘格式,如 raw、qcow2 等,qcow2 格式支持快照、压缩等功能,推荐使用,创建磁盘文件可通过 qemu-img 命令实现,例如创建一个 20gb 的 qcow2 格式磁盘:qemu-img create -f qcow2 /var/lib/libvirt/images/vm1.qcow2 20G,若需预分配空间(避免磁盘碎片),可添加 -o preallocation=full 参数;若需创建基于模板磁盘的快照磁盘,可使用 -b 参数指定 backing file,如 qemu-img create -f qcow2 -b /var/lib/libvirt/images/template.qcow2 /var/lib/libvirt/images/vm1.qcow2,磁盘创建后,可通过 qemu-img info /var/lib/libvirt/images/vm1.qcow2 查看磁盘详细信息,包括格式、大小、虚拟大小等。

网络配置

kvm 虚拟机网络模式常见有 nat、桥接(bridge)、仅主机(host-only)等,桥接模式可使虚拟机直接连接到物理网络,获得独立 ip,适合生产环境,配置桥接网络需先创建网桥接口,编辑 /etc/netplan/01-netcfg.yaml(以 netplan 为例),添加如下配置:

network:
  version: 2
  ethernets:
    ens33:  # 物理网卡名称
      dhcp4: no
  bridges:
    br0:
      interfaces: [ens33]
      dhcp4: yes

执行 sudo netplan apply 使配置生效,随后通过 ip a 查看 br0 接口是否创建成功,在 libvirt 中,默认会创建一个 virbr0 nat 网络,若需使用自定义桥接网络,可在创建虚拟机时通过 --network bridge=br0 参数指定。

kvm 命令行启动
(图片来源网络,侵删)

命令行启动虚拟机

使用 virt-install 命令可一站式完成虚拟机创建与启动,其常用参数如下表所示:

参数作用示例
--name指定虚拟机名称--name vm1
--memory分配内存大小(mb)--memory 2048
--vcpus分配 cpu 核心数--vcpus 2
--disk指定磁盘路径及格式--disk path=/var/lib/libvirt/images/vm1.qcow2,size=20,format=qcow2
--cdrom指定安装镜像路径--cdrom /path/to/ubuntu.iso
--network配置网络模式--network bridge=br0
--os-variant指定操作系统类型--os-variant ubuntu22.04
--graphics图形显示方式(none 表示无图形)--graphics none
--console配置控制台输出--console pty,target_type=serial
--import从现有磁盘导入系统(无需安装)--import

示例1:全新安装虚拟机

sudo virt-install \
--name vm1 \
--memory 2048 \
--vcpus 2 \
--disk path=/var/lib/libvirt/images/vm1.qcow2,size=20,format=qcow2 \
--cdrom /home/user/ubuntu-22.04.3-live-server-amd64.iso \
--network bridge=br0 \
--os-variant ubuntu22.04 \
--graphics none \
--console pty,target_type=serial

该命令将以命令行方式启动虚拟机安装过程,安装完成后可通过 virsh start vm1 启动虚拟机。

示例2:从现有磁盘导入虚拟机

若已有安装好系统的磁盘文件,可直接导入并启动:

sudo virt-install \
--name vm2 \
--memory 2048 \
--vcpus 2 \
--disk path=/var/lib/libvirt/images/vm2.qcow2 \
--import \
--network bridge=br0 \
--os-variant ubuntu22.04 \
--graphics none \
--console pty,target_type=serial

虚拟机管理

启动虚拟机后,可通过 libvirt 命令进行管理。virsh list 查看运行中的虚拟机,virsh list --all 查看所有虚拟机(包括关闭状态);virsh start vm1 启动虚拟机,virsh shutdown vm1 正常关机,virsh destroy vm1 强制关闭;virsh undefine vm1 删除虚拟机配置文件(不删除磁盘文件),若需进入虚拟机控制台,可使用 virsh console vm1,需确保虚拟机系统安装了 serial 终端(如 ubuntu 安装时需选择 “SSH server” 并勾选 “OpenSSH server”)。

kvm 命令行启动
(图片来源网络,侵删)

常见问题处理

  1. 启动时报错 “Permission denied”:通常是由于用户未加入 libvirt 或 kvm 用户组,需执行 sudo usermod -aG libvirt,kvm $user 并重新登录。
  2. 网络不通:检查桥接网络是否配置正确,确保虚拟机网卡模式为 bridge,且物理网卡已加入网桥;若使用 nat 模式,检查防火墙是否阻止了端口转发。
  3. 磁盘无法识别:确认磁盘路径是否存在,格式是否正确,可通过 qemu-img check 检查磁盘文件完整性。

相关问答FAQs

Q1:如何修改已创建虚拟机的配置(如内存、cpu)?
A1:使用 virsh edit vm1 命令编辑虚拟机配置文件,在 <memory><vcpu> 标签中修改内存大小(单位为 kb)和 cpu 核心数,保存后执行 virsh define vm1 使配置生效,若虚拟机正在运行,需执行 virsh reboot vm1 重启生效。

Q2:如何为虚拟机添加新磁盘?
A2:首先创建新的磁盘文件:qemu-img create -f qcow2 /var/lib/libvirt/images/vm1_disk2.qcow2 10G,然后使用 virsh attach-disk vm1 /var/lib/libvirt/images/vm1_disk2.qcow2 vdb --persistent 命令将磁盘附加到虚拟机,vdb 为虚拟机内的设备名,--persistent 表示配置持久化,进入虚拟机系统后,使用 fdisk -l 查看新磁盘,分区格式化后即可使用。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/463572.html<

(0)
运维的头像运维
上一篇2025-11-13 01:06
下一篇 2025-11-13 01:11

相关推荐

  • cmd at命令实例有哪些具体用法?

    在Windows操作系统中,命令提示符(CMD)是一个强大的工具,它允许用户通过文本命令与系统进行交互,at命令是一个计划任务工具,用于在指定的时间运行命令或程序,尽管在较新的Windows版本中(如Windows 8和Windows 10),at命令已被schtasks命令取代,但了解at命令的实例和用法仍然……

    2025-11-20
    0
  • bat如何启动服务?命令格式是怎样的?

    在Windows操作系统中,BAT脚本(批处理文件)是一种强大的工具,可以通过简单的命令实现自动化操作,其中启动服务是常见的应用场景,服务是Windows中在后台运行的应用程序,通常没有用户界面,用于提供系统功能或支持其他应用程序,通过BAT脚本启动服务,可以简化手动操作,提高管理效率,以下是关于使用BAT脚本……

    2025-11-20
    0
  • cmd命令如何获取当前时间戳?

    在Windows操作系统中,cmd命令是用户与系统交互的重要工具,而时间戳则是记录和追踪事件发生时间的关键数据,结合cmd命令与时间戳,可以实现日志记录、任务调度、文件管理等多种实用功能,本文将详细解析如何通过cmd命令获取、处理和应用时间戳,并通过具体示例和表格展示操作方法,获取当前时间戳的cmd命令在cmd……

    2025-11-20
    0
  • net命令建用户的具体步骤是什么?

    在Windows操作系统中,net命令是功能强大的网络命令行工具,其中通过net user子命令可以方便地创建、管理和删除用户账户,尤其适合管理员在无图形界面的服务器环境中进行用户管理操作,以下是关于使用net命令创建用户的详细说明,包括命令语法、参数详解及实际应用场景,net user命令的基本语法为:net……

    2025-11-20
    0
  • xp开机如何运行命令?

    在Windows XP系统中,开机时运行命令是一项非常实用的功能,它允许用户在系统启动过程中自动执行特定的程序或脚本,从而实现系统优化、软件自启动或任务自动化等目的,本文将详细介绍如何在Windows XP中设置开机自运行命令,包括通过系统配置工具、启动文件夹、注册表等多种方法,并附上注意事项和常见问题解答,W……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注