virsh相关命令


关于virsh相关命令

常用文件路径

1
2
3
4
5
6
7
8
9
10
11
虚拟机配置文件默认路径:
[root@bainuo qemu]# pwd
/etc/libvirt/qemu
[root@bainuo qemu]# ls
networks vm01.xml

磁盘文件默认路径:
[root@bainuo images]# pwd
/var/lib/libvirt/images
[root@bainuo images]# ls
vm01.img

虚机

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
virsh命令参数 功能 用法举例

list 查看已经存在的domain信息(可以带参数) virsh list --all (查看所有的虚拟机)
start 开始一个不活跃的domain(前提是存在) virsh start test2
autostart 配置domain随boot启动 virsh autostart test2
shutdown 优雅的关闭domain virsh shutdown test2
destroy 立刻终止一个domain(强制关闭) virsh destroy test2
reboot 重启一个domain(仅仅发送reboot命令) virsh reboot test2
suspend 挂起服务器 virsh suspend test2
resume 恢复服务器 virsh resume test2

console 连接domain的虚拟的控制台(只能有1个) virsh console test2
ttyconsole 输出设备使用的domain的tty console virsh ttyconsole test2
dominfo 返回关于domain的基本信息 virsh dominfo test2
migrate 迁移一个domain到另一台主机

KVM虚拟网络管理命令(virtual network):
virsh命令参数 功能 用法举例
net-autostart 配置一个虚拟网络开机自启(--disable可以关闭) virsh net-autostart br0
net-create 通过一个xml文件创建一个虚拟网络 virsh net-create ./virbr1.xml
net-define 通过xml文件定义一个虚拟网络,仅定义不实例化 virsh net-define ./virbr1.xml
net-destory 停止由其名称(uuid)指定的虚拟网络,立即生效 virsh net-destroy br0
net-dumpxml 以xml文件的形式输出一个虚拟网络的配置信息 virsh net-dumpxml br0
net-edit 编辑一个虚拟网络的配置文件(修改虚拟网络配置) virsh net-edit br0
net-info 返回要查看的虚拟网络的基本信息 virsh net-info default
net-list 查看当前的虚拟网络信息(可以带参数) virsh net-list --all
net-name
net-start 开始一个不活跃的虚拟网络 virsh net-start br0
net-undefine 将一个不活跃的虚拟网络取消定义 virsh net-undefine br0
net-uuid
net-update

创建并启用一个网络:net-define -> net-start
virsh net-define br0.xml
virsh net-list --all (有br0网络,但处于不活跃状态)
virsh net-start br0
virsh net-list --all (br0网络已处于活跃状态)

停用并删除一个网络(以br0为例): net-destroy -> net-undefine
virsh net-destroy br0
virsh net-list --all (br0网络变为不活跃状态)
virsh
net-undefine br0
virsh net-list --all (br0网络已被删除)

存储池

1
2
3
4
5
6
7
8
9
10
11
12
13
创建基于文件夹的存储池
1) 定义一个存储池
virsh pool-define-as kvm_images dir - - - - “/kvm/images”
2) 查看创建的存储池信息
virsh pool-list –all
3) 建立基于文件夹的存储池
virsh pool-build kvm_images
4) 使存储池生效
virsh pool-start kvm_images
5) 这时候,存储池还不是自动运行,使用virsh pool-autostart
virsh pool-autostart kvm_images
6) 验证存储池
virsh pool-info kvm_images
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
  virsh回车进入交互式界面:

version
pwd
hostname  显示本节点主机名
nodeinfo   显示节点信息
list --all   显示所有云主机
7种状态:

running   运行中
idel     空闲,未运行
paused   暂停状态
shutdown 关闭
crashed  虚拟机崩溃
dying   垂死状态,但是又没有完全关闭或崩溃
shutdown <domain>  
destroy <domain>  强制关闭虚拟机(相当于直接拨电源)
start   <domain>  启动虚拟机
edit  <domain>     编辑该虚拟机的xml文件
dommemstat <domain> 获取domain的内存状态
suspend <domain>   挂起一个正在运行的虚拟机,该虚拟机仍占资源;
resume <domain>    从挂起状态恢复一下虚拟机
vcpuinfo <domain>    显示一些虚拟机的vcpu的信息
vncdisplay <domain>   显示vnc监听地址和端口

快照相关命令

1
2
3
4
5
snapshot-create <domain> xmlfile   给domain创建一个snapshot,详细内容保存在xmlfile中
snapshot-current <domain>      显示一个domain的当前的snapshot
snapshot-list <domain>         显示一个domain的所有的snapshot
snapshot-revert <domain> snapshot    恢复一个domian到以前的snapshot
snapshot-delete <domain> snapshot --children 删除一个domain的snapshot

