设为首页 收藏本站
查看: 1096|回复: 0

[经验分享] KVM常用运维指令

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-11-6 09:01:38 | 显示全部楼层 |阅读模式
0、取虚拟机名字
virsh list | awk '{print $2}'

1、虚拟机配置路径:/etc/libvirt/qemu

2、创建硬盘
qemu-img create /home/kvm/123.img 5G

3、创建虚拟机
virt-install \
--name=Winxp \
--ram 512 \
--vcpus=2 \
-f /home/123.img \
--cdrom /home/acton-systemvm-02062012.qcow2.bz2 \
--graphics vnc,listen=0.0.0.0,port=5980,password='12345678',keymap='en-us' \
--network bridge=cloudbr0  \
--force  --autostart
(name 虚拟机名称,ram 分配内存, vcpus 分配cpu个数, cdrom guest系统文件地址,network 网卡桥接名称)

4、管理虚拟机:virsh
[iyunv@os-node6 ~]# virsh
Welcome to virsh, the virtualization interactive terminal.

Type:  'help' for help with commands
       'quit' to quit

virsh #

5、显示虚拟机list或者list –all
(list显示本地活动虚拟机; list –all显示本地所有的虚拟机(活动的+不活动的) )
virsh # list
Id    Name                           State
----------------------------------------------------
9     instance-000000c7              running
10    instance-0000002e              running
11    instance-000000a8              running
12    instance-000000a7              running

virsh # list --all
Id    Name                           State
----------------------------------------------------
9     instance-000000c7              running
10    instance-0000002e              running
11    instance-000000a8              running
12    instance-000000a7              running
-     instance-00000066              shut off

virsh #

6、网卡列表: virsh domiflist  实例名
virsh # domiflist instance-000000c7
Interface  Type       Source     Model       MAC
-------------------------------------------------------
tapc234bf36-36 bridge     qbrc234bf36-36 virtio      fa:16:3e:dd:7b:49

7、网卡状态:virsh domifstat  实例名  网卡名
virsh # domifstat instance-000000c7 tapc234bf36-36
tapc234bf36-36 rx_bytes 78257011
tapc234bf36-36 rx_packets 638453
tapc234bf36-36 rx_errs 0
tapc234bf36-36 rx_drop 0
tapc234bf36-36 tx_bytes 1699649
tapc234bf36-36 tx_packets 25784
tapc234bf36-36 tx_errs 0
tapc234bf36-36 tx_drop 0

8、磁盘列表:virsh domblklist 实例名
virsh # domblklist instance-000000c7
Target     Source
------------------------------------------------
vda        volumes/volume-e04786e0-15d0-41f5-8401-7c1693462f29

9、虚拟机快照
1)、查看此虚拟机xml文件的详细信息
virsh # dumpxml instance-000000c7
<domain type='kvm' id='9'>
  <name>instance-000000c7</name>
  <uuid>a62dc36e-7619-474d-8abe-ff38391f36e4</uuid>
  <memory unit='KiB'>8192000</memory>
  <currentMemory unit='KiB'>8192000</currentMemory>
  <vcpu placement='static'>8</vcpu>
  <sysinfo type='smbios'>
    <system>
      <entry name='manufacturer'>Red Hat Inc.</entry>
      <entry name='product'>OpenStack Nova</entry>
      <entry name='version'>2013.2.3-1.el6</entry>
      <entry name='serial'>44454c4c-5700-1033-804e-b1c04f485931</entry>
      <entry name='uuid'>a62dc36e-7619-474d-8abe-ff38391f36e4</entry>
    </system>
  </sysinfo>
  <os>
    <type arch='x86_64' machine='rhel6.5.0'>hvm</type>
    <boot dev='hd'/>
    <smbios mode='sysinfo'/>
  </os>
  <features>
    <acpi/>
    <apic/>
  </features>
  <cpu mode='host-model'>
    <model fallback='allow'/>
  </cpu>
  <clock offset='utc'>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='rtc' tickpolicy='catchup'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='network' device='disk'>
      <driver name='qemu' type='raw' cache='none'/>
      <auth username='compute'>
        <secret type='ceph' uuid='0071bd6f-849c-433a-8051-2e553df49aea'/>
      </auth>
      <source protocol='rbd' name='volumes/volume-e04786e0-15d0-41f5-8401-7c1693462f29'>
        <host name='10.40.10.66' port='6789'/>
        <host name='10.40.10.68' port='6789'/>
        <host name='10.40.10.69' port='6789'/>
      </source>
      <target dev='vda' bus='virtio'/>
      <serial>e04786e0-15d0-41f5-8401-7c1693462f29</serial>
      <alias name='virtio-disk0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </disk>
    <controller type='usb' index='0'>
      <alias name='usb0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
    </controller>
    <interface type='bridge'>
      <mac address='fa:16:3e:dd:7b:49'/>
      <source bridge='qbrc234bf36-36'/>
      <target dev='tapc234bf36-36'/>
      <model type='virtio'/>
      <filterref filter='nova-instance-instance-000000c7-fa163edd7b49'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <serial type='file'>
      <source path='/var/lib/nova/instances/a62dc36e-7619-474d-8abe-ff38391f36e4/console.log'/>
      <target port='0'/>
      <alias name='serial0'/>
    </serial>
    <serial type='pty'>
      <source path='/dev/pts/0'/>
      <target port='1'/>
      <alias name='serial1'/>
    </serial>
    <console type='file'>
      <source path='/var/lib/nova/instances/a62dc36e-7619-474d-8abe-ff38391f36e4/console.log'/>
      <target type='serial' port='0'/>
      <alias name='serial0'/>
    </console>
    <input type='tablet' bus='usb'>
      <alias name='input0'/>
    </input>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='5900' autoport='yes' listen='0.0.0.0' keymap='en-us'>
      <listen type='address' address='0.0.0.0'/>
    </graphics>
    <video>
      <model type='cirrus' vram='9216' heads='1'/>
      <alias name='video0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <alias name='balloon0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </memballoon>
  </devices>
  <seclabel type='none'/>
