当前位置:

首页 > 系统应用 > KVM虚拟机的常用操作命令整理

KVM虚拟机的常用操作命令整理

创建虚拟机 第一步,咱们先通过一条命令来快速创建一个虚拟机。下面这个 virt-install 命令是个典型的例子,参数含义都写在注释里了: [root@localhost ~]# virt-install --name=centos1 \ # 定义虚拟机名称为 centos1 --ram 1024

创建虚拟机

第一步,咱们先通过一条命令来快速创建一个虚拟机。下面这个 virt-install 命令是个典型的例子,参数含义都写在注释里了:

[root@localhost ~]# virt-install --name=centos1 \            # 定义虚拟机名称为 centos1
--ram 1024 --vcpus=1 \                                      # 分配 1024MB 内存,1 个 vCPU
--disk path=/root/centos1.img,size=10 \                     # 创建 10GB 的磁盘镜像
--accelerate --cdrom /root/CentOS-6.5-x86_64-bin-DVD1.iso \ # 指定安装镜像,并启用加速
--graphics vnc,port=5921 --network bridge=br0               # 使用 VNC 图形界面(端口 5921),网络桥接到 br0

Virt的其他操作

虚拟机创建好后,日常管理离不开 virsh 命令。下面这些是运维中最常用的操作,直接敲命令就行:

[root@localhost /]# virsh start centos1       #启动虚拟机

[root@localhost /]# virt-viewer centos1       #如果有图形界面的话,可以进入虚拟机的界面

[root@localhost ~]# virsh shutdown centos1    #关闭虚拟机

[root@localhost /]# virsh reboot centos1      #重启虚拟机

[root@localhost /]# virsh suspend centos1     #暂停虚拟机

[root@localhost /]# virsh resume centos1      #恢复虚拟机

[root@localhost /]# virsh autostart centos1   #设置虚拟机随宿主机自动启动

当然,virsh 的功能远不止这些。为了便于查阅,这里把它的主要参数整理了一下:

  • autostart – 设置虚拟机自动启动
  • connect – 重新连接到 hypervisor
  • console – 连接到客户机控制台
  • create – 从一个 XML 文件创建虚拟机
  • start – 启动一个已定义但未运行的虚拟机
  • destroy – 强制停止(删除)一个虚拟机
  • define – 从 XML 文件定义(注册)一个虚拟机
  • domid – 将虚拟机名称或 UUID 转换为内部 ID
  • domuuid – 将虚拟机名称或 ID 转换为 UUID
  • dominfo – 查看虚拟机详细信息
  • domstate – 查看虚拟机当前状态
  • domblkstat – 获取虚拟机块设备状态
  • domifstat – 获取虚拟机网络接口状态
  • dumpxml – 以 XML 格式导出虚拟机配置
  • edit – 编辑虚拟机的 XML 配置文件
  • list – 列出所有虚拟机
  • migrate – 将虚拟机迁移到另一台主机
  • quit – 退出非交互式终端
  • reboot – 重启虚拟机
  • resume – 恢复一个被挂起的虚拟机
  • sa ve – 将虚拟机状态保存到文件
  • dump – 将虚拟机的内核转储到文件以便分析
  • shutdown – 优雅关闭虚拟机
  • setmem – 动态调整内存分配
  • setmaxmem – 调整最大内存限制值
  • suspend – 挂起虚拟机
  • vcpuinfo – 查看虚拟机的 vCPU 信息
  • version – 显示 virsh 版本

虚拟机克隆

如果需要部署多个配置相同的虚拟机,一个个安装太费时。这时 virt-clone 命令就派上大用场了,它能快速克隆出一个完全一样的副本:

# virt-clone --connect=qemu:///system -o centos1 -n centos3 -f  /root/centos3.img          #克隆centos1
正在克隆 centos1.img                                                             | 10.0 GB     00:07

Clone 'centos3' created successfully.

说到虚拟机管理工具,还有一个包不得不提:libguestfs-tools。它提供了一系列强大的离线管理功能,堪称运维利器。安装命令很简单:

[root@localhost ~]# yum -y install libguestfs-tools   #安装工具包

镜像文件离线管理

装好工具包,咱们来看看它的本事。首先,不用启动虚拟机,就能直接查看镜像文件内部有哪些目录:

