KVM經常使用運維指令

0、取虛擬機名字node

virsh list | awk '{print $2}'linux


一、虛擬機配置路徑:/etc/libvirt/qemuios


二、建立硬盤vim

qemu-img create /home/kvm/123.img 5Gapi


三、建立虛擬機服務器

virt-install \網絡

--name=Winxp \dom

--ram 512 \ide

--vcpus=2 \ui

-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 網卡橋接名稱)


四、管理虛擬機:virsh

[root@os-node6 ~]# virsh

Welcome to virsh, the virtualization interactive terminal.


Type:  'help' for help with commands

       'quit' to quit


virsh # 


五、顯示虛擬機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 # 


六、網卡列表: virsh domiflist  實例名

virsh # domiflist instance-000000c7

Interface  Type       Source     Model       MAC

-------------------------------------------------------

tapc234bf36-36 bridge     qbrc234bf36-36 virtio      fa:16:3e:dd:7b:49


七、網卡狀態: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


八、磁盤列表:virsh domblklist 實例名

virsh # domblklist instance-000000c7

Target     Source

------------------------------------------------

vda        volumes/volume-e04786e0-15d0-41f5-8401-7c1693462f29


九、虛擬機快照

 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



十、把raw格式的鏡像轉換爲qcow2(raw格式的鏡像不支持快照)

qemu-img convert -f raw -O qcow2 100.img 111.img


十一、虛擬機狀態:domstate 實例名

virsh # domstate instance-000000c7

running


十二、啓動虛擬機start

virsh # start instance-000000c7


1三、查看虛擬機的詳細信息

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


1四、自啓設置:autostart 實例名  (在宿主機重啓後,虛擬機默認本身是不啓動的必須手動開啓)

virsh # autostart instance-000000c7


1五、關閉虛擬機shutdown 實例名

virsh # shutdown instance-000000c7


1六、重啓虛擬機reboot 實例名

virsh # reboot instance-000000c7


1七、把虛擬機強制關閉電源

virsh # destroy instance-000000c7


1八、從 XML 定義一個虛擬機

virsh # define /var/lib/nova/instances/081b57d0-1abf-40de-a16d-7cea951ba9f8/libvirt.xml 


1九、移除虛擬機:undefine 實例名

virsh # undefine instance-00000066

(使用undefine的前提是,虛擬機是關閉的,那咱們怎麼關閉虛擬機呢,可使用destroy,確切的說這個操做就是一腳將服務器的電源踹掉。爲何不用shutdown呢,多是個bug,apci這個設備很差好工做。)


20、掛起一個正在運行的虛擬機,該虛擬機仍舊佔用資

virsh # suspend instance-00000066


2一、從掛起狀態恢復一個虛擬機: 

virsh # resume instance-00000066


2二、輸出客戶端 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>


2三、用xml文件建立虛擬機

virsh dumpxml node4 >/etc/libvirt/qemu/node6.xml

#導出虛擬機node6的硬件配置信息爲/etc/libvirt/qemu/node6.xml



[root@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>


[root@target ~]# virsh define /etc/libvirt/qemu/node6.xml

#使用虛擬描述文檔創建虛擬機,可用virsh edit node6修改node6的配置文件


[root@target ~]# virsh start node6

#啓動虛擬機


爲虛擬機開啓vnc

[root@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



2四、從 XML 配置文件生成客戶端並啓動新客戶端: create /root/12.xml


2五、顯示客戶端 ID:

virsh # domid instance-000000c7



2六、顯示客戶端的UUID

virsh # domuuid instance-000000c7

a62dc36e-7619-474d-8abe-ff38391f36e4


2七、編輯虛擬機配置

virsh # edit instance-00000066 


Domain instance-00000066 XML configuration edited.


2八、顯示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 p_w_picpath exists


virsh # 

virsh # vncdisplay instance-000000c7 

:0


virsh # vncdisplay instance-0000002e

:1


2九、下表提供全部 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

相關文章
相關標籤/搜索