virsh的使用與實例步驟安裝虛擬機

 Libvirt有兩種控制方式,命令行和圖形界面

圖形界面:

通過執行名virt-manager,啓動libvirt的圖形界面,在圖形界面下可以一步一步的創建虛擬機,管理虛擬機,還可以直接控制虛擬機的桌面。

 

命令行:

virsh list                                                  #顯示本地活動虛擬機

virsh list –all                                           #顯示本地所有的虛擬機(活動的+不活動的)

virsh define ubuntu.xml                      #通過配置文件定義一個虛擬機(這個虛擬機還不是活動的)

virsh start ubuntu                                #啓動名字爲ubuntu的非活動虛擬機

virsh create ubuntu.xml                     #創建虛擬機(創建後,虛擬機立即執行,成爲活動主機)

virsh suspend ubuntu                          #暫停虛擬機

virsh resume ubuntu                           #啓動暫停的虛擬機

virsh shutdown ubuntu                       #正常關閉虛擬機

virsh destroy ubuntu                           #強制關閉虛擬機

virsh dominfo ubuntu                          #顯示虛擬機的基本信息

virsh domname 2                                 #顯示id號爲2的虛擬機名

virsh domid ubuntu                              #顯示虛擬機id

virsh domuuid ubuntu                         #顯示虛擬機的uuid

virsh domstate ubuntu                       #顯示虛擬機的當前狀態

virsh dumpxml ubuntu                        #顯示虛擬機的當前配置文件(可能和定義虛擬機時的配置不同,因爲當虛擬機啓動時,需要給虛擬機分配id號、uuidvnc端口號等等)

virsh setmem ubuntu 512000           #給不活動虛擬機設置內存大小

virsh setvcpus ubuntu 4                      #給不活動虛擬機設置cpu個數

virsh edit ubuntu                                  #編輯配置文件(一般是在剛定義完虛擬機之後)

 

28-5  virsh常用命令一覽表

命令

說明

help

顯示該命令的說明

quit

結束 virsh ,回到 Shell

connect

連接到指定的虛擬機服務器

create

啓動一個新的虛擬機

destroy

刪除一個虛擬機

start

開啓(已定義的)非啓動的虛擬機

define

XML 定義一個虛擬機

undefine

取消定義的虛擬機

dumpxml

轉儲虛擬機的設置值

list

列出虛擬機

reboot

重新啓動虛擬機

save

存儲虛擬機的狀態

restore

回覆虛擬機的狀態

suspend

暫停虛擬機的執行

resume

繼續執行該虛擬機

dump

將虛擬機的內核轉儲到指定的文件,以便進行分析與排錯

shutdown

關閉虛擬機

setmem

修改內存的大小

setmaxmem

設置內存的最大值

setvcpus

修改虛擬處理器的數量

 

 

libvirt還提供了一個shell:virsh,直接執行名virsh即可獲得一個特殊的shell:virsh,在這個virsh裏面可以執行上面的命令(去掉前面的virsh)與本地libvirt交互,還可以通過命令connect命令連接遠程libvirt,與之交互,例如:connect xen+ssh://[email protected]。另外可以只執行一條遠程libvirt命令:virsh –c xen+ssh://[email protected] list --all

 

ubuntu.xml配置文件舉例:

<domain type='xen'>  //域類型

<name>ubuntu</name>  //虛擬機的名字

<memory>1048576</memory> //虛擬機的最大內存

<currentMemory>524288</currentMemory> //虛擬機當前的內存

<vcpu>2</vcpu> //該虛擬機的cpu

<os>

<type>hvm</type>  //hvm表示全虛擬化

<loader>/usr/lib/xen/boot/hvmloader</loader>  //全虛擬化的守護進程所在的位置

<boot dev='hd'/> //hd表示從硬盤啓動

</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/lib64/xen/bin/qemu-dm</emulator>  //二進制模擬器設備的完整路徑。

<disk type='file' device='disk'>  //disk是用來描述磁盤的主要容器

<driver name='file'/>

