kvm libvirt 虛擬機管理

http://www.2cto.com/os/201203/123128.htmlhtml

kvm虛擬機管理
1、環境
role         hostname    ip                  OS
kvm_server   target      192.168.32.40/24    rhel6.0_x64
vir_guest1   node4       192.168.32.34/24    rhel5.5_i386
vir_guest2   node5       192.168.32.35/24    rhel5.5_i386
manager      manager     192.168.32.33/24    rhel5.5_i386
ESXi         ESXi        192.168.2.251/24    ESXi 3.5
2、安裝kvm
[root@target ~]# yum install -y qemu-kvm.x86_64 qemu-kvm-tools.x86_64  #安裝kvm內核
[root@target ~]# yum install libvirt.x86_64 libvirt-cim.x86_64 libvirt-client.x86_64 libvirt-java.noarch  libvirt-python.x86_64 #安裝virt管理工具
[root@target ~]# modprobe kvm         #加載kvm內核
[root@target ~]# modprobe kvm-intel   #intel cpu加載kvm-intel內核,要支持全虛擬化,必須開啓;要求cpu支持,經過bios可設置。
[root@target ~]# modprobe kvm-amd     #amd cpu加載kvm-inteljava

[root@target ~]# modprobe -ls | grep kvm   #查看內核是否開啓
kernel/arch/x86/kvm/kvm.ko
kernel/arch/x86/kvm/kvm-intel.ko
kernel/arch/x86/kvm/kvm-amd.ko
[root@target ~]# modprobe -ls | grep kvm-intel
kernel/arch/x86/kvm/kvm-intel.konode

3、安裝guest虛擬機
一、直接經過virt-manager安裝、管理虛擬機(略)python

二、經過命令行安裝guest虛擬機
[root@target ~]# yum install virt-viewer   #開啓圖形控制檯安裝虛擬客戶機須要,
[root@target ~]# virt-install \            #安裝選項可用virt-install --help查看
--name node4 \           #虛擬機名
--ram=1024 \             #分配內存大小,MB
--arch=x86_64 \          #模擬的CPU 構架
--vcpus=1 \              #配置虛擬機的vcpu 數目
--check-cpu \            #檢查肯定vcpu是否超過物理 CPU數目,若是超過則發出警告。
--os-type=linux \        #要安裝的操做系統類型,例如:'linux'、'unix'、'windows'
--os-variant=rhel5 \     #操做系統版本,如:'fedora6', 'rhel5', 'solaris10', 'win2k'
--disk path=/virhost/node7.img,device=disk,bus=virtio,size=20,sparse=true \   #虛擬機所用磁盤或鏡像文件,size大小G
--bridge=br0 \           #指定網絡,採用透明網橋
--noautoconsole \        #不自動開啓控制檯
--pxe                    #網絡安裝linux

4、利用virsh對虛擬機管理
一、開關機
[root@target ~]# virsh start node4      #開機
[root@target ~]# virsh create /etc/libvirt/qemu/node4.xml #直接經過主機配置文檔啓動主機
[root@target ~]# virsh shutdown node4   #關機
[root@target ~]# virsh destroy node4    #強制關閉電源
[root@target ~]# virsh list --all       #查看虛擬機狀態         
 Id 名稱               狀態
----------------------------------
 18 node4                running
  - node5                關閉
  - win8                 關閉ios

二、添加刪除虛擬機
[root@target ~]# virsh define /etc/libvirt/qemu/node5.xml   #根據主機配置文檔添加虛擬機
[root@target ~]# virsh list --all        #node5已經添加
 Id 名稱               狀態
----------------------------------
 18 node4                running
  - node5                關閉
  - win8                 關閉
 
[root@target ~]# virsh undefine node5     #移除虛擬機
[root@target ~]# ls /etc/libvirt/qemu
networks  node4.xml  win8.xml
[root@target ~]# virsh list --all         #node5已經被移除
 Id 名稱               狀態
----------------------------------
 18 node4                running
  - win8                 關閉vim

三、遠程管理虛擬機(qemu+ssh鏈接)
[root@target ~]# yum install virt-viewer
[root@target ~]# export DISPLAY=192.168.40.18:0.0
[root@target ~]# virt-viewer -c qemu///system node4                          #本地管理虛擬機,system:獲取system權限,注意qemu後是三個/
[root@manager ~]# virt-viewer -c qemu+ssh://root@192.168.32.40/system node4  #遠程linux經過virt-viewer+ssh管理虛擬機
Xlib:  extension "RANDR" missing on display "192.168.40.18:0.0".
root@192.168.32.40's password:
root@192.168.32.40's password:
#會彈出virt-viwer的gtk管理界面windows

四、使用已存在的虛擬機配置文檔安裝新的虛擬機
[root@target ~]# qemu-img create -f qcow2 /virhost/kvm_node/node6.img 20G
#爲新建虛擬機生產磁盤鏡像文件api

[root@target ~]# virsh list
 Id 名稱               狀態
----------------------------------
 18 node4                running服務器

[root@target ~]# 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
#啓動虛擬機

5 爲虛擬機開啓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,監聽全部網絡

2. 遠程vnc訪問地址:192.168.32.40:5904

5、存儲池和存儲卷的管理
1.建立 KVM主機存儲池
1).建立基於文件夾(目錄)的存儲池
[root@target virhost]# virsh pool-define-as vmware_pool --type dir --target /virhost/vmware
#定義存儲池vmware_pool

[root@target virhost]# virsh pool-create-as --name vmware_pool --type dir --target /virhost/vmware    
#建立存儲池vmware_pool,類型爲文件目錄,/virhost/vmware,與pool-define-as結果同樣

