kvm的安裝與使用
1,技術參考
http://taokey.blog.51cto.com/4633273/1540873
http://www.server-world.info/en/note?os=CentOS_6&p=kvm&f=1
http://koumm.blog.51cto.com/703525/1288795
http://www.361way.com/category/virtualization-cloud-automation/page/3
注意:在做實驗之前,先确定cpu是否支援虛拟化,在bios裡面看,并把虛拟化功能打開
本實驗是直接使用vmware安裝centos6.6-64位,如果在實際環境,則直接在真機上使用
實驗前的準備:
1.給虛拟機硬體資源的大小(cpu,硬碟,記憶體等)
2.硬碟給兩個磁盤,一個裝系統,另一個用來存放虛拟機的檔案
3.在虛拟機上cpu配置啟用虛拟化
預設是raw格式 一般建立qcow2格式
下面就是安裝centos系統了,這個百度上有很多,就不介紹了。重點是kvm
安裝kvm之前,需要做的準備
1.清除iptable規則或者關閉iptables服務
service iptables stop
chkconfig iptables off
2.關閉selinux
setenforce 0
3.檢視一下cpu是否支援虛拟化
cat /proc/cpuinfo 或者 grep -Ei 'vmx|svm' /proc/cpuinfo
如果有輸出内容,則支援,其中intel cpu支援會有vmx,amd cpu支援會有svm
4.先配置ip保證機器能夠上網
安裝虛拟化軟體包使用yum(如果yum安裝不了的,則需要安裝epel源了)
yum install -y kvm virt-* libvirt bridge-utils qemu-img
檢查kvm子產品是否加載
lsmod |grep kvm
正常應該是:
kvm_intel 55496 3
kvm 337772 1 kvm_intel
如果沒有,需要執行
modprobe kvm-intel
還沒有就重新開機一下試試
配置網卡
cd /etc/sysconfig/network-scripts/
cp ifcfg-eth0 ifcfg-br0
分别編輯eth0和br0
ifcfg-eth0改成如下:
DEVICE=eth0
HWADDR=00:0C:29:55:A7:0A
TYPE=Ethernet
UUID=2be47d79-2a68-4b65-a9ce-6a2df93759c6
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
BRIDGE=br0
ifcfg-br0改成如下:
DEVICE=br0
#HWADDR=00:0C:29:55:A7:0A
TYPE=Bridge
#UUID=2be47d79-2a68-4b65-a9ce-6a2df93759c6
BOOTPROTO=static
IPADDR=192.168.11.17
NETMASK=255.255.255.0
GATEWAY=192.168.11.1
DNS1=202.106.0.20
說明: 我的虛拟機是橋接模式,是以設定br0的ip和我的真機同樣的網段,包括網關也是我路由器的ip,大家可以根據自己的環境去配置,目的是為了讓虛拟機可以上網。
重新開機網絡服務
/etc/init.d/network restart
檢視網卡br0的ip
ifconfig -a
啟動或重新開機libvirtd服務和messagebus 服務
/etc/init.d/libvirtd start
/etc/init.d/messagebus restart
此時可以檢視網絡接口清單
brctl show 結果如下:
bridge name bridge id STP enabled interfaces
br0 8000.000c2955a70a no eth0
virbr0 8000.52540014efd5 yes virbr0-nic
建立虛拟機
把50G大小的容量挂載在/data目錄下面,用于存放虛拟機
mkdir /data/ //建立一個存儲虛拟機虛拟磁盤的目錄,該目錄所在分區必須足夠大
virt-install \
--name aming1 \
--ram 512 \
--disk path=/data/aming1.img,size=30 \
--vcpus 1 \
--os-type linux \
--os-variant rhel6 \
--network bridge=br0 \
--graphics none \
--console pty,target_type=serial \
--location 'http://mirrors.163.com/centos/6.8/os/x86_64' \
--extra-args 'console=ttyS0,115200n8 serial'
注意:随着時間久了,可能使用的網絡資源不存在了,則需要自己在網絡上找了。
使用網絡資源的情況下,主機需要能聯網,如果網絡不可用,則會跳到讓你選擇使用其他的方式安裝
說明:
--name 指定虛拟機的名字
--ram 指定記憶體配置設定多少
--disk path 指定虛拟磁盤放到哪裡,size=30 指定磁盤大小為30G,這樣磁盤檔案格式為raw,raw格式不能做快照,後面有說明,需要轉換為qcow2格式,如果要使用qcow2格式的虛拟磁盤,需要事先建立qcow2格式的虛拟磁盤。 參考 http://www.361way.com/kvm-qcow2-preallocation-metadata/3354.html 示例:qemu-img create -f qcow2 -o preallocation=metadata /data/test02.img 7G; --disk path=/data/test02.img,format=qcow2,size=7,bus=virtio
--vcpus 指定配置設定cpu幾個
--os-type 指定系統類型為linux
--os-variant 指定系統版本
--network 指定網絡類型
--graphics 指定安裝通過哪種類型,可以是vnc,也可以沒有圖形,在這裡我們沒有使用圖形直接使用文本方式
--console 指定控制台類型
--location 指定安裝媒體位址,可以是網絡位址,也可以是本地的一個絕對路徑,(--location '/mnt/', 其中/mnt/下就是我們挂載的CD光牒鏡像mount /dev/cdrom /mnt)如果是絕對路徑,那麼後面還需要指定一個安裝媒體,比如NFS,假如虛拟機設定ip後,不能連外網,那麼就會提示讓我們選擇安裝途徑:
下面就是我們非常熟悉的界面了,根據安裝提示,進行安裝。不過這裡使用的全部都是文本模式的,如果想使用圖形界面,可以開啟vnc
最後安裝完,reboot就進入剛剛建立的虛拟機了。要想退回到主控端,ctrl ] 即可。
virsh list 可以列出目前的子機清單。
virsh console centos6.6_1 可以進入指定的子機
退出到母機 ctrl+]
kvm的使用
virsh list 檢視目前的子機清單
virsh list --all 列出全部的子機
virsh console 名字 登入子機
virsh shutdown 名字 關閉子機 需要在母機和用戶端都安裝acpid包
virsh start 名字 --console 開啟子機,并直接進入
ctrl+] 退出
virsh destroy bob 關閉虛拟機
virsh start bob 開啟虛拟機
virsh suspend bob 挂起虛拟機
virsh resume bob 恢複挂起機器
virsh autostart bob 自動開始(母機啟動,子機也一起起來)
virsh autostart --disable bob 解除自動開始
徹底的銷毀機器
virsh destory bob 删除機器
virsh undefine bob 取消定義
然後再删除安裝檔案
更改虛拟機的名字:
cd /etc/libvirt/qemu 把配置檔案名字改一下,然後編輯配置檔案,更改 <name></name> 這裡面的字元。 還得重新開機一下 /etc/init.d/libvirtd restart
虛拟機克隆
1.先關閉虛拟機 virsh shutdown bob
2.在母機裡面操作
virt-clone --original alo7 --name test --file /data/kvm/test.qcow2
如果網卡名字有錯誤,可以直接修改或者編輯這個檔案
vim /etc/udev/rules.d/70-persistend-net.rules
建立快照(可以再開機或者關機的狀态下建立)
virsh snapshot-create bob
檢視格式
qemu-img info /data/kvm/bob.img
編輯虛拟機的配置檔案
virsh edit bob 和直接編輯這個檔案是一樣的 vim /etc/libvirt/qemu/bob.xml
轉換磁盤格式
qemu-img convert -f raw -O qcow2 /data/kvm/bob.img /data/kvm/bob.qcow2
源格式 後格式 源路徑 後路徑
檢視虛拟機的快照
virsh snapshot-list bob
恢複快照
virsh snapshot-revert bob id号(1441043345)
檢視目前子機的快照版本
virsh snapshot-current bob
删除一個快照
virsh snapshot-delete bob 1143043345
檢視快照存放的位置
ls /var/lib/libvirt/qemu/snapshot/bob/
kvm磁盤擴容
qemu-img info /data/kvm/saybot.qcow2 檢視大小
qemu-img resize /data/kvm/saybot.qcow2 +5G 加5個G 添加的是實體主機的磁盤空間
注意:直接進入saybot主機。裡面是看不到新加的大小的。需要先virsh destroy saybot ,在啟動機器在裡面才會生效
下面需要從新分區為vda4
fdisk /dev/vda
建立pv (注意:如果在建立的時候找不到vda4,則重新開機機器)
pvcreate /dev/vda4
pvs檢視一下
pv加入到VG裡面去,
vgextend VolGroup /dev/vda4
加入後,用pvs檢查一下
vgs檢視一下
lvs檢視一下邏輯卷
下面把lvm新加的5G空間加入到lv_root裡面
lvextend -l +100%FREE /dev/VolGroup/lV_root 吧剩下的所有空間都加入到lv_root裡面
最後需要對操作的地方進行resize2fs
resize2fs /dev/VolGroup/lv_root
添加虛拟磁盤
退出主機,進入母機裡面
qemu-img create -f qcow2 /data/kvm/saybot1.qcow2 5G
virsh destroy saybot
virsh edit saybot
複制一段disk‘
<disk type='file' device='disk'>
<driver name='qemu' type='raw' cache='none'/>
<source file='/data/kvm/test03_2.img'/>
<target dev='vdb' bus='virtio'/>
</disk>
開啟虛拟機:virsh start test03
進入虛拟機:virsh console test03
分區: fdisk /dev/vdb
格式化 (略)
挂載 (略)
當然也可以按照上面的思路把 /dev/vdb1 加入到 lvm裡面去
通過虛拟磁盤恢複虛拟機檔案
虛拟機的配置檔案/etc/libvirt/qemu
虛拟機磁盤檔案/data/kvm
virsh dumpxml saybot > /etc/libvirt/qemu/xcb.xml
相當于備份saybot并重命名xcb.xml
編譯剛那個檔案
vim /etc/libvirt/qemu/xcb.xml
修改的地方有:名字,uuid,type,file
重新定義xcb檔案或者指定檔案
virsh define /etc/libvirt/qemu/xcb.xml
調整cpu,記憶體和網卡
修改cpu和記憶體直接更改配置檔案既可,并吧機器destroy ,最後啟動
列出網卡
修改網卡的名字
vi /etc/udev/rules.d/70-persistent-net.rules
檢視網卡資訊
virsh domiflist saybot
添加一塊網卡
virsh attache-interface saybot --type bridge --source br0
virsh dumpxml saybot > /etc/libvirt/qemu/saybot.xml
機器啟動的狀态,直接添加即可生效
機器關閉的狀态,添加網卡
更改的地方有:mac位址,删掉address行
然後啟動系統virsh start saybot --console
kvm系統遷移
1.可以拷貝/data/kvm目錄下的.qcow2檔案
2.拷貝/etc/libvirt/qemu目錄下的配置檔案.xml
1.機器關機
2.拷貝檔案
virsh dumpxml saybot > /etc/libvirt/qemu/saybot1.xml
3.檢視虛拟磁盤在哪裡
virsh domblklist saybot
4.拷貝磁盤到遠端去
rsync -avp /data/kvm/saybot.qcow2 /data/kvm/saybot1.qcow2
5.編輯配置檔案
vim /etc/libvirt/qemu/saybot1.xml
更改的地方:name,uuid,file,
6.定義
virsh define /etc/libvirt/qemu/saybotq.xml
7.開啟
virsh start saybot1 --console
注意:如果是遷移到遠端上去,則不需要更改配置檔案
如果遠端機器上有相同名字的,也需要更改。