<source file='/opt/awcloud/ubuntu/ubuntu.img'/>  //指定磁盤上文件的絕對路徑

<target dev='hda' bus='ide'/>

</disk>

<disk type='file' device='disk'>

<driver name='file'/>

<source file='/opt/awcloud/ubuntu/sdb.img'/>

<target dev='hdb' bus='ide'/>

</disk>

<disk type='file' device='cdrom'>

<driver name='file'/>

<source file='/opt/awcloud/forest/ubuntu-10.04.3-desktop-i386.iso'/>

<target dev='hdc' bus='ide'/>

<readonly/>

</disk>

<serial type='pty'>   //定義串口

<target port='0'/>

</serial>

<console type='pty'>  //console用來代表交互性的控制檯

<target port='0'/>

</console>

<interface type='bridge'>    //橋接設備

<mac address='00:16:36:1e:1d:04'/> //MAC地址

<source bridge='virbr0'/>

</interface>

<graphics type='vnc' autoport='yes' keymap='en-us'/>  //圖形類型

</devices>

</domain>

 

注:

生成一個4G大小的空文件:dd if=/dev/zero of=./disk bs=1024 count=`expr 4 \* 1024 \* 1024`

修改虛擬機的啓動設備:<boot dev='hd'/>從硬盤啓動;<boot dev='cdrom'/>CD啓動

 

網絡參數:

ubuntu.xml配置文件,kvm虛擬機和xen虛擬機都只需要按照下面的模板進行配置,MAC地址是必須的,bridage的名字可能在不同的主機上是不一樣,可能是virbr0,也可能是br0,但類型一定要是橋接模式就可以了

 

<interface type='bridge'>

<mac address='00:16:36:1e:1d:04'/>

<source bridge='virbr0'/>

</interface>

 

KVM虛擬機遷移:

遷移命令:virsh migrate –live<id or name> qemu+ssh://<dstip>/system tcp://<dstip>:49152

遷移完之後,本地機器可能仍是定義狀態,要執行virsh undefine <name>清除。

 

注意:/dev/zero是一個輸入設備,用來初始化文件。

      /dev/null是個無底洞,可以向它輸出任何數據,它通喫並且不會撐着。

 

 實例:

1、使用ssh登入服務器:ssh 193.169=8.195.248

2、創建磁盤:    qemu-img create -f qcow2 rhel6.5x64.img 15G

3、生成xml:     virsh dumpxml rhel6.5x64 > rhelxml

4、編輯xml:    vimrhelxml

a\修改name:rhel6.5x64

b\修改type:   type=qcow2

c\修改mac地址: 改成不一樣的就可以:比如: a1->a2;

d\修改兩個source地址: iso   img

e\去除uid那一行

5、定義xml:virsh define rhelxml

6、開啓rhel6.5x64:virsh start rhel6.5x64

 

 

 

 

 

另外一些查看命令:

virsh list --all:查看所有的虛擬機的信息

virsh vncdispaly ID;

vnc viewer address:oprt

 

 

 

一、安裝guest虛擬機
1、直接通過virt-manager安裝、管理虛擬機(略)
2、通過命令行安裝guest虛擬機
qemu-img create -f qcow2 /images/centos6.3-x86_64.img 10G
chown qemu:qemu /images/centos6.3-x86_64.img
virt-install --name centos6.3 --ram=1024 --arch=x86_64 --vcpus=1 --check-cpu --os-type=linux --os-variant='rhel6' -c /tmp/CentOS-6.3-x86_64-minimal.iso --disk path=/images/centos6.3-x86_64.img,device=disk,bus=virtio,size=10,format=qcow2 --bridge=br100 --noautoconsole --vnc --vncport=5902 --vnclisten=0.0.0.0

二、利用virsh對虛擬機管理
2、開關機
virsh start centos6.3 #開機
virsh create /etc/libvirt/qemu/centos6.3.xml #直接通過主機配置文檔啓動主機
virsh shutdown centos6.3 #關機
virsh destroy centos6.3 #強制關閉電源
virsh list --all #查看虛擬機狀態

