RedHead虛擬化-KVM分析實踐

RedHead虛擬化-KVM分析實踐

wKioL1TBGo7jv64OAAFKX99u5xQ289.jpg

wKiom1TBGbiRxoxIAAEXgqX3fDI923.jpg

wKioL1TBGo-RzjWuAABYEXt33IM908.jpg


KVM是網絡中的治理設備,它是Keyboard(鍵盤)、Video(顯示器)和Mouse(鼠標)三個單詞的第一個字母。即能夠實現用一套鍵盤、顯示器、鼠標來控制多臺設備。簡單點說就是在一個服務器上運行多個操作

系統,每個系統都是獨立的,類似於這種技術的還有云平臺。

本文出自 “黃寶良” 博客,請務必保留此出處http://hblbk.blog.51cto.com/7645149/1548025

虛擬化的技術目前在科技前沿還是有着很重大的地位的。




第一:創建虛擬機鏡像

爲創建虛擬主機準備磁盤,此處的磁盤可以使用LV更可備份以及製作快照

qemu-img create -f raw /p_w_picpaths/dieskname.raw 8G
qemu-img create -f qcow2 /p_w_picpaths/dieskname.qcow2 8G
-f 選項 指定 虛擬磁盤的類型
raw 優點
1、效率高於qcow2
2、直接讀寫虛擬機硬盤裏面的文件,這比較"暴力",但既然可以這麼暴力,那麼也就不怕虛擬機出任何問題了。
3、通用性好,是轉爲其他虛擬機的格式的通用中間格式,這樣就不用擔心轉換虛擬機系統了
qcow2 優點
1、加密功能:把raw本身就當普通文件加密之搞定
2、快照功能:把raw加入版本管理目錄中,具體需要的設置可能稍微有點多。
3、宿主機不支持按需打孔模式(hole):這個可以自己根據使用情況來擴展raw的最大值
4、硬盤壓縮:就當普通電腦文件壓縮之即可
創建鏡像
qemu-img create -f <fmt> -o <options> <fname> <size>

舉例:

qemu-img create -f raw -o size=4G /p_w_picpaths/vm2.raw
查看快照的信息
qemu-img info vm2.raw

第二:轉化命令: qcow2格式的支持壓縮

qemu-img convert -c -f fmt -O out_fmt -o options fname out_fname

-c:採用壓縮,只有qcow和qcow2才支持

-f:源鏡像的格式,它會自動檢測,所以省略之

-O 目標鏡像的格式

-o 其他選項

fname:源文件

out_fname:轉化後的文件

看例子:

qemu-img convert -c -O qcow2 vm2.raw vm2.qcow2

如果想看要轉化的格式支持的-o選項有哪些,可以在命令末尾加上 -o ?

qemu-img convert -c -O qcow2 vm2.raw vm2.qcow2 -o ?
本文出自 “黃寶良” 博客,請務必保留此出處http://hblbk.blog.51cto.com/7645149/1548025第三 :增加減少鏡像大小

qemu-img resize vm2.raw +2GB
可以使虛擬磁盤的容量增大"+" 或減小"-"

第四:快照的使用

查看快照

qemu-img snapshot -l /p_w_picpaths/vm2.qcow2
列出虛擬磁盤快照列表
注意:只有qcow2才支持快照 !

創建快照
snapshot 選項 爲創建管理快照時使用
qemu-img snapshot -c booting vm2.qcow2

舉例:
創建快照
qemu-img snapshot -c booting vm2.qcow2

查看快照的信息
創建快照後用以下命令去查看磁盤快照的列表
qemu-img snapshot -l vm2.qcow2
Snapshot list:
ID TAG VM SIZE DATE VM CLOCK
1 booting 0 2012-06-29 14:35:04 00:00:00.000

從快照恢復:快照還原時要確保虛擬機是down的狀態
qemu-img snapshot -a 1 /p_w_picpaths/vm2.qcow2

然後從kvm啓動這個虛擬機,會發現虛擬機又在打快照時的狀態了

刪除快照:
-d 選項 是指定快照的編號
qemu-img snapshot -d 2 /p_w_picpaths/vm2.qcow

新建一個鏡像,但是派生自它
qemu-img create -f qcow2 vm3_5.qcow2 -o backing_file=vm3_base.raw 5G

qemu-img convert -O raw vm3_5.qcow2 vm3_base2.raw

以上是kvm虛擬機的虛擬磁盤操作 ,以下爲磁盤創建後如何安裝系統至虛擬磁盤以及如何管理KVM虛擬機


第一:準備主機環境


在一個沒有任何環境的主機上實現kvm虛擬機的搭建需要做到以下幾點
1、CPU虛擬機化開啓
2、安裝所需要的環境包及相關工具,安裝包:virt-manager virt-* libvirt libvirt-* python-virt* qemu-*
3、準備一個分區最好是LVM,並掛載到/var/lib/libvrit/p_w_picpaths/ 下,此步不是必須的但是爲了防止磁盤空間的不足,建議去做。
4、準備好後開啓libvirtd服務,並設置自啓動