[root@localhost ~]# virt-ls centos.img /home   #查看centos.img镜像文件中/home目录
tank

更厉害的是,还能直接从镜像里把文件拷贝出来,这在做故障排查或数据恢复时特别方便:

[root@localhost ~]# virsh list --all       #先确认一下有哪些虚拟机
 Id    名称                         状态
----------------------------------------------------
 1     centos1                        running
 2     centos6.5                      running
 -     arch                           关闭
 -     arch1                          关闭
 -     arch2                          关闭
 -     arch3                          关闭
 -     arch5                          关闭
 -     centos3                        关闭
 -     ubuntu                         关闭
 -     ubuntu1                        关闭

[root@localhost ~]# virt-copy-out -d centos1 /etc/passwd /tmp       #将centos1中的/etc/passwd文件拷贝到宿主机的/tmp目录下

检查虚拟机磁盘状态

想了解虚拟机的磁盘分区和使用情况,也有专门的命令。可以针对运行中的虚拟机:

[root@localhost ~]# virt-filesystems -d centos1
/dev/sda1
/dev/VolGroup/lv_root

也可以直接分析镜像文件:

[root@localhost ~]# virt-list-partitions /root/centos.img
/dev/sda1
/dev/sda2

甚至能像 Linux 下的 df 命令一样,查看详细的磁盘空间使用率:

[root@localhost ~]# virt-df centos.img
Filesystem                           1K-blocks       Used  A vailable  Use%
centos.img:/dev/sda1                    495844      34510     435734    7%
centos.img:/dev/VolGroup/lv_root       8780808    2842056    5492700   33%

挂载虚拟机磁盘

有时候需要直接修改虚拟机里的文件,可以把它整个磁盘挂载到宿主机上,像操作本地目录一样方便:

[root@localhost ~]# guestmount -a /root/centos.img -m /dev/VolGroup/lv_root --rw /mnt/usb
[root@localhost ~]# cd /mnt/usb/
[root@localhost usb]# ls
bin   dev  home  lib64       media  mnt  opt   root  selinux  sys  usr
boot  etc  lib   lost+found  misc   net  proc  sbin  srv      tmp  var

调整虚拟机内存

虚拟机运行后想调整内存大小?没问题,但要注意方法。直接编辑配置文件是行不通的,必须使用 virsh edit 命令:

[root@nfs ~]# virsh edit vm01  ##注意:不能用vi直接编辑配置文件,那样不生效

在打开的 XML 配置里,找到内存配置部分。注意这里的单位是 KB,比如 1GB 对应的是 1048576 KB:

  vm01
  df8604c1-dcf3-fa98-420f-6eea7b39c395
  1048576 ###本来开始设置为1G,现在这个单位是k
  1048576

如果想改成 1.5GB,需要先换算一下:

[root@nfs ~]# expr 1536 \* 1024
1572864

改好配置后,必须重启虚拟机才能生效。操作流程如下:

[root@nfs ~]# virsh list
 Id Name                 State
----------------------------------
  1 win2003              running
  3 vm01                 running

[root@nfs ~]# virsh  shutdown vm01 ###修改配置文件后需要重新启动下虚拟机,先关闭它
Domain vm01 is being shutdown

[root@nfs ~]# virsh list                      ###确认已经被关闭
 Id Name                 State
----------------------------------
  1 win2003              running

[root@nfs ~]# virsh start vm01            ###启动它
Domain vm01 started

[root@nfs ~]# virsh list
 Id Name                 State
----------------------------------
  1 win2003              running
  3 vm01                   running

最后,登录到虚拟机里用 free -m 命令检查一下,确认内存已经成功调整为 1.5GB:

[root@vm01 liuxiaojie]# free -m
             total       used       free     shared    buffers     cached
Mem:          1505        618        886          0         29        361
-/+ buffers/cache:        227       1277
Swap:         2000          0       2000

删除虚拟机

清理不再需要的虚拟机,通常分两步走:先用 virsh undefine 移除其配置定义,再手动删除对应的磁盘镜像文件。

[root@nfs qemu]# virsh undefine  vm01
[root@nfs qemu]# rm -f /home/data/vm01.img

强制删除运行中的域