</domain>

virsh #

2)、查看快照列表: virsh snapshot-list 实例名
virsh # snapshot-list instance-000000c7
Name                 Creation Time             State
------------------------------------------------------------
3)、创建快照: 首先需要关闭虚拟机,然后按照下面的命令进行快照。最后恢复快照的时候先关机在恢复
virsh # snapshot-create-as --domain instance-000000c7 --name instance-000000c7-snap --description "instance-000000c7-snap"

4)、查看快照配置: virsh snapshot-current instance-000000c7
virsh # snapshot-current instance-000000c7
5)、恢复快照: virsh snapshot-revert instance-000000c7  instance-000000c7-snap

6)、删除快照: virsh snapshot-delete instance-000000c7  instance-000000c7-snap


10、把raw格式的镜像转换为qcow2(raw格式的镜像不支持快照)
qemu-img convert -f raw -O qcow2 100.img 111.img

11、虚拟机状态:domstate 实例名
virsh # domstate instance-000000c7
running

12、启动虚拟机start
virsh # start instance-000000c7

13、查看虚拟机的详细信息
virsh # dominfo instance-000000c7
Id:             9
Name:           instance-000000c7
UUID:           a62dc36e-7619-474d-8abe-ff38391f36e4
OS Type:        hvm
State:          running
CPU(s):         8
CPU time:       580.2s
Max memory:     8192000 KiB
Used memory:    8192000 KiB
Persistent:     yes
Autostart:      disable
Managed save:   no
Security model: none
Security DOI:   0

14、自启设置:autostart 实例名  (在宿主机重启后,虚拟机默认自己是不启动的必须手动开启)
virsh # autostart instance-000000c7

15、关闭虚拟机shutdown 实例名
virsh # shutdown instance-000000c7

16、重启虚拟机reboot 实例名
virsh # reboot instance-000000c7

17、把虚拟机强制关闭电源
virsh # destroy instance-000000c7

18、从 XML 定义一个虚拟机
virsh # define /var/lib/nova/instances/081b57d0-1abf-40de-a16d-7cea951ba9f8/libvirt.xml

19、移除虚拟机:undefine 实例名
virsh # undefine instance-00000066
(使用undefine的前提是,虚拟机是关闭的,那我们怎么关闭虚拟机呢,可以使用destroy,确切的说这个操作就是一脚将服务器的电源踹掉。为什么不用shutdown呢,可能是个bug,apci这个设备不好好工作。)

20、挂起一个正在运行的虚拟机,该虚拟机仍旧占用资
virsh # suspend instance-00000066

21、从挂起状态恢复一个虚拟机:
virsh # resume instance-00000066