如何用libvirt远程管理虚拟机?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
要用libvirt连接到超级管理程序,我们需要一个URI,这个URI配合virsh和virt-viewer命令使用,后面可以跟一些可选项,virt-viewer可以调用一些链接参数,例如:virsh -c qemu:///system 当链接到远程机器时,可以定义几种使用的协议:ssh,tcp,tls。当链接到远程机器时,需要使用远程主机的用户和主机名进行链接,如果没有定义链接用户,则会使用本机环境的$USER的用户进行链接,当连接到qemu hypervisor时,接受两种链接类型:system可以有所有的访问权限,session有限制的访问。例如:

使用full access链接至本机的qemu hypervisor,前面的-c 是为了执行后面的list命令(--connect)
virsh -c qemu:///system list

使用full access链接至远程主机的qemu hypervisor,每次都要输入ssh密码,改成ssh无密码登陆就不需要输入密码了,直接显示结果。

  virsh -c qemu+ssh://tux@mercur/system 直接进入交互virsh模式

  virsh -c qemu+ssh://10.1.1.8/system list 直接显示list后的结果

  其余连接格式如下:
  qemu:///session (local access to per-user instance)
  qemu+unix:///session (local access to per-user instance)
  qemu:///system (local access to system instance)
  qemu+unix:///system (local access to system instance)
  qemu://example.com/system (remote access, TLS/x509)  
  qemu+tcp://example.com/system (remote access, SASl/Kerberos)
  qemu+ssh:///system (remote access, SSH tunnelled)

使用libvirt创建kvm虚拟机:

1
2
3
4
5
6
7
1、制作虚拟机镜像
qemu-img create -f qcow2 test.qcow2 10G //格式,名字,大小
2、下载并复制iso镜像到指定目录(在第3步中创建xml文件中指定)
3、创建安装配置文件,demo.xml如下,可以根据自己需求更改
virsh define demo.xml    //创建虚拟机
virsh start test_ubuntu   //启动虚拟机
virsh vncdisplay test_ubuntu ////查看虚拟机的vnc端口, 然后就可以通过vnc登录来完成虚拟机的安装

demo.xml 内容如下 默认路径在/etc/libvirt/qemu

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<domain type='kvm'>
<name>test_ubuntu</name> //虚拟机名称
<memory>1048576</memory> //最大内存,单位k
<currentMemory>1048576</currentMemory> //可用内存,单位k
<vcpu>8</vcpu> //虚拟cpu个数
<os>
<type arch='x86_64' machine='pc'>hvm</type>
<boot dev='cdrom'/> //光盘启动
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<clock offset='localtime'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/test.qcow2'/> //目的镜像路径
<target dev='hda' bus='ide'/>
</disk>
<disk type='file' device='cdrom'>
<source file='/var/lib/libvirt/images/ubuntu.iso'/> //光盘镜像路径
<target dev='hdb' bus='ide'/>
</disk>
<interface type='bridge'> //虚拟机网络连接方式
<source bridge='kvmbr0'/> //当前主机网桥的名称
<mac address="00:16:3e:5d:aa:a8"/>
//为虚拟机分配mac地址,务必唯一,否则dhcp获得同样ip,引起冲突
</interface>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='-1' autoport='yes' listen = '0.0.0.0' keymap='en-us'/>
//vnc方式登录,端口号自动分配,自动加1,可以通过virsh vncdisplay来查询
</devices>
</domain>

使用virsh-install安装虚机命令

1
virt-install \ --name=guest1-rhel5-64 \ --file=/var/lib/libvirt/images/guest1-rhel5-64.dsk \ --file-size=8 \ --nonsparse --graphics spice \ --vcpus=2 --ram=2048 \ --location=http://example1.com/installation_tree/RHEL5.6-Serverx86_64/os \ --network bridge=br0 \ --os-type=linux \ --os-variant=rhel5.4

使用 qemu-img 和 qemu-kvm 命令行方式安装

1
2
3
4
5
6
7
8
9
10
11
1)创建一个空的qcow2格式的镜像文件
qemu-img create -f qcow2 windows-master.qcow2 10G

2)启动一个虚机,将系统安装盘挂到 cdrom,安装操作系统
qemu-kvm -hda windows-master.qcow2 -m 512 -boot d -cdrom /home/user/isos/en_winxp_pro_with_sp2.iso

3)现在你就拥有了一个带操作系统的镜像文件。你可以以它为模板创建新的镜像文件。使用模板的好处是,它会被设置为只读所以可以免于破坏。
qemu-img create -b windows-master.qcow2 -f qcow2 windows-clone.qcow2

4)你可以在新的镜像文件上启动虚机了
qemu-kvm -hda windows-clone.qcow2 -m 400
坚持原创技术分享,您的支持将鼓励我继续创作!