|
一:kvm工具栈
kvm主要的工具栈,从大的类别可以分为libvirt和qemu这2大类,其中libvirt中分为virtual machine manager和virsh ,virtual machine manager中的virt-manager是基于图形化界面的管理,其他的都是可以在命令直接使用命令来管理虚拟机,virsh是基于图形化界面的管理,2者都是通过libvirt连接至libvirtd进行管理;对于qemu来说 ,它管理虚拟机上直接调用kvm内核中模块的API进行管理
二:virsh工具的使用说明
1、查看virsh命令帮助的信息
都是通过分组来进行管理的
分为domain management(域管理),domain monitoring(域监控),Host and Hypervisor(主机及虚拟化),interface(网卡接口),network filter(网络防火墙),networking(网络),node device(节点设备驱动),secret,snapshot(快照),storage pool(存储池或存储策略),storage volume(存储卷),virsh itself(virsh shell自身相关的组),查看特定的帮助信息,可以使用,virsh help +组名,比如查看storage volume组相关的命令,可以使用virsh help volume来进行查看
2:命令模式创建虚拟机
错误的示范,先创建一个新的磁盘文件,然后再来创建一个虚拟机,发现启动不了,原因就是这个在创建虚拟机的时候,没有指定这个镜像文件在哪里,因此启动不来
方法:在创建磁盘文件的时候,需要将系统(镜像)装进磁盘里面才行,否则创建不出来
正确的示范,直接拷贝已有的虚拟机的配置文件,和已有的磁盘文件,修改一些小的参数即可
操作:- #复制已有的配置文件
- [root@server qemu]# ls
- c7-1.xml networks
- [root@server qemu]# cp c7-1.xml c7-2.xml
- [root@server images]# pwd
- /var/lib/libvirt/images
- [root@server images]# cp c7-1.qcow2 c7-2.qcow2
- [root@server images]# ls
- c7-1.qcow2 c7-2.qcow2
- #修改虚拟机的配置文件
- 虚拟机的名字,uuid,磁盘的存放的路径,mac地址(网卡的地址,物理地址)
- <name>c7-2</name>
- <uuid>4743040a-6a6c-4259-b29d-e5d3798667e4</uuid>
- <source file='/var/lib/libvirt/images/c7-2.qcow2'/>
- <mac address='52:54:00:32:16:db'/>
- #基于xml配置文件创建虚拟机
- [root@server qemu]# virsh create c7-2.xml
- 域 c7-2 被创建(从 c7-2.xml)
- [root@server qemu]# virsh list --all
- Id 名称 状态
- ----------------------------------------------------
- 2 c7-1 running
- 3 c7-2 running
复制代码 这种创建,不需要再次进行安装的流程,创建后,就能直接使用,并且使用的都是一个磁盘,原来的数据文件也被保留在上面
创建一个虚拟磁盘的命令为:
查看虚拟磁盘的命令:
virsh-define:从指定的配置文件中创建虚拟机,但是不运行,create是创建并运行
3:连接虚拟机(virsh console)
从宿主机连接到指定虚拟的串行控制台- [root@server qemu]# virsh help console
- NAME
- console - 连接到客户会话
- SYNOPSIS
- console <domain> [--devname <string>] [--force] [--safe]
- DESCRIPTION
- 连接客户真实串行控制台
- OPTIONS
- [--domain] <string> domain name, id or uuid
- --devname <string> 字符设备名称
- --force 强制控制台连接(断开已连接的会话)
- --safe 只有在支持安全控制台处理时方可连接
复制代码 直接进行连接的话,会一直处于卡死的状态,因为centos7上默认没有允许ttySO
在宿主机用ssh连接至虚拟机(当然,svn或者使用virt-manager也行),修改内核的参数,然后重启虚拟机- [root@server qemu]# ssh 172.25.250.130
- root@172.25.250.130's password:
- Last login: Sun Apr 28 10:06:37 2024 from 172.25.250.10
- [root@localhost ~]# grep "ttyS0" /etc/securetty //这个文件里面定义一些能被root用户直接登录的终端
- ttyS0
- [root@localhost ~]# grubby --update-kernel=ALL --args="console=ttyS0"
- [root@localhost ~]# reboot
- ##进行连接的操作
- [root@server qemu]# virsh console c7-1
- 连接到域 c7-1
- 换码符为 ^]
- CentOS Linux 7 (Core)
- Kernel 3.10.0-862.el7.x86_64 on an x86_64
- localhost login: root
- Password:
- Last login: Sun Apr 28 10:10:10 from 172.25.250.10
- [root@localhost ~]# ip a
- 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
- link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
- inet 127.0.0.1/8 scope host lo
- valid_lft forever preferred_lft forever
- inet6 ::1/128 scope host
- valid_lft forever preferred_lft forever
- 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
- link/ether 52:54:00:32:16:da brd ff:ff:ff:ff:ff:ff
复制代码 宿主机连上虚拟机后,退出控制台使用ctrl+]
4:virsh常见的操作
1、virsh shutdown(关闭虚拟机)
- [root@server qemu]# virsh help shutdown
- NAME
- shutdown - 关闭一个域
- SYNOPSIS
- shutdown <domain> [--mode <string>]
- DESCRIPTION
- 在目标域中执行关闭行为。
- OPTIONS
- [--domain] <string> domain name, id or uuid
- --mode <string> shutdown mode: acpi|agent|initctl|signal|paravirt
- [root@server qemu]# virsh shutdown c7-1
- 域 c7-1 被关闭
- [root@server qemu]# virsh list --all
- Id 名称 状态
- ----------------------------------------------------
- 3 c7-2 running
- - c7-1 关闭
复制代码
有的时候使用shutdown关机的时候,关不掉,需要使用destory来进行强制的关机
当然,如果对于已经关机的虚拟机,使用destory的话,会将这个虚拟机删除掉,直接使用destory的话,会进行强制关机的操作- [root@server qemu]# virsh shutdown c7-2
- 域 c7-2 被关闭
- [root@server qemu]# virsh list
- Id 名称 状态
- ----------------------------------------------------
- 3 c7-2 running
- virsh destory c7-2
复制代码 2、启动非活动的虚拟机(virsh start)
- [root@server qemu]# virsh start c7-1
- 域 c7-1 已开始
- [root@server qemu]# virsh list
- Id 名称 状态
- ----------------------------------------------------
- 4 c7-1 running
复制代码 3、挂起和恢复挂起的(virsh suspend 和virsh resume)
挂起就是把指定的虚拟机挂起,就是把运行状态的虚拟机暂停,并把当前运行状态保存到内存,外部的客户端对它访问也不会响应,如果此时宿主机断电,那么之前保存在内存中运行状态数据也会随之丢失- [root@server qemu]# virsh suspend c7-1
- 域 c7-1 被挂起
- [root@server qemu]# virsh list
- Id 名称 状态
- ----------------------------------------------------
- 5 c7-1 暂停
- [root@server qemu]# virsh resume c7-1
- 域 c7-1 被重新恢复
- [root@server qemu]# virsh list
- Id 名称 状态
- ----------------------------------------------------
- 5 c7-1 running
复制代码 4、基于磁盘的挂起和取消(virsh save和virsh restore)
virsh save:把指定的虚拟机运行状态的信息保存到指定的文件,vmware的挂起操作是把运行状态保存到磁盘,宿主机掉电,它不会丢失数据
virsh restore:从指定文件恢复虚拟机(该文件是使用save命令保存下来的虚拟机运行状态信息文件)- [root@server qemu]# virsh help save
- NAME
- save - 把一个域的状态保存到一个文件
- SYNOPSIS
- save <domain> <file> [--bypass-cache] [--xml <string>] [--running] [--paused] [--verbose]
- DESCRIPTION
- 保存运行中的域 的 RAM 状态
- OPTIONS
- [--domain] <string> domain name, id or uuid
- [--file] <string> 数据存到什么地方
- --bypass-cache 保存时避免文件系统缓存
- --xml <string> 包含为目标更新的 XML 的文件名
- --running 设定要在还原中运行的域
- --paused 设定要在还原中暂停的域
- --verbose 显示保存进程
- [root@server qemu]# virsh save c7-1 /opt/c2.bin --paused
- 保存到 c7-1 的域 /opt/c2.bin
- [root@server qemu]# ls /opt/
- c2.bin rh
- [root@server qemu]# virsh list --all
- Id 名称 状态
- ----------------------------------------------------
- - c7-1 关闭
- #恢复
- [root@server qemu]# virsh restore /opt/c2.bin
- 从 /opt/c2.bin 恢复域
- [root@server qemu]# virsh list
- Id 名称 状态
- ----------------------------------------------------
- 6 c7-1 暂停
复制代码 恢复C7-1变成了暂停的状态,这是因为在保存状态信息时,指定了恢复的状态,当然我们也可以在恢复的时候使用选项来进行指定虚拟机的状态- [root@server qemu]# virsh restore /opt/c2.bin --running
- 从 /opt/c2.bin 恢复域
- [root@server qemu]# virsh list
- Id 名称 状态
- ----------------------------------------------------
- 7 c7-1 running
复制代码 5、重启虚拟机(virsh reboot,virsh reset)
virsh reboot重启虚拟机
virsh reset:对指定的虚拟机执行强制重启的操作- [root@server qemu]# virsh reboot c7-1
- 域 c7-1 正在被重新启动
- 您在 /var/spool/mail/root 中有邮件
- [root@server mail]# virsh reset c7-1
- 重新设定域 c7-1
复制代码 6、查看虚拟机详细信息(virsh dumpxml)
- [root@server mail]# virsh dumpxml c7-1
- <domain type='kvm' id='7'>
- <name>c7-1</name>
- <uuid>4743040a-6a6c-4259-b29d-e5d3798667e3</uuid>
- <memory unit='KiB'>1048576</memory>
- <currentMemory unit='KiB'>1048576</currentMemory>
- <vcpu placement='static'>1</vcpu>
- <resource>
复制代码 7、删除虚拟机(virsh undefine)
删除的时候,配置文件都会被删除掉,如果还要删除存储卷的话,需要加上选项即可
现将虚拟机进行关机的操作,然后取消定义,即可删除虚拟机,网络的配置文件也一样- [root@server mail]# virsh help undefine
- NAME
- undefine - 取消定义一个域
- SYNOPSIS
- undefine <domain> [--managed-save] [--storage <string>] [--remove-all-storage] [--delete-snapshots] [--wipe-storage] [--snapshots-metadata] [--nvram] [--keep-nvram]
- DESCRIPTION
- 取消定义一个域或者将持久转换为临时。
- OPTIONS
- [--domain] <string> domain name, id or uuid
- --managed-save 删除域管理的状态文件
- --storage <string> 删除关联的存储卷(用逗号分开的目标或者源路径列表)(查看 domblklist)
- --remove-all-storage 删除关联的存储卷(小心使用)
- --delete-snapshots delete snapshots associated with volume(s), requires --remove-all-storage (must be supported by storage driver)
- --wipe-storage 擦除删除卷中的数据
- --snapshots-metadata 如果不活跃则删除所有域快照元数据
- --nvram remove nvram file, if inactive
- --keep-nvram keep nvram file, if inactive
- [root@server qemu]# virsh shutdown c7-1
- 域 c7-1 被关闭
- [root@server qemu]# ls
- c7-1.xml c7-2.xml networks
- [root@server qemu]# ls /var/lib/libvirt/images/
- c7-1.qcow2 c7-2.qcow2
- [root@server qemu]# virsh undefine c7-1
- 域 c7-1 已经被取消定义
- [root@server qemu]# ls
- c7-2.xml networks
- [root@server qemu]# ls /var/lib/libvirt/images/
- c7-1.qcow2 c7-2.qcow2
- [root@server qemu]# virsh list --all
- Id 名称 状态
- ----------------------------------------------------
复制代码 8、设置虚拟机开机自启(virsh autostart)
- [root@server qemu]# virsh help autostart
- NAME
- autostart - 自动开始一个域
- SYNOPSIS
- autostart <domain> [--disable]
- DESCRIPTION
- 设置一个域在启动时自动开始.
- OPTIONS
- [--domain] <string> domain name, id or uuid
- --disable 禁止自动启动
复制代码
来源:https://www.cnblogs.com/qw77/p/18162130
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|