22、输出客户端 XML 配置文件
virsh # dumpxml instance-00000066
<domain type='kvm'>
  <name>instance-00000066</name>
  <uuid>48756d82-71aa-44b1-8d92-7d8ee8b60f44</uuid>
  <memory unit='KiB'>8192000</memory>
  <currentMemory unit='KiB'>8192000</currentMemory>
  <vcpu placement='static'>4</vcpu>
  <sysinfo type='smbios'>
    <system>
      <entry name='manufacturer'>Red Hat Inc.</entry>
      <entry name='product'>OpenStack Nova</entry>
      <entry name='version'>2013.2.3-1.el6</entry>
      <entry name='serial'>44454c4c-5700-1033-804e-b1c04f485931</entry>
      <entry name='uuid'>48756d82-71aa-44b1-8d92-7d8ee8b60f44</entry>
    </system>
  </sysinfo>
  <os>
    <type arch='x86_64' machine='rhel6.5.0'>hvm</type>
    <boot dev='hd'/>
    <smbios mode='sysinfo'/>
  </os>
  <features>
    <acpi/>
    <apic/>
  </features>
  <cpu mode='host-model'>
    <model fallback='allow'/>
  </cpu>
  <clock offset='utc'>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='rtc' tickpolicy='catchup'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='network' device='disk'>
      <driver name='qemu' type='raw' cache='none'/>
      <auth username='compute'>
        <secret type='ceph' uuid='0071bd6f-849c-433a-8051-2e553df49aea'/>
      </auth>
      <source protocol='rbd' name='volumes/volume-86bfeb91-55a1-4e10-9712-edb717ed0dd0'>
        <host name='10.40.10.64' port='6789'/>
        <host name='10.40.10.68' port='6789'/>
        <host name='10.40.10.69' port='6789'/>
      </source>
      <target dev='vda' bus='virtio'/>
      <serial>86bfeb91-55a1-4e10-9712-edb717ed0dd0</serial>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </disk>
    <controller type='usb' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
    </controller>
    <interface type='bridge'>
      <mac address='fa:16:3e:b1:64:e8'/>
      <source bridge='qbr22fec319-4f'/>
      <target dev='tap22fec319-4f'/>
      <model type='virtio'/>
      <filterref filter='nova-instance-instance-00000066-fa163eb164e8'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <serial type='file'>
      <source path='/var/lib/nova/instances/48756d82-71aa-44b1-8d92-7d8ee8b60f44/console.log'/>
      <target port='0'/>
    </serial>
    <serial type='pty'>
      <target port='1'/>
    </serial>
    <console type='file'>
      <source path='/var/lib/nova/instances/48756d82-71aa-44b1-8d92-7d8ee8b60f44/console.log'/>
      <target type='serial' port='0'/>
    </console>
    <input type='tablet' bus='usb'/>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0' keymap='en-us'>
      <listen type='address' address='0.0.0.0'/>
    </graphics>
    <video>
      <model type='cirrus' vram='9216' heads='1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </memballoon>
  </devices>
</domain>

23、用xml文件创建虚拟机
virsh dumpxml node4 >/etc/libvirt/qemu/node6.xml
#导出虚拟机node6的硬件配置信息为/etc/libvirt/qemu/node6.xml


[iyunv@target ~]# vim /etc/libvirt/qemu/node6.xml
<domain type='kvm' id='20'>    #修改node6的id号
  <name>node6</name>           #虚拟机node6的name
  <uuid>4b7e91eb-6521-c2c6-cc64-c1ba72707fc7</uuid>  #uuid必须修改,否则会和node4的冲突
  <memory>524288</memory>
  <currentMemory>524288</currentMemory>
  <vcpu>1</vcpu>
  <os>
    <type arch='x86_64' machine='rhel5.4.0'>hvm</type>
    <boot dev='network'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
  </features>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2' cache='none'/>
      <source file='/virhost/node4.img'/>         #指定新虚拟机的硬盘文件
      <target dev='vda' bus='virtio'/>
    </disk>
    <interface type='bridge'>
      <mac address='54:52:00:69:d5:c7'/>
      <source bridge='br0'/>
      <target dev='vnet0'/>
      <model type='virtio'/>
    </interface>
    <interface type='bridge'>
      <mac address='54:52:00:69:d5:d7'/>
      <source bridge='br0'/>
      <target dev='vnet1'/>
      <model type='virtio'/>
    </interface>
    <serial type='pty'>
      <source path='/dev/pts/4'/>
      <target port='0'/>
    </serial>
    <console type='pty' tty='/dev/pts/4'>
      <source path='/dev/pts/4'/>
      <target port='0'/>
    </console>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='5900' autoport='yes' keymap='en-us'/>
  </devices>
</domain>

[iyunv@target ~]# virsh define /etc/libvirt/qemu/node6.xml
#使用虚拟描述文档建立虚拟机,可用virsh edit node6修改node6的配置文件

[iyunv@target ~]# virsh start node6
#启动虚拟机

为虚拟机开启vnc
[iyunv@target ~]# virsh edit node4     #编辑node4的配置文件;不建议直接通过vim node4.xml修改。
<graphics type='vnc' port='-1' autoport='yes' listen='127.0.0.1' keymap='en-us'/>
   #port='-1' autoport='yes':port自动分配,监听回环网络(virt-manager管理需要listen='127.0.0.1'),无密码
改为
<graphics type='vnc' port='5904' autoport='no' listen='0.0.0.0' keymap='en-us' passwd='xiaobai'/>
   #固定vnc管理端口5904,不自动分配,vnc密码xiaobai,监听所有网络