3、添加刪除虛擬機
virsh define /etc/libvirt/qemu/node5.xml #根據主機配置文檔添加虛擬機
virsh list --all #node5已經添加
virsh undefine node5 #移除虛擬機
ls /etc/libvirt/qemu
virsh list --all #node5已經被移除

4、使用已存在的虛擬機配置文檔安裝新的虛擬機
qemu-img create -f qcow2 /virhost/kvm_node/node6.img 20G#爲新建虛擬機生產磁盤鏡像文件
virsh list
virsh dumpxml node4 >/etc/libvirt/qemu/node6.xml#導出虛擬機node6的硬件配置信息爲/etc/libvirt/qemu/node6.xml
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的衝突
<source file='/virhost/node4.img'/> #指定新虛擬機的硬盤文件
virsh define /etc/libvirt/qemu/node6.xml #使用虛擬描述文檔建立虛擬機,
可用virsh edit node6修改node6的配置文件
virsh start node6#啓動虛擬機

5 爲虛擬機開啓vnc
virsh edit node4 #編輯node4的配置文件;不建議直接通過vim node4.xml修改。
<graphics type='vnc' port='-1' listen='127.0.0.1' keymap='en-us'/>
#port='-1' :port自動分配,監聽迴環網絡(virt-manager管理需要listen='127.0.0.1'),無密碼
改爲
<graphics type='vnc' port='5904' listen='0.0.0.0' keymap='en-us' passwd='xiaobai'/>
#固定vnc管理端口5904,不自動分配,vnc密碼xiaobai,監聽所有網絡

遠程vnc訪問地址:192.168.32.40:5904

三、存儲池和存儲卷的管理

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

 

game over!

待續。。。。。

 

安裝虛擬機
從 6 系列開始 RedHat 推薦使用 virt-install/virsh 系列工具操作 kvm,而不是直接使用 qemu-kvm,所以 qemu-kvm 被移到一個不起眼的地方 /usr/libexec/:

# qemu-kvm
-bash: qemu-kvm: command not found

# ls /usr/libexec/qemu-kvm
/usr/libexec/qemu-kvm
VPSee 採用 RedHat 推薦的方式(virt-install)安裝虛擬機,這裏以安裝 Ubuntu-11.10-server-amd64.iso 爲例:

# virt-install \
--name ubuntu \
--ram 512 \
--vcpus=1 \
--disk path=/root/ubuntu.img,size=10 \
--accelerate \
--cdrom /root/ubuntu-11.10-server-amd64.iso \
--graphics vnc
開始安裝,創建硬盤 ubuntu.img 後就報錯,用的是 root 帳號居然還 Permission denied?!

Starting install...
Creating storage file ubuntu.img                                 | 10.0 GB     00:00
ERROR    internal error Process exited while reading console log output: char device redirected to /dev/pts/1
qemu-kvm: -drive file=/root/ubuntu.img,if=none,id=drive-ide0-0-0,format=raw,cache=none: could not open disk image /root/ubuntu.img: Permission denied

Domain installation does not appear to have been successful.
If it was, you can restart your domain by running:
  virsh --connect qemu:///system start ubuntu
otherwise, please restart your installation.
修改 qemu.conf 配置,把下面幾個地方的註釋去掉,然後把 dynamic_ownership 的值改成0,禁止 libvirtd 動態修改文件的歸屬:

# vi /etc/libvirt/qemu.conf
...
user = "root"
group = "root"
dynamic_ownership = 0
...
重啓 libvirtd 服務再用上面的 virt-install 命令安裝就應該可以了。這個時候 vnc 默認綁定的是本機 127.0.0.1,如果其他機器想用 vnc 客戶端訪問這臺 kvm 服務器正在安裝的 ubuntu 的話需要把 vnc 綁定到服務器的 IP 地址或者綁定到全局 0.0.0.0. 修改 qemu.conf 文件取消 vnc_listen 一行前面的註釋,記得重啓 libvirtd:

# vi /etc/libvirt/qemu.conf
...
vnc_listen = "0.0.0.0"


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章