2).建立基於文件系統的存儲池
[root@target virhost]#virsh pool-define-as --name vmware_pool --type fs --source-dev /dev/vg_target/LogVol02 --source-format ext4 --target /virhost/vmware

[root@target virhost]#virsh pool-create-as --name vmware_pool --type fs --source-dev /dev/vg_target/LogVol02 --source-format ext4 --target /virhost/vmware

3).查看存儲池信息
[root@target virhost]# virsh pool-info vmware_pool  #查看存儲域(池)信息
名稱:       vmware_pool
UUID:           2e9ff708-241f-fd7b-3b57-25df273a55db
狀態:       running
Persistent:     no
自動啓動: no
容量:       98.40 GB
分配:       18.39 GB
可用:       80.01 GB
4).啓動存儲池
[root@target virhost]# virsh pool-start vmware_pool   #啓動存儲池
[root@target virhost]# virsh pool-list
名稱               狀態     自動開始
-----------------------------------------
default              活動     yes      
virhost              活動     yes      
vmware_pool          活動     no
5)銷燬存儲域,取消存儲池
[root@target virhost]# virsh pool-destroy vmware_pool  #銷燬存儲池
[root@target virhost]# virsh pool-list --all
名稱               狀態     自動開始
-----------------------------------------
default              活動     yes      
virhost              活動     yes      
vmware_pool          不活躍  no         
[root@target virhost]# virsh pool-undefine vmware_pool  #取消存儲池的定義
[root@target virhost]# virsh pool-list --all          
名稱               狀態     自動開始
-----------------------------------------
default              活動     yes      
virhost              活動     yes 

2.建立了存儲池後,就能夠建立一個卷,這個卷是用來作虛擬機的硬盤
[root@target virhost]# virsh vol-create-as --pool vmware_pool --name node6.img --capacity 10G --allocation 1G --format qcow2
#建立卷 node6.img,所在存儲池爲vmware_pool,容量10G,初始分配1G,文件格式類型qcow2

[root@target virhost]# virsh vol-info /virhost/vmware/node6.img  #查看卷信息
名稱:       node6.img
類型:       文件
容量:       10.00 GB
分配:       136.00 KB

3.在存儲捲上安裝虛擬主機
[root@target virhost]#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

6、虛擬機的遷移(vmware 2 kvm)
1.安裝軟件
[root@target ~]# yum install -y virt-v2v.x86_64
[root@target ~]# rpm -ivh libguestfs-winsupport-1.0-7.el6.x86_64.rpm  virtio-win-1.2.0-1.el6.noarch.rpm 
#虛擬機爲windows時須要libguestfs-winsupport 包來支持 NTFS 文件系統和 virtio-win 包來支持 Windows para-virtualized 存儲和網絡設備驅動

2.建立 KVM 主機存儲域(略)
virt-v2v 在遷移虛擬機的過程當中,須要拷貝被遷移虛擬機到 KVM 主機預先定義的存儲池中。

3.建立 KVM 主機網絡接口(略)
虛擬機在遷移以後將鏈接 KVM 主機網絡, 所以主機必須有一個與之相匹配的網絡接口,好比說網橋。

4.在 KVM 主機上建立或修改 $HOME/.netrc 文件,添加 VMware ESXi 服務器的用戶名和密碼。
[root@target ~]# cat ~/.netrc
machine 192.168.2.251 login root password xxxxxx
[root@target ~]# chmod 0600 ~/.netrc

5.Vmware ESXi到KVM的遷移
[root@target ~]# virt-v2v -ic esx://192.168.2.251/?no_verify=1 -op virhost -b br0 ipserver  
** HEAD https://192.168.2.251/folder/tserver21/RHEL4.6-flat.vmdk?dcPath=ha-datacenter&dsName=ESX35-bak%3Astorage1 ==> 401 Unauthorized
** HEAD https://192.168.2.251/folder/tserver21/RHEL4.6-flat.vmdk?dcPath=ha-datacenter&dsName=ESX35-bak%3Astorage1 ==> 200 OK
** GET https://192.168.2.251/folder/tserver21/RHEL4.6-flat.vmdk?dcPath=ha-datacenter&dsName=ESX35-bak%3Astorage1 ==> 200 OK (2084s)
unknown filesystem /dev/hda
unknown filesystem /dev/fd0
virt-v2v: Installation failed because the following files referenced in the configuration file are required, but missing: rhel/4/kernel-smp-2.6.9-89.EL.i686.rpm
virt-v2v: 非 virtio 驅動程序配置的 tserver21

#全部選項可經過配置文件/etc/virt-v2v.conf來指定
#-op:指定用於轉換後的存儲域(pool),virhost
#-b:指定網絡爲網橋br0
#-ic:指定要轉換的源地址

[root@target kvm_node]# virsh list --all
 Id 名稱               狀態
----------------------------------
  1 node4                running
  - node5                關閉
  - tserver21            關閉
  - win8                 關閉
[root@target kvm_node]# virsh start tserver21

6.KVM到KVM遷移
[root@target kvm_node]# virt-v2v -ic qemu+ssh://192.168.32.179/system -op virhost -b br0 node6
root@192.168.32.179's password:
root@192.168.32.179's password:
unknown filesystem label SWAP-vda3
virt-v2v: The connected hypervisor does not support a machine type of rhel5.4.0. It will be set to the current default.
virt-v2v: virtio 驅動程序配置的 node6

[root@target kvm_node]# virsh list --all
 Id 名稱               狀態
----------------------------------
  1 node4                running
  - node5                關閉
  - node6                關閉
  - tserver21            關閉
  - win8                 關閉

[root@target kvm_node]# virsh start node6 本文來自於 netsword 的BLOG

相關文章
相關標籤/搜索