值得注意的是,virsh undefine 命令即使对正在运行的虚拟机也能执行成功,但这只是删除了配置定义,虚拟机进程仍然在运行。想要彻底清理,还需要补一个 virsh destroy 命令来强制停止它。

来看一个完整的例子:

[root@nfs web01]# virsh list --all
 Id Name                 State
----------------------------------
  1 web01                running   ## 虚拟机正在运行
  - myweb01              shut off
  - myweb03              shut off
  - mywin2003            shut off
  - myxp                 shut off
  - xp                   shut off
[root@nfs web01]# virsh undefine web01   ## 先移除配置定义,此时虚拟机进程仍在跑
Domain web01 has been undefined
[root@nfs web01]# virsh list
 Id Name                 State
----------------------------------
  1 web01                running   ## 看,进程还在
[root@nfs web01]# virsh destroy web01   ## 再强制停止该进程
Domain web01 destroyed
[root@nfs web01]# virsh list --all    ## 现在,web01 已经从列表中彻底消失了
 Id Name                 State
----------------------------------
  - myweb01              shut off
  - myweb03              shut off
  - mywin2003            shut off
  - myxp                 shut off
  - xp                   shut off

到了这一步,如果再想通过定义文件恢复这个虚拟机,系统就会报错,提示找不到对应的文件了:

[root@nfs web01]# virsh define web01
error: Failed to open file 'web01': No such file or directory

所以,删除运行中的虚拟机时,务必确认两步操作都已完成,避免遗留僵尸进程。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
作者最新文章
系统应用
相关文章 更多
VMware虚拟机共享文件夹配置与读写验证教程
VMware虚拟机共享文件夹配置与读写验证教程

本文提供VMware虚拟机共享文件夹的配置与验证方法。核心步骤包括:确保VMware Tools已安装,在虚拟机设置中启用共享文件夹并添加主机目录,最后通过读写测试文件确认传输正常。适用于Windows及Linux虚拟机,旨在解决主机与虚拟机间文件交换问题。

解决MobaXterm连接不上虚拟机:Networkerror:Connectiontimedout问题
解决MobaXterm连接不上虚拟机:Networkerror:Connectiontimedout问题

MobaXterm连接虚拟机超时,常见原因为防火墙未关或IP地址变动。先执行systemctlstatus/stop/disablefirewalld关闭防火墙,再通过ifconfig查看虚拟机当前IP,与session中设置的地址比对并修正,即可恢复正常连接。

怎么通过 java -verbose:gc 虚拟机参数在控制台实时监控垃圾回收的运行频率与耗时
怎么通过 java -verbose:gc 虚拟机参数在控制台实时监控垃圾回收的运行频率与耗时

JDK GC日志配置:从传统参数到统一日志系统想实时监控Ja va虚拟机的垃圾回收频率和耗时?直接在启动参数里加上GC日志开关就行。但这里面有个雷区——JDK版本不同,参数差异非常大。JDK 8及以前的老套路,在JDK 9之后基本失灵,必须切换到全新的-Xlog统一日志系统。下面把两个时代的配置方式

VMware8虚拟机的BIOS有哪些地方是可以优化
VMware8虚拟机的BIOS有哪些地方是可以优化

大家都知道,适当地调整BIOS设置能加快机器启动速度。其实对虚拟机来说,道理完全一样——而且虚拟机的运行速度本来就不如物理机,所以优化它的BIOS反而更有价值。下面以VMware 8为例,聊一聊虚拟机的BIOS里哪些地方值得动一动。 准备工作 操作系统:Windows 7 + VMware Work

虚拟机中怎么安装win10预览版9901 win10预览版9901虚拟机安装图文教程
虚拟机中怎么安装win10预览版9901 win10预览版9901虚拟机安装图文教程

Win10预览版9901由于采用UEFI锁定,无法通过传统BIOS引导安装。具体方法:在VMwareWorkstation虚拟机软件中创建虚拟机时需选择自定义高级模式并将固件类型改为EFI;在VirtualBox虚拟机软件中,用户需在创建后进入设置切换固件类型为EFI,然后方可顺利安装。

Linux入门学习之通过vmware虚拟机安装ubuntu系统的方法
Linux入门学习之通过vmware虚拟机安装ubuntu系统的方法

