libvirt创建虚拟机如何通过命令行完成详细步骤?,新手命令行操作,

新手通过命令行创建libvirt虚拟机,最直接的一条路是:先确认CPU支持虚拟化,安装libvirt和virtinst包,然后用virt-install命令指定镜像、内存、CPU和磁盘,最后用virsh list查看运行状态。 我见过不少刚接触KVM的人一上来就抄XML模板,结果连Windows和Linux的引导参数都分不清,实际从virt-install入手会轻松很多,等你能熟练用virsh管理一台机器后,再去看XML定义也不迟。

linux命令行创建虚拟机步骤:先从环境准备开始

命令行创建虚拟机最容易忽略的是宿主机环境,很多时候你执行virt-install报“kvm不可用”或“no supported architecture”,不是命令写错了,而是底层没准备好。

检查CPU虚拟化标志和KVM模块

虚拟化技术依赖CPU指令集,Intel对应vmx,AMD对应svm,先用这个命令看看:

grep -E --color '(vmx|svm)' /proc/cpuinfo

如果没有任何输出,说明BIOS里没开虚拟化,或者用的云服务器不支持嵌套虚拟化,多数情况下,物理机服务器默认开启,但部分品牌机需要进BIOS设置,开启后再看下面一步。

接着确认KVM模块是否已经加载:

lsmod | grep kvm

出现了kvm_intel或kvm_amd就说明模块已经在内核里了,如果没有,手动加载:

modprobe kvm_intel   # Intel CPU
modprobe kvm_amd     # AMD CPU

加载后把模块写入开机加载配置文件,避免重启后失效,这一步做好,后面创建虚拟机就不会因为“权限不足”或“不支持KVM”卡壳。

centos7安装kvm虚拟机命令:装齐这三个包

业内专家指出,libvirt是目前管理多种虚拟化后端的事实标准API,在CentOS 7上,你不需要从源码编译,用yum就能安装完整工具链,打开终端,执行:

yum install -y qemu-kvm libvirt virt-install bridge-utils
  • qemu-kvm提供KVM后端,负责CPU和内存的模拟。
  • libvirt提供统一管理API和virsh命令行工具。
  • virt-install命令行创建虚拟机的主力工具,自动生成XML。
  • bridge-utils用于创建和管理虚拟网桥,虚拟机网络通常依赖它。

如果用的Ubuntu或Debian,包名略有不同,比如qemu-kvm和libvirt-daemon-system,但作用一样,这里以CentOS 7作为场景,命令自成一派。

安装完成后启动libvirtd服务:

systemctl start libvirtd
systemctl enable libvirtd
systemctl status libvirtd

libvirt创建虚拟机如何通过命令行完成详细步骤?,新手命令行操作,

确保状态是active (running),另外可以用virsh version快速验证libvirt是否正常识别到QEMU驱动。

使用virt-install创建虚拟机全过程:一条命令完成九成工作

环境就绪后,不需要急着写XML,virt-install会把镜像、磁盘、网络、控制台全部串起来,你只需要准备好一个ISO镜像和存放磁盘的目录。

准备ISO镜像和虚拟机磁盘目录

建议把镜像专门放一个目录管理,

mkdir -p /data/iso
mkdir -p /data/vm-images

把CentOS 7或Ubuntu的ISO文件上传到/data/iso/,磁盘目录保持独立,后面创建多台虚拟机时不会乱。

一行virt-install命令的核心参数拆解

以创建一台CentOS 7虚拟机为例:

virt-install 
--name centos7-test 
--memory 2048 
--vcpus 2 
--disk path=/data/vm-images/centos7-test.qcow2,size=20,format=qcow2 
--cdrom /data/iso/CentOS-7-x86_64-Minimal-2009.iso 
--os-variant centos7.0 
--network bridge=virbr0 
--graphics none 
--console pty,target_type=serial

每条参数都对应虚拟机的核心配置:

  • –name 虚拟机名称,后面用virsh管理时都靠它区分。
  • –memory 2048 分配2GB内存,单位是MiB,所以2048就是2GB。
  • –vcpus 2 分配2个虚拟CPU核心。
  • –disk path=… 指定磁盘路径,如果文件不存在,virt-install会自动创建qcow2格式镜像,size=20表示初始容量20GB。
  • –cdrom 指定安装镜像ISO路径。
  • –os-variant 提供操作系统类型优化,可以用osinfo-query os查看当前virsh支持的变体列表,不确定时直接写centos7.0或linux2016,别写错导致默认跑IDE模式。
  • –network bridge=virbr0 连接到默认虚拟网桥,libvirt安装后会自动创建一个名为virbr0的NAT网桥。
  • –graphics none –console pty,target_type=serial 无图形界面,通过串口控制台交互,如果你在本地有VNC客户端,也可以去掉这两行并指定--vnc。