第二:創建虛擬機鏡像
準備一個磁盤大小任意,但必須要足夠系統的使用最低容量
qemu-img create -f qcow2 server.qcow2 50G
此處的格式及名稱可任意指定,此文件最好是放在 /var/lib/libvrit/p_w_picpaths/下, 一般情況下qcow2的功能要比raw的虛擬磁盤多,我這裏默認爲qcow2,
因爲後期要對磁盤進行壓縮你就會看到qcow2類型的磁盤的優點了。
創建完畢

第四:安裝系統到虛擬磁盤server.qcow2
安裝方式有兩種
1、圖形化安裝,在此不多做解釋
2、命令行下進行安裝,重點介紹

命令安裝時用到的命令
virt-install
--vnc 選則顯示方式
--noautoconsole 自動分配TLS端口
--name 指定虛擬機的名稱
--ram 指定虛擬機的內存大小 以"M" 爲單位
--arch 指定虛擬機的硬件架構
--vcpus 指定CPU的個數
--os-type 指定系統的名稱
--hvm 虛擬機系統的類型
--disk 指定虛擬機磁盤的位置及文件名
-w bridge 指定虛擬機的網卡,注意網卡必須是橋接網卡類似:br0 br1
--location 指定安裝光盤的位置,此處已pxe爲例
--extra-args 指定KS文件的所在位置
noipv6 不啓用IPV6

以上爲我理解的各選項的意思,以下爲例(此爲一行):
virt-install --vnc --noautoconsole --name=server --ram=2048 --arch=x86_64
--vcpus=1 --os-type=linux --os-variant=rhel7 --hvm --accelerate --disk=/var/lib/libvrit/p_w_picpaths/server.qcow2 -w bridge=br0 --location=http://172.24.254.254/exam/rhel7/dvd/
--extra-args="ks=http://172.24.254.254/exam/ks/vserver/rhcsa-server.ks noipv6
成功後 使用 sudo virt-manager 打開KVM虛擬機管理器雙擊虛擬機查看
安裝完成後使用命令
virsh dumpxml server > /var/lib/libvrit/p_w_picpaths/server.xml
生成系統引導文件
本文出自 “黃寶良” 博客,請務必保留此出處http://hblbk.blog.51cto.com/7645149/1548025執行後安裝系統步驟不去詳細解說。
注:--disk 此選項所支持的磁盤類型包括LVM,可對lvm做快照實現虛擬機的還原及備份

第五 :轉換並壓縮
安裝完系統後磁盤的大小在3-5G 不等,主要看系統的類型,此時這個文件就不在隨意挪動了,爲了解決這個問題
我們對此文件做一下壓縮
qemu-img convert -c -f qcow2 server.qcow2 server-vda.qcow2
執行完畢後看到 server-vda.qcow2文件的大小隻有1G左右就成功了
將server.qcow2文件刪除即可

第六:引導名爲server的虛擬機開啓
引導的方式也有很多,此處僅介紹XML文件引導

文件內容如下:

<?xml version="1.0" ?>
- <domain type="kvm">
<name>server</name> /*此爲虛擬機的名稱
<memory>2097152</memory> /*此爲內存大小不需和
<currentMemory>2097152</currentMemory>
<clock offset="utc" />
<vcpu>1</vcpu> /*此爲CPU個數
- <features>
<acpi />
<apic />
<pae />
</features>
- <os>
<type>hvm</type>
<boot dev="hd" />
<bootmenu enable="yes" />
</os>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
- <devices>
- <graphics type="spice" port="5903" autoport="yes" listen="127.0.0.1">
<listen type="address" address="127.0.0.1" />
</graphics>
<graphics port="-1" type="vnc" />
- <interface type="bridge">
<source bridge="br0" />
<mac address="52:54:00:00:00:0B" /> /*MAC地址指定
<model type="virtio" />
</interface>
<input bus="ps2" type="mouse" /> /*鼠標設備
- <serial type="pty">
<target port="0" />
</serial>
- <video>
<model type="qxl" ram="65536" vram="65536" heads="1" />
<alias name="video0" />
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x0" />
</video>
- <disk device="disk" type="file">
<target bus="virtio" dev="vda" />
<source file="/var/lib/libvirt/p_w_picpaths/rh299-server-vda.qcow2" /> /*指定磁盤文件
<driver name="qemu" type="qcow2" />
</disk>
</devices>
</domain>

使用命令 virsh create server.xml 引導系統
注意:引導時不能存在名叫server的主機,解決方法,關閉server主機並刪除主機,或者更改XML文件裏的uuid和虛擬機名稱
uuidgen 命令 生成隨機uuid

引導完成

第七:虛擬機管理
強制關機 virsh destroy server
重啓主機 virsh reboot server
本文出自 “黃寶良” 博客,請務必保留此出處http://hblbk.blog.51cto.com/7645149/1548025第八:虛擬機還原
當我們創建好此係統後開機第一次不做任何操作,然後copy server-vda.qcow2 文件爲server-vda.val
然後修改server.xml文件 的磁盤路徑/var/lib/libvrit/p_w_picpaths/server-vda.val
可以將這個過程用腳本實現自動化過程
END


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