对于想要学习Linux的朋友来说,VMware Player是一个非常趁手的工具。它和VMware Workstation在性能上完全一致,只是功能上砍掉了一些高级特性——但换来的是体积小巧、完全免费,对个人用户来说反而更友好。实际使用中,它的运行流畅度和稳定性也比免费的VirtualBox要好不少

VMware虚拟机怎么分析bug记录?
VMware虚拟机怎么分析bug记录?

虚拟机会有一些莫名其妙的问题,好在可以在Windows7正常系统中验证问题的范围,外围正常,就是虚拟机内部机制的问题。 自动最小化 1、点击Windows7操作系统中的开始菜单→所有程序→Windows Virtual PC→Windows XP Mode 2、启动虚拟机…… 3、Windows7操

轻松玩转虚拟机套娃! 在Hyper-V中开启嵌套虚拟化的技巧
轻松玩转虚拟机套娃! 在Hyper-V中开启嵌套虚拟化的技巧

在日常的 IT 工作中,嵌套虚拟化确实是个非常实用的技术。简单来说,它让你能在虚拟机(VM)里再跑一个 Hyper-V 或 VMware,实现「虚拟机套娃」。想想看,这意味着什么?你完全不需要额外购置硬件,就能在单台机器上模拟一整套复杂的云环境,或者搭建一个完全隔离的安全实验区。对于开发者和 IT

VMWare虚拟机下Linux无法全屏的解决方法
VMWare虚拟机下Linux无法全屏的解决方法

VMWare 是业界相当主流的虚拟机工具,但不少用户反映,安装 Linux 虚拟机后却无法全屏显示——屏幕缩在一个小窗口里,操作体验大打折扣。这个问题其实挺常见,也并非无解。下面就来梳理一套经过验证的解决方法,从原因排查到具体操作,一步步说清楚。 1. 前提条件与问题描述 测试环境配置如下: VMW

升级Win10正式版后VMware虚拟机不能联网该怎么办?
升级Win10正式版后VMware虚拟机不能联网该怎么办?

刚升级到Win10系统,其他功能一切正常,唯独虚拟机掉链子了——网络直接断连。打开服务列表一看,好家伙,虚拟机依赖的两个核心服务不见了踪影。这问题其实不复杂,下面直接上解决方案。 第一步,打开VMware虚拟机主界面,进入“编辑——虚拟网络编辑器”。 第二步,点击左下角的“恢复默认设置”,弹窗确认即

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

PDF教程
PDF教程

正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

Mac软件 更多
Postman macOS版
Postman macOS版
Mac

Postman是一套面向API全生命周期的开发与测试平台,可在Mac上发送和调试多种协议请求,管理集合、环境及认证信息,并完成脚本测试、模拟服务、监控、文档发布和团队协作。它适合开发、测试及运维人员使用,提供个人免费方案。

Docker Desktop macOS版
Docker Desktop macOS版
Mac

Docker Desktop 是 Docker 官方为 Mac 提供的容器开发环境,集成 Docker Engine、命令行工具、Compose、Build、Kubernetes 与图形化管理界面。

Android Studio macOS版
Android Studio macOS版
Mac

Android Studio 是 Google 面向安卓应用开发提供的官方集成开发环境,基于 IntelliJ IDEA 构建。它整合智能代码编辑、Gradle 构建、界面预览、设备模拟、性能分析、调试测试及 APK 分析等工具。

WINDOWS 更多
PixPix 网页版
PixPix 网页版
Windows

PixPix 是面向品牌、卖家和内容团队的在线 AI 图片视频创作平台,提供图视频 Agent、无限画布、图片生成、视频生成、自然语言编辑及商品套图、产品精修和带货视频等电商工具。

Postman Windows版
Postman Windows版
Windows

Postman 是面向 API 全生命周期的开发与协作平台。Windows 桌面版可用于构建和发送 HTTP、GraphQL、gRPC、WebSocket、MQTT 等请求,并提供环境变量、集合、脚本测试、模拟服务、监控、文档及团队工作区等

Docker Desktop Windows版
Docker Desktop Windows版
Windows

Docker Desktop 为 Windows 开发者提供集成式容器环境,内置 Docker Engine、命令行工具、Compose、Build 与 Kubernetes 等组件,可在本机完成镜像构建、容器运行、日志查看和资源管理。