执行后,系统会进入安装引导界面,和物理机安装几乎没有区别,如果你是纯SSH连接,看到“Starting installer”后依然能通过串口完成所有交互。

创建完成后用virsh list检查状态

安装过程结束后,回到宿主机命令行,用:

virsh list --all

里面对应centos7-test的状态应该变成shut off或running,如果安装过程中你没有自动重启,就手动启动:

libvirt创建虚拟机如何通过命令行完成详细步骤?,新手命令行操作,

virsh start centos7-test

之后用virsh console centos7-test进入虚拟机控制台,注意串口控制台使用Ctrl+]退出。

virsh创建虚拟机命令行示例:手动定义XML的进阶操作

virt-install足够覆盖多数场景,但当你需要精确控制设备顺序、自定义CPU拓扑、或从线上环境复制一台虚拟机时,手写domain XML才是正路,virsh把你的XML翻译成QEMU参数,过程透明得多。

一个最小可用的domain XML长什么样

以下是一个能启动的最小XML文件,先创建磁盘镜像:

qemu-img create -f qcow2 /data/vm-images/manual-vm.qcow2 10G

然后新建manual-vm.xml:

<domain type='kvm'>
  <name>manual-vm</name>
  <memory>2097152</memory>
  <vcpu>2</vcpu>
  <os>
    <type arch='x86_64' machine='pc'>hvm</type>
    <boot dev='hd'/>
  </os>
  <devices>
    <disk type='file' device='disk'>
      <source file='/data/vm-images/manual-vm.qcow2'/>
      <target dev='vda' bus='virtio'/>
    </disk>
    <interface type='bridge'>
      <source bridge='virbr0'/>
    </interface>
    <console type='pty'>
      <target type='serial' port='0'/>
    </console>
  </devices>
</domain>

最关键的三处:

  • <name> 唯一标识虚拟机名称。
  • <memory> 单位是KiB,所以2097152 KiB等于2GiB。
  • <disk> 中target dev='vda'表示virtio磁盘,不能写成sda,否则在部分系统里无法识别引导设备。

通过virsh define导入并启动

手写XML不直接启动虚拟机,而是先定义:

virsh define /path/to/manual-vm.xml

执行后,libvirt把XML复制到/etc/libvirt/qemu/目录,然后再启动:

virsh start manual-vm

如果想验证XML语法是否正确,可以先用:

virsh define --validate manual-vm.xml

如果全部通过,再用virsh list --all看到新加的虚拟机。

virt-install与virsh define的对比

行业共识认为,virt-install更重视易用性,而virsh define更重视透明性,两者不是互斥的,virt-install在最后阶段生成的XML也可以导出留档:

libvirt创建虚拟机如何通过命令行完成详细步骤?,新手命令行操作,

virsh dumpxml centos7-test > backup.xml
维度 virt-install virsh define + start
学习曲线 低,命令参数即需求 高,需要理解XML结构
创建速度 快,一条命令完成 慢,手写或粘贴模板
适用场景 快速部署、批量创建 精细控制、从模板复制
自动化友好度 高,适合脚本循环 中等,需要额外维护XML文件
错误排查 参数错误容易定位 语法错误需要逐行检查

新手建议先用virt-install跑通流程,再在遇到特殊需求时转向XML,两条路最终都能创建libvirt虚拟机。

libvirt创建虚拟机命令行常见问题解答

创建时报错“no supported architecture”怎么处理?

这个错误通常出现在手写XML时指定了宿主机不支持的machine类型或arch,先用virsh capabilities查看当前libvirt支持哪些arch和machine,如果输出里没有x86_64,说明qemu-system-x86包没装好,另外确认XML的<type arch='x86_64' machine='pc'>与宿主机架构一致,多数情况下,重新安装qemu-kvm并重启libvirtd就能解决。

用命令行创建的虚拟机如何设置固定IP?

virt-install时如果不指定网络,默认走virbr0的NAT,IP由内置的DHCP分配,要固定IP,进虚拟机系统内部修改网络配置,CentOS 7改/etc/sysconfig/network-scripts/ifcfg-eth0,把BOOTPROTO改为static并写入IP、网关和DNS;Ubuntu则改/etc/netplan/.yaml,宿主机侧用virsh domifaddr 虚拟机名查看当前分配的IP,再配合静态地址保证重启不变。

磁盘空间不足时如何扩展qcow2镜像?

先关闭虚拟机,执行:

qemu-img resize /data/vm-images/manual-vm.qcow2 +20G

然后启动虚拟机,进入系统后用lsblk看到磁盘容量已变大,但分区还没扩展,CentOS下用growpart /dev/vda 1扩展分区,再xfs_growfs /或resize2fs /dev/vda1完成文件系统在线增长,注意raw格式镜像也可以用同样的qemu-img resize方法,但部分老版本不支持shrinking,扩容前先备份镜像。

就是从零开始用命令行创建libvirt虚拟机的最短路径,把环境检查、virt-install、virsh管理这三步跑通,你就已经能应对多数日常创建任务了,之后再逐步接触XML定义,会让你的虚拟化运维能力更上一层楼。

图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/912294.html

赞 (0)
上一篇 2026年10月10日 17:14
下一篇 2026年10月10日 17:24

相关推荐

  • 中文域名厦门注册多少钱?厦门中文域名注册价格

    在2026年的数字营销环境中,注册“中文域名厦门”不仅是品牌本土化战略的关键一步,更是提升百度搜索引擎自然排名、降低用户记忆成本的高性价比选择,随着百度算法对语义理解和用户体验权重的持续加码,传统拼音或英文域名在本地生活服务领域的转化效率逐渐显露疲态,对于深耕福建地区或希望强化地域属性的企业而言,中文域名已成为……

    2026年6月30日
    01233
  • 如何设置网站域名?,设置网站域名需要注意什么?

    设置网站域名,必须按顺序完成域名注册、域名解析、域名绑定与网站备案,其中备案环节因服务器地域不同而存在差异,建议在购买域名前确认服务器所在地,域名注册:选择适合的域名后缀与注册商域名注册是设置网站域名的第一步,直接影响后续SEO表现与品牌认知,2026年,全球域名保有量已突破2亿个,其中.com、.cn、.ne……

    2026年8月6日
    01303
    • 服务器间歇性无响应是什么原因?如何排查解决?

      根源分析、排查逻辑与解决方案服务器间歇性无响应是IT运维中常见的复杂问题,指服务器在特定场景下(如高并发时段、特定操作触发时)出现短暂无响应、延迟或服务中断,而非持续性的宕机,这类问题对业务连续性、用户体验和系统稳定性构成直接威胁,需结合多维度因素深入排查与解决,常见原因分析:从硬件到软件的多维溯源服务器间歇性……

      2026年1月10日
      020
  • 微信域名怎么填写,微信域名填写方法

    在微信生态中填写域名时,必须使用已通过ICP备案且接入微信域名安全检测的HTTPS网址,并建议通过微信官方提供的域名配置接口进行白名单添加,以确保链接在聊天、朋友圈及公众号中不被拦截或显示“已停止访问该网页”,微信作为国内最大的社交闭环平台,其域名风控机制极为严格,2026年,随着《网络信息内容生态治理规定》的……

    2026年5月14日
    03742
  • 怎么注册香港域名,香港域名注册流程及注意事项

    对于面向全球或大中华区市场的企业而言,选择 .hk 域名是建立品牌公信力、优化搜索引擎排名及规避网络监管的最佳策略,其注册流程已高度数字化,通过具备 ICANN 认证的注册商(如酷番云)可实现“实名认证 + 域名注册”的一站式极速完成,全程通常仅需 24 小时,香港域名 (.hk) 因其独特的法律地位与网络环境……

    2026年4月27日
    07004

发表回复

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

评论列表(4条)

  • brave544love的头像
    brave544love 2026年10月10日 17:18

    读了这篇文章,我深有感触。作者对分配的理解非常深刻,论述也很有逻辑性。内容既有理论深度,又有实践指导意义,确实是一篇值得细细品味的好文章。希望作者能继续创作更多优秀的作品!

    • 淡定ai424的头像
      淡定ai424 2026年10月10日 17:20

      @brave544love:读了这篇文章,我深有感触。作者对分配的理解非常深刻,论述也很有逻辑性。内容既有理论深度,又有实践指导意义,确实是一篇值得细细品味的好文章。希望作者能继续创作更多优秀的作品!

  • 山山5131的头像
    山山5131 2026年10月10日 17:18

    这篇文章的内容非常有价值,我从中学习到了很多新的知识和观点。作者的写作风格简洁明了,却又不失深度,让人读起来很舒服。特别是分配部分,给了我很多新的思路。感谢分享这么好的内容!

  • 茶bot920的头像
    茶bot920 2026年10月10日 17:19

    读了这篇文章,我深有感触。作者对分配的理解非常深刻,论述也很有逻辑性。内容既有理论深度,又有实践指导意义,确实是一篇值得细细品味的好文章。希望作者能继续创作更多优秀的作品!