远程vnc访问地址:192.168.32.40:5904


24、从 XML 配置文件生成客户端并启动新客户端: create /root/12.xml

25、显示客户端 ID:
virsh # domid instance-000000c7


26、显示客户端的UUID
virsh # domuuid instance-000000c7
a62dc36e-7619-474d-8abe-ff38391f36e4

27、编辑虚拟机配置
virsh # edit instance-00000066

Domain instance-00000066 XML configuration edited.

28、显示VNC端口号
virsh # list --all
Id    Name                           State
----------------------------------------------------
9     instance-000000c7              running
10    instance-0000002e              running
11    instance-000000a8              running
12    instance-000000a7              running
-     instance-00000066              shut off

virsh # undefine instance-00000066
error: Refusing to undefine while domain managed save image exists

virsh #
virsh # vncdisplay instance-000000c7
:0

virsh # vncdisplay instance-0000002e
:1

29、下表提供所有 virsh 命令行选项的快速参考。
命令  Description
help 打印基本帮助信息。
list 列出所有客户端。
dumpxml 输出客户端 XML 配置文件。
create 从 XML 配置文件生成客户端并启动新客户端。
start 启动未激活的客户端。
destroy 强制客户端停止。
define 为客户端输出 XML 配置文件。
domid 显示客户端 ID。
domuuid 显示客户端 UUID。
dominfo 显示客户端信息。
domname 显示客户端名称。
domstate 显示客户端状态。
quit 退出这个互动终端。
reboot 重新启动客户端。
restore 恢复以前保存在文件中的客户端。
resume 恢复暂停的客户端。
save 将客户端当前状态保存到某个文件中。
shutdown 关闭某个域。
suspend 暂停客户端。
undefine 删除与客户端关联的所有文件。
migrate 将客户端迁移到另一台主机中。

使用以下 virsh 命令管理客户端及管理程序资源:

命令 Description
setmem 为客户端设定分配的内存。
setmaxmem 为管理程序设定内存上限。
setvcpus 修改为客户端分配的虚拟 CPU 数目。
vcpuinfo 显示客户端的虚拟 CPU 信息。
vcpupin 控制客户端的虚拟 CPU 亲和性。
domblkstat 显示正在运行的客户端的块设备统计。
domifstat 显示正在运行的客户端的网络接口统计。

attach-device 使用 XML 文件中的设备定义在客户端中添加设备。
attach-disk 在客户端中附加新磁盘设备。
attach-interface 在客户端中附加新网络接口。
detach-device 从客户端中分离设备,使用同样的 XML 描述作为命令attach-device。
detach-disk 从客户端中分离磁盘设备。
detach-interface 从客户端中分离网络接口。

30、存储池和存储卷的管理
1.创建 KVM主机存储池
1).创建基于文件夹(目录)的存储池
virsh pool-define-as vmware_pool --type dir --target /virhost/vmware#定义存储池vmware_pool或
virsh pool-create-as --name vmware_pool --type dir --target /virhost/vmware
#创建存储池vmware_pool,类型为文件目录,/virhost/vmware,与pool-define-as结果一样

2).创建基于文件系统的存储池
virsh pool-define-as --name vmware_pool --type fs --source-dev /dev/vg_target/LogVol02 --source-format ext4 --target /virhost/vmware

virsh pool-create-as --name vmware_pool --type fs --source-dev /dev/vg_target/LogVol02 --source-format ext4 --target /virhost/vmware

3).查看存储池信息
virsh pool-info vmware_pool #查看存储域(池)

4).启动存储池
virsh pool-start vmware_pool #启动存储池
virsh pool-list

5)销毁存储域,取消存储池
virsh pool-destroy vmware_pool #销毁存储池
virsh pool-list --all
virsh pool-undefine vmware_pool #取消存储池的定义
virsh pool-list --all

2.创建了存储池后,就可以创建一个卷,这个卷是用来做虚拟机的硬盘
virsh vol-create-as --pool vmware_pool --name node6.img --capacity 10G --allocation 1G --format qcow2#创建卷 node6.img,所在存储池为vmware_pool,容量10G,初始分配1G,文件格式类型qcow2
virsh vol-info /virhost/vmware/node6.img #查看卷信息名称: node6.img类型: 文件容量: 10.00 GB分配: 136.00 KB

3.在存储卷上安装虚拟主机
virt-install --connect qemu:///system \-n node7 \-r 512 \-f /virhost/vmware/node7.img \--vnc \--os-type=linux \--os-variant=rhel6 \--vcpus=1 \--network bridge=br0 \-c /mnt/rhel-server-6.0-x86_64-dvd.iso


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-135658-1-1.html 上篇帖子: kvm半虚拟化驱动 下篇帖子: 为什么我的机器只能开5个kvm虚拟机
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表