KVM 虚拟机 virsh 命令备忘单
这是一个全面的 virsh 命令备忘单: virsh 是 KVM 虚拟机的命令管理用户界面。virsh 可用于创建、暂停、重新启动和关闭域。此外,virsh 可用于列出您的虚拟化管理程序平台中可用的当前域。
virsh 与 Libvirt 交互,后者是一个旨在提供长期稳定的 C API 的库。目前支持 Xen、QEMU、KVM、LXC、OpenVZ、VirtualBox 和 VMware ESX。
Virsh 命令备忘单
在这个 virsh 命令备忘单中,我将向您展示最常用的 virsh 命令来管理在 KVM 或 Xen Hypervisor 上运行的来宾虚拟机。
大多数virsh用法的基本结构是:
$ virsh [OPTION]... <command> <domain> [ARG]...
Virsh 显示节点信息:
这是我们的 virsh 命令备忘单上的第一项。这将显示主机节点信息和支持虚拟化过程的机器。
# virsh nodeinfo
CPU 型号: x86_64
CPU: 2
CPU 频率: 2790 MHz
CPU socket: 2
每个 socket 的内核数: 1
每个内核的线程数: 1
NUMA 单元: 1
内存大小: 3826180 KiB
列出操作系统变体
要获取--os-variant
运行以下命令的值:
$ osinfo-query os
Virsh 列出所有域
要列出非活动域和活动域,请使用以下命令:
# virsh list --allId 名称 状态
------------------------------ CentOS-Stream 关闭- centos-stream8 关闭
仅列出活动域
要使用virsh
命令仅列出活动域 ,请使用:
# virsh listId 名称 状态
-------------------
Virsh 重命名域
句法:
virsh domrename currentname newname
列出可用域
# virsh list --allId 名称 状态
------------------------------ CentOS-Stream 关闭- centos-stream8 关闭# virsh domrename CentOS-Stream CentOS-Stream-New
Domain successfully renamed# virsh list --allId 名称 状态
--------------------------------- CentOS-Stream-New 关闭- centos-stream8 关闭
我们已经将域的名称从CentOS-Stream更改为CentOS-Stream-New
Virsh 更改域启动盘
通过传递名称来编辑域:
virsh edit domain
向下滚动直到<devices>部分并修改以下行的值:
<source file=''/>
例子
<source file='/var/lib/libvirt/images/apacheserver01.qcow2'/>
Virsh 启动虚拟机
这是一个关于如何使用 virsh 命令启动来宾虚拟机的示例。我们将启动 test
上面显示的域:
$ sudo virsh start test
Domain test started$ sudo virsh list Id Name State----------------------------------------------------3 test running
Virsh 自动启动虚拟机
要将 vm 设置为在系统启动时自动启动,请执行以下操作:
$ sudo virsh autostart test
Domain test marked as autostarted$ sudo virsh dominfo test
Id: 9
Name: test
UUID: a943ed42-ba62-4270-a41d-7f81e793d754
OS Type: hvm
State: running
CPU(s): 2
CPU time: 144.6s
Max memory: 2048 KiB
Used memory: 2048 KiB
Persistent: yes
Autostart: enable
Managed save: no
Security model: none
Security DOI: 0
密切关注该选项 Autostart: enable
。
Virsh 自动启动禁用
要禁用虚拟机的自动启动功能:
$ virsh autostart --disable testDomain test unmarked as autostarted$ virsh dominfo testId: -Name: testUUID: a943ed42-ba62-4270-a41d-7f81e793d754OS Type: hvmState: shut offCPU(s): 2Max memory: 2048 KiBUsed memory: 2048 KiBPersistent: yesAutostart: disableManaged save: noSecurity model: noneSecurity DOI: 0
virsh 停止虚拟机,virsh 关闭虚拟机
要优雅地关闭正在运行的虚拟机,请使用:
$ sudo virsh shutdown test
Domain test is being shutdown$ sudo virsh listId Name State----------------------------------------------------
Virsh 强制关闭虚拟机
您可以使用以下命令强制关闭活动域:
$ sudo virsh destroy test
Virsh 停止所有正在运行的虚拟机
如果您想关闭所有正在运行的域,只需发出以下命令:
$ for i in `sudo virsh list | grep running | awk '{print $2}'` dosudo virsh shutdown $i
done
Virsh 重启虚拟机
要重新启动名为 的虚拟机 test
,使用的命令是:
sudo virsh reboot test
Virsh 删除虚拟机
要彻底删除 vm 及其存储列,请使用如下所示的命令。该域 test
应替换为要删除的实际域。
sudo virsh destroy test 2> /dev/null
sudo virsh undefine test
sudo virsh pool-refresh default
sudo virsh vol-delete --pool default test.qcow2
在这个例子中,存储卷被命名为 /var/lib/libvirt/images/test.qcow2
您还可以将 undefine 与–remove-all-storage选项一起使用:
virsh undefine test --remove-all-storage
Virsh 创建一个虚拟机
如果你想用 virsh 创建一个新的虚拟机,要使用的相关命令是virt-install
. 这是至关重要的,不能错过 virsh 命令备忘单库。下面的示例将从 CentOS 7 ISO 映像安装一个新的操作系统。
sudo virt-install \
--name centos7 \
--description "Test VM with CentOS 7" \
--ram=1024 \
--vcpus=2 \
--os-type=Linux \
--os-variant=rhel7 \
--disk path=/var/lib/libvirt/images/centos7.qcow2,bus=virtio,size=10 \
--graphics none \
--location $HOME/iso/CentOS-7-x86_64-Everything-1611.iso \
--network bridge:virbr0 \
--console pty,target_type=serial -x 'console=ttyS0,115200n8 serial'
Virsh 连接到虚拟机控制台
要连接到访客控制台,请使用以下命令:
$ sudo virsh console test
如果提供的域存在活动控制台会话,这将返回失败消息。要解决此运行:
$ sudo virsh console test --force
Virsh 编辑 vm xml 文件
要编辑 vm xml 文件,请使用:
$ sudo EDITOR=vim
$ virsh edit test
使用 nano 文本编辑器
$ sudo EDITOR=nano
$ virsh edit test
Virsh 挂起虚拟机,virsh 恢复虚拟机
要挂起名为 testwith virsh 命令的来宾,请运行:
$ sudo virsh suspend test
Domain test suspended
注意:当域处于挂起状态时,它仍会消耗系统 RAM。来宾挂起时不会发生磁盘和网络 I/O。
恢复访客虚拟机:
使用 resume 选项使用 virsh 恢复挂起的客户机:
$ sudo virsh resume test
Domain test resumed
Virsh 保存虚拟机
使用 virsh 命令将虚拟机的当前状态保存到文件中:
语法是:
$ sudo virsh save test test.saved
Domain test saved to test.save$ ls -l test.save
-rw------- 1 root root 328645215 Mar 18 01:35 test.saved
恢复保存的虚拟机
从文件中恢复保存的虚拟机:
$ sudo virsh restore test.save
Domain restored from test.save$ sudo virsh listId Name State----------------------------------------------------7 test running
Virsh 管理卷
在这里,我们将介绍如何创建存储卷、将其附加到 vm、将其从 vm 分离以及如何删除卷。
Virsh 创建卷
要在默认存储池上创建一个名为 test_vol2 的 2GB 卷,请使用:
$ sudo virsh vol-create-as default test_vol2.qcow2 2G
Vol test_vol2.qcow2 created$ sudo du -sh /var/lib/libvirt/images/test_vol2.qcow2
2.0G/var/lib/libvirt/images/test_vol2.qcow2
- 默认值:是池名称。
- test_vol2:这是卷的名称。
- 2G:这是卷的存储容量。
列出卷
sudo virsh vol-list --pool default
sudo virsh vol-list --pool images
Virsh 将卷附加到 vm
要将上面创建的卷附加到 vm 测试,请运行:
$ sudo virsh attach-disk --domain test \
--source /var/lib/libvirt/images/test_vol2.qcow2 \
--persistent --target vdb
--persistent
:使实时更改持久化--target vdb
: 磁盘设备的目标
您可以确认该卷已作为块设备添加到 vm /dev/vdb
$ ssh test
Last login: Fri Mar 17 19:30:54 2017 from gateway
[root@test ~]# [root@test ~]# lsblk --output NAME,SIZE,TYPE
NAME SIZE TYPE
sr0 1024M rom
vda 10G disk
├─vda1 1G part
└─vda2 9G part├─cl_test-root 8G lvm└─cl_test-swap 1G lvmvdb 2G disk
显示如何创建和附加辅助虚拟磁盘的示例:
export VM=test-vm
sudo qemu-img create -f qcow2 /var/lib/libvirt/images/${VM}-disk2.qcow2 20gsudo virsh attach-disk \--source /var/lib/libvirt/images/${VM}-disk2.qcow2 \--target vdb \--persistent \--subdriver qcow2 \--driver qemu \--type disk
虚拟机上的 Virsh 分离卷
要将上面的卷 test_vol2 从 vm 测试中分离出来:
$ sudo virsh detach-disk --domain test --persistent --live --target vdb
Disk detached successfully$ ssh test
Last login: Sat Mar 18 01:52:33 2017 from gateway
[root@test ~]#
[root@test ~]# lsblk --output NAME,SIZE,TYPE
NAME SIZE TYPE
sr0 1024M rom
vda 10G disk
├─vda1 1G part
└─vda2 9G part
├─cl_test-root 8G lvm
└─cl_test-swap 1G lvm
[root@test ~]#
您确实可以从此输出确认设备 /dev/vdb 已分离
请注意,您可以使用 qemu-img 命令直接为 vm 增加磁盘映像,这将如下所示:
$ sudo qemu-img resize /var/lib/libvirt/images/test.qcow2 +1G
上述命令的主要缺点是您无法调整具有快照的图像的大小。
Virsh 删除卷
列出存储池:
$ sudo virsh pool-listName State Autostart
------------------------------default active yes
要使用 virsh 命令删除卷,请使用:
# List volumes
$ sudo virsh vol-list --pool default$ sudo virsh vol-delete test_vol2.qcow2 --pool default
Vol test_vol2.qcow2 deleted$ sudo virsh pool-refresh default
Pool default refreshed$ sudo virsh vol-list defaultName Path ------------------------------------------------------------------------------
admin.qcow2 /var/lib/libvirt/images/admin.qcow2
cloudstack.qcow2 /var/lib/libvirt/images/cloudstack.qcow2
ipa.qcow2 /var/lib/libvirt/images/ipa.qcow2
katello.qcow2 /var/lib/libvirt/images/katello.qcow2
node1.qcow2 /var/lib/libvirt/images/node1.qcow2
node2.qcow2 /var/lib/libvirt/images/node2.qcow2
node3.qcow2 /var/lib/libvirt/images/node3.qcow2
test.qcow2 /var/lib/libvirt/images/test.qcow2
ubuntu14.04.qcow2 /var/lib/libvirt/images/ubuntu14.04.qcow2
zenoss.qcow2 /var/lib/libvirt/images/zenoss.qcow2
Virsh 管理快照
在使用 virsh 命令管理 kvm 来宾机器的最后第二部分中,我们将了解管理 VM 快照。
Virsh 为虚拟机创建快照
让我们为我们的测试虚拟机创建一个快照。
$ sudo virsh snapshot-create-as --domain test \
--name "test_vm_snapshot1" \
--description "test vm snapshot 1-working"Domain snapshot test_vm_snapshot1 created
虚拟机的 Virsh 列表快照
要列出 vm 的可用快照,请使用:
$ sudo virsh snapshot-list testName Creation Time State------------------------------------------------------------1489689679 2017-03-16 21:41:19 +0300 shutofftest_fresh 2017-03-16 22:11:48 +0300 shutofftest_vm_snapshot1 2017-03-18 02:15:58 +0300 running
Virsh 显示有关快照的信息:
要检索有关域的更多信息,请使用:
$ sudo virsh snapshot-info --domain test --snapshotname test_vm_snapshot1
Name: test_vm_snapshot1
Domain: test
Current: yes
State: running
Location: internal
Parent: test_fresh
Children: 0
Descendants: 0
Metadata: yes
Virsh 还原虚拟机快照
在这里,我们将创建另一个名为 test_vm_snapshot2 的快照,然后还原为快照 test_vm_snapshot1
$ sudo virsh snapshot-create-as \
--domain test --name "test_vm_snapshot2" \
--description "test vm snapshot 2-working"Domain snapshot test_vm_snapshot2 created
让我们恢复之前创建的快照:
$ sudo virsh snapshot-list testName Creation Time State------------------------------------------------------------1489689679 2017-03-16 21:41:19 +0300 shutofftest_fresh 2017-03-16 22:11:48 +0300 shutofftest_vm_snapshot1 2017-03-18 02:15:58 +0300 runningtest_vm_snapshot2 2017-03-18 02:23:29 +0300 running$ sudo virsh snapshot-revert --domain test --snapshotname test_vm_snapshot1 --running
Virsh 删除快照
让我们删除我们创建的两个快照:
$ sudo virsh snapshot-delete --domain test --snapshotname test_vm_snapshot2
Domain snapshot test_vm_snapshot2 deleted$ sudo virsh snapshot-delete --domain test --snapshotname test_vm_snapshot1
Domain snapshot test_vm_snapshot1 deleted$ sudo virsh snapshot-list testName Creation Time State------------------------------------------------------------1489689679 2017-03-16 21:41:19 +0300 shutofftest_fresh 2017-03-16 22:11:48 +0300 shutoff
Virsh 克隆一个虚拟机
具有要克隆的设备的域必须暂停或关闭。所以让我们关闭它:
$ sudo virsh destroy test
Domain test destroyed
然后克隆一个虚拟机,如下图所示:
$ sudo virt-clone --connect qemu:///system \
--original test \
--name test_clone \
--file /var/lib/libvirt/images/test_clone.qcow2 Allocating 'test_clone.qcow2' | 10 GB 00:00:06Clone 'test_clone' created successfully.$ sudo virsh dominfo test_clone
Id: -
Name: test_clone
UUID: be0621fd-51b5-4d2b-a05c-ce76e59baafa
OS Type: hvm
State: shut off
CPU(s): 1
Max memory: 1048576 KiB
Used memory: 1048576 KiB
Persistent: yes
Autostart: disable
Managed save: no
Security model: none
Security DOI: 0
Virsh 管理虚拟机 vcpus
这个 virsh 命令备忘单部分介绍了如何向虚拟机添加额外的虚拟 CPU:
$ sudo virsh setvcpus --domain test --maximum 2 --config
$ sudo virsh setvcpus --domain test --count 2 --config
$ sudo virsh shutdown test
$ sudo virsh start test
确认vcpu的数量发生了变化,之前是1,现在是2:
$ virsh dominfo test
Id: -
Name: test
UUID: a943ed42-ba62-4270-a41d-7f81e793d754
OS Type: hvm
State: shut off
CPU(s): 2
Max memory: 1048576 KiB
Used memory: 1048576 KiB
Persistent: yes
Autostart: disable
Managed save: no
Security model: none
Security DOI: 0
Virsh 管理虚拟机内存
同样在 virsh 命令备忘单上使用 virsh 管理 RAM。要调整客户机操作系统使用的总内存,使用以下命令:
# In MB
sudo virsh setmaxmem test 2048 --config
sudo virsh setmem test 2048 --config
sudo virsh shutdown test
sudo virsh start test# Same in GB
sudo virsh setmaxmem test 16G --config
sudo virsh setmem test 16G --config
sudo virsh shutdown test
sudo virsh start test
检查域信息以确认分配给 VM 的当前 RAM。
$ virsh dominfo test
Id: 9
Name: test
UUID: a943ed42-ba62-4270-a41d-7f81e793d754
OS Type: hvm
State: running
CPU(s): 2
CPU time: 70.7s
Max memory: 2048 KiB
Used memory: 2048 KiB
Persistent: yes
Autostart: disable
Managed save: no
Security model: none
Security DOI: 0
注意当前分配给VM的ram是2048
挂载虚拟磁盘
您可以在 KVM 上挂载虚拟磁盘以进行离线管理。为此,我们有一篇现成的文章,您可以从以下链接中参考:
如何在 KVM 管理程序上挂载 VM 虚拟磁盘
ls 虚拟机中的目录
要在正在运行的 VM 上 ls 目录,您需要安装 libguestfs-tools。
运行:
# virt-ls -l -d <domain> <directory>
例如
# virsh listId Name State
----------------------------------------------------10 allot_netxplorer_01 running19 sg-ve-01 running# virt-ls -l -d allot_netxplorer_01 /root
total 28
dr-xr-x---. 2 root root 135 Mar 22 14:26 .
dr-xr-xr-x. 17 root root 224 Mar 21 10:37 ..
-rw-------. 1 root root 385 Mar 22 14:26 .bash_history
-rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
-rw-r--r--. 1 root root 100 Dec 29 2013 .cshrc
-rw-r--r--. 1 root root 129 Dec 29 2013 .tcshrc
-rw-------. 1 root root 1447 Mar 21 10:38 anaconda-ks.cfg
常见的选项有:
-R |--recursive --> Recursive listing
-h |--human-readable --> Human-readable sizes in output
-d |--domain guest --> Add disks from libvirt guest
-l |--long --> Long listing
cat 虚拟机中的文件
您也可以在不对 VM 执行 ssh 或通过控制台访问它的情况下 cat 文件。您需要在管理程序上安装 libguestfs 工具才能使其工作。
$ sudo virt-cat -d <domain> <file_path>
$ sudo virt-cat -d sg-ve-01 /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)$ sudo dufo virt-cat -d sg-ve-01 /etc/redhat-release > check_os
$ cat check_os
CentOS Linux release 7.1.1503 (Core)
在虚拟机中编辑文件
在管理程序上安装 libguestfs-tools 后,使用 virsh-edit 命令:
# virt-edit -d sg-ve-01 /etc/hosts
显示虚拟机磁盘使用情况
使用 virt-df 命令:
$ sudo virt-df -d sg-ve-01
Filesystem 1K-blocks Used Available Use%sg-ve-01:/dev/sda1 20469760 3954792 16514968 20%
sg-ve-01:/dev/sda2 27739924 173828 27566096 1%
列出
虚拟机或磁盘映像中的文件系统、分区、块设备、LVM
$ sudo virt-filesystems -l -d sg-ve-01
Name Type VFS Label Size Parent
/dev/sda1 filesystem xfs - 20971520000 -
/dev/sda2 filesystem xfs - 28419555328 -$ sudo virt-filesystems -l -h -d sg-ve-01
Name Type VFS Label Size Parent
/dev/sda1 filesystem xfs - 20G -
/dev/sda2 filesystem xfs - 26G -$ sudo virt-filesystems -l -h -d sg-ve-01 --partitions
Name Type MBR Size Parent
/dev/sda1 partition 83 20G /dev/sda
/dev/sda2 partition 83 26G /dev/sda
/dev/sda3 partition 82 4.0G /dev/sda$ sudo virt-filesystems -d sg-ve-01 --all --long --uuid -h
Name Type VFS Label MBR Size Parent UUID
/dev/sda1 filesystem xfs - - 20G - 97074514-612e-4d1c-8433-935dbb3ec775
/dev/sda2 filesystem xfs - - 26G - 8cc9e0cd-282d-46a4-9a37-069dfb93c4f2
/dev/sda3 filesystem swap - - 4.0G - ad7dcd49-fe1a-4938-8600-f7299a59c57a
/dev/sda1 partition - - 83 20G /dev/sda -
/dev/sda2 partition - - 83 26G /dev/sda -
/dev/sda3 partition - - 82 4.0G /dev/sda -
/dev/sda device - - - 100G - -
显示虚拟化域的统计信息
使用 virt-top 显示虚拟化域的统计信息。您可以按 CPU、RAM 等过滤并将输出保存到 CSV 文件。
$ virt-top
$ sudo virt-top --csv file.csv
您还可以将调试和错误消息发送到文件名。要将错误消息发送到 syslog,您可以执行以下操作:
$ sudo virt-top --debug >(logger -t virt-top)
显示来自虚拟机的日志文件
“virt-log”是一个命令行工具,用于显示来自命名虚拟机(或磁盘映像)的日志文件。该工具理解并显示纯文本日志文件(例如 /var/log/messages)和二进制格式,例如 systemd 日志。
$ sudo virt-log -d <domain> | less
$ sudo virt-log -d <domain> | grep 'dhclient.*bound to'
Virsh 管理网络
要结束我们的 virsh 命令备忘单内容,请阅读我之前的文章:
在 Linux 中使用 virsh、nmcli 和 brctl 配置 KVM 网络
结论
我们的 virsh 命令备忘单现已完成。
KVM 虚拟机 virsh 命令备忘单相关推荐
- freedos 常用命令_庆祝FreeDOS 24周年:有用的命令备忘单
freedos 常用命令 FreeDOS在6月29日满24岁. FreeDOS是一个完整的,免费的,与DOS兼容的操作系统,您可以使用它来玩经典的DOS游戏 , 运行商务软件或开发嵌入式系统. 在MS ...
- RedHat Yum 命令备忘单
Yum 是Red Hat和基于 Red Hat 的 Linux 发行版中的包管理器,它允许您管理 Red Hat 系统上软件的各个方面. 你不会在这里详细学习 Yum 命令,相反,这个 Yum 备忘单 ...
- Docker 常用命令备忘单
Docker是一个容器化系统,它打包并运行应用程序及其在容器内的依赖项.在使用 Docker 时,您必须了解几个 Docker 命令.这篇文章就是关于这一点的. 查看版本 您想知道的第一件事就是如何查 ...
- 20多个Maven命令和选项(备忘单)
If you are working on Java, you must know Maven. Maven is the most popular project and dependency ma ...
- Cheat—— 给Linux初学者和管理员一个终极命令行备忘单
当你不确定你所运行的命令,尤其是那些使用了许多选项的复杂命令时,你会怎么做?在这种情况下,我们使用man pages来获取帮助.还有一些其它的选择可能包括像'help','whereis'和'what ...
- linux mt命令,Cheat—— 给Linux初学者和管理员一个终极命令行备忘单
当你不确定你所运行的命令,尤其是那些使用了许多选项的复杂命令时,你会怎么做?在这种情况下,我们使用man pages来获取帮助.还有一些其它的选择可能包括像'help','whereis'和'what ...
- virsh 关机_聊聊:kvm虚拟机管理命令virsh的基本操作
原标题:聊聊:kvm虚拟机管理命令virsh的基本操作 Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个 ...
- bash:附近有语法错误_Bash备忘单:按键组合和特殊语法
bash:附近有语法错误 Bourne Again Shell(Bash)是POSIX计算机的文本界面. Shell,Bash或其他方式为您提供了一种无需回旋接口即可直接与计算机对话的方法:您键入希望 ...
- kvm 虚拟机常用命令
kvm 虚拟机常用命令 管理kvm虚拟机 列出所有虚拟机 visrh list --all Id 名称 状态 --------------------------------------------- ...
最新文章
- guava中 graphs 六
- 成功解决AttributeError: module ‘enum‘ has no attribute ‘IntFlag‘?
- java--java语言基础(4)--黑马程序员
- Linux E325: ATTENTION Found a swap file by the name “./.backu.sh.swp“
- mysql备份psb文件怎么打开,当迁移 Navicat 到新电脑时,如何保留数据库连接信息?...
- django模板-if标签、for标签、自定义标签和过滤器
- Node.js mm131图片批量下载爬虫1.00 iconv协助转码
- apipost如何使用mock测试
- ppt模板怎样用到html中,ppt怎样使用在线模板
- 【hadoop】 3007-hadoop的提交job的源码分析
- 用计算机算e的次方,e的值(万能计算器在线使用)
- Android Data Binding 初识
- 【论文阅读】A Survey of Incentive Mechanism Design for Federated Learning 联邦学习激励机制设计综述
- 微信小程序中实现吸顶效果(流畅、不卡顿)
- 有没有网上打印可以派送的?
- 助力自动驾驶商业化 高德公布高精地图技术路线图
- 做自媒体视频剪辑怎么赚钱呢?
- 解决华为云服务器没有公网Ip无法上网问题
- 美通企业日报 | 内容质量是亚太媒体最重视的指标;“豆蔻青”将成2020年度色彩...
- C++模板函数的声明和定义是否可以分开?