天天看點

linux部署kvm虛拟化KVM概述

初學Linux的朋友往往自己會做很多實驗,這就需要用到許多虛拟機,本文介紹了一種适合個人實驗環境的kvm快速部署虛拟機,(企業環境也可以,根據實際情況修改),純手打原創。

KVM概述

Kernel-based Virtual Machine的簡稱,kvm是一個開源的基于硬體的虛拟化技術,是以需要cpu的支援(Intel VT技術或者AMD V技術)。企業裡常用到的vmware 是基于軟體層面的虛拟化,這是兩者的差別。這裡為什麼選擇kvm,是因為他部署簡單,不需要另外的用戶端管理,可以完全用指令管理,友善操作。

步驟

1.一台實體機,也可以是雲伺服器,配置看自己情況,記憶體要大,不能低于8G。安裝centos(推薦7系列的版本)圖形版或者ubuntu 桌面版,這裡以實驗環境舉例,是以安裝帶圖形的版本。

以centos舉例,ubuntu安裝方法一樣。

2.配置網絡yum源,有些包iso鏡像裡沒有,用網絡yun源友善解決。

執行egrep -c ‘(vmx|svm)’ /proc/cpuinfo指令

如果輸出結果為0則說明CPU不支援硬體虛拟化

如果輸出結果大于0則說麼可以支援

如果不支援請進入開機bios開啟cpu虛拟化,主流cpu都支援虛拟化。

3.安裝軟體包:

必備軟體

qemu-kvm— 為kvm提供底層支援

libvirt-client — virsh等軟體

libvirt-daemon — libvirtd服務程序

libvirt-daemon-driver-qemu— virsh的qemu驅動

可選功能

virt-install — 系統安裝工具

virt-manager— 圖形管理工具,在這裡一定要裝,純指令管理不适合初學者

virt-v2v— 虛拟機遷移工具

virt-p2v— 實體機遷移工具

3.搭建網橋,這是關鍵的一步,保證虛拟機和真機能通訊。

進入/etc/libvirt/qemu/networks目錄,裡面有個defaulst.xml的模闆配置檔案,可以拿這個複制,也可以重新手寫,必須在此目錄下。

自建一個以.xml結尾的檔案,推薦名稱以你要命名的網卡加.xml結尾,内容如下:

<network> <name>網卡名</name> <forward mode='nat'/> <bridge name='網卡名'/> <ip address='192.168.1.254' netmask='255.255.255.0'> <dhcp> <range start='192.168.1.100' end='192.168.1.200'/> </dhcp> </ip> </network>

//其中漢字部分可以自定義,192.168.1.254是自己給本機這個網卡設定的ip,可以自己随意設定,但主機位最好是254,這個是虛拟機的網關。第三行是轉發的方式,如果沒有這個隻能内部通訊,不能連結網際網路。dhcp這一段是給虛拟機用dhcp的方式分發ip,範圍是從100到200,可以将這3行删掉,就是建立的虛拟機沒有ip,自己手動配置。結束儲存退出。

激活:vrish net-define 網卡.xml

啟動:virsh net-start 網卡

開機啟動:virsh net-autostart 網卡

現在ifconfig檢視就會發現多了一個叫xx的網卡,并且IP是192.168.1.254/24

4.建立虛拟磁盤

進入/var/lib/libvirt/images/目錄,這是預設磁盤存放目錄

qemu-img create -f qcow2 node.qcow2 50G

//node.qcow2是磁盤的名稱,建立時要以qcow2結尾,不然等會識别不出來,後面做成模闆後就可以随意命名,50G是給磁盤的大小,這個大小隻是一個檔案,跟真機的實體磁盤大小沒關系。

qemu-img info node.qcow2 可以檢視這個虛拟磁盤的資訊

5.建立模闆虛拟機

打開vrit-manager圖行管理,點選左上的小燈泡按鈕,選擇建立虛拟機,這裡要自己準備一個centos7的鏡像,可以去官網下載下傳,選擇本地鏡像安裝(其他方式也可以,這裡選簡單的),選擇你下載下傳好的鏡像,下一步,注意在網卡選擇上要選擇你剛才建立的網卡,記憶體給2048就夠了,磁盤不要選擇第一個選項,要選擇第二個,并找到剛才你建立的node.qcow2磁盤,在自定義配置裡最好自己添加幾個網卡,選擇virtool(記不太清了),不添加也沒關系,其他和正常裝系統沒差別,選擇最小化安裝。如果安裝報錯cpu不支援,請進入開機bios将cpu虛拟化打開,前面說過kvm需要cpu支援。

系統安裝好了用root進入,centos預設的密碼是redhat,進入檢視ip是否配置設定ok(用ip a指令),并配置yum源,(這裡不要用網絡yum,真機挂載一個iso鏡像通過http或者ftp共享),用真機ssh遠端該虛拟機友善操作,安裝常用軟體包:

自動補齊的包:bash-completion

ifconfig:net-tools 可以用yum provides查找自己需要的指令的包

禁用防火牆,selinux

禁用空路由:vim /etc/sysconfig/network

添加 NOZEROCONF=”yes”

配置console端口:

vim /etc/sysconfig/grub

在GRUB_CMDLINE_LINUX這一段的後面添加 console=tty0 console=ttyS0,115200n8 (要包含在分号裡面)

激活:grub2-mkconfig -o /boot/grub2/grub.cfg

修改網卡配置檔案:删除裡面的uuid,mac位址,ip位址,網關,如果沒有DEVICE=”**” 該行要自己添加。關閉虛拟機。

6.修改虛拟機模闆配置檔案。

//虛拟機有2個檔案,分别是磁盤檔案和硬體配置檔案,kvm的虛拟機就是通過這2個檔案來産生,磁盤檔案在/var/lib/libvirt/images, 配置檔案在/etc/libvirt/qemu.

進入/etc/libvirt/qemu目錄,将剛才建的模闆虛拟機配置檔案複制一份命名為node1.xml,然後vim修改

<domain type='kvm'>           <name>centos7.0</name>        ##定義虛拟機名稱,這裡要改成新的名稱node1 <uuid>c2d264d3-5c61-4d2e-8678-b28673c1f64b</uuid> ##删掉改行 <memory unit='KiB'>1048576</memory> ##定義記憶體大小,根據你自己的模闆來,可以不改 <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu> <os>                  <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type> <boot dev='hd'/>       </os> <features>           <acpi/> <apic/> </features> <cpu mode='custom' match='exact'> <model fallback='allow'>Haswell-noTSX</model> </cpu> <clock offset='utc'> <timer name='rtc' tickpolicy='catchup'/> <timer name='pit' tickpolicy='delay'/> <timer name='hpet' present='no'/> </clock> <on_poweroff>destroy</on_poweroff>       <on_reboot>restart</on_reboot> <suspend-to-mem enabled='no'/> <suspend-to-disk enabled='no'/> </pm> <devices>                 <emulator>/usr/libexec/qemu-kvm</emulator> <disk type='file' device='disk'>     <driver name='qemu' type='qcow2'/> <source file='/var/lib/libvirt/images/node.qcow2'/> ##虛拟磁盤的位置,将後面的node.qcow2改成新名字node1.img <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> </disk> <controller type='usb' index='0' model='ich9-ehci1'> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x7'/> </controller> <controller type='usb' index='0' model='ich9-uhci1'> <master startport='0'/> </controller> <controller type='usb' index='0' model='ich9-uhci2'> <master startport='2'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x1'/> </controller> <controller type='usb' index='0' model='ich9-uhci3'> <master startport='4'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x2'/> <controller type='virtio-serial' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </controller> <interface type='bridge'>     <mac address='52:54:00:6a:1e:54'/> ##删除改行 <source bridge='br0'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> <serial type='pty'>       <target port='0'/> </serial> <console type='pty'> <target type='serial' port='0'/> </console> <channel type='unix'> <target type='virtio' name='org.qemu.guest_agent.0'/> <address type='virtio-serial' controller='0' bus='0' port='1'/> </channel> <channel type='spicevmc'> <target type='virtio' name='com.redhat.spice.0'/> <address type='virtio-serial' controller='0' bus='0' port='2'/> </channel> <input type='tablet' bus='usb'/> <input type='mouse' bus='ps2'/> <input type='keyboard' bus='ps2'/> <graphics type='vnc' port='-1' autoport='yes' keymap='en-us'/> <sound model='ich6'>      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </sound> <video> <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </video> <redirdev bus='usb' type='spicevmc'> </redirdev> <redirdev bus='usb' type='spicevmc'> </redirdev> <memballoon model='virtio'> <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/> </memballoon> </devices> </domain>

7.根據模闆虛拟機克隆新的虛拟機。

進入磁盤檔案目錄:(不進入要打絕對路徑)

qemu-img create -b node.qcow2 -f qcow2 node1.img

根據node.qcow2建立一個名為node1.img的磁盤檔案

根據剛才修改過的配置檔案啟動新的虛拟機:

cd /etc/libvirt/qemu

virsh define node1.xml

virsh start node1

新的虛拟機啟動起來就ok了,如果有報錯,請仔細檢查配置檔案裡面改動的名稱和磁盤檔案名稱是否對應,虛拟機名稱不能重複。

下面是一些用到的管理虛拟機指令

virsh nodeinfo 檢視KVM節點(伺服器)資訊

virsh list [–all] 列出虛拟機

virsh net-list [–all] 列出虛拟網絡

virsh dominfo 虛拟機名稱 檢視指定虛拟機的資訊

virsh start|reboot|shutdown 虛拟機名稱 virsh undefine 虛拟機名 運作|重新開機|關閉挃定的虛拟機

virsh destroy 虛拟機名稱 強制關閉指定的虛拟機

virsh autostart [–disable] 虛拟機名稱 将指定的虛拟機設為開機自動運作

virsh undefine 虛拟機名 删除虛拟機

virsh console 虛拟機名 用console連接配接虛拟機

這樣以後每次需要新的虛拟機就直接更改xml配置檔案,再根據模闆磁盤檔案克隆一個新的磁盤檔案,就能直接啟動新的虛拟機,可以自己寫一個腳本,用sed替換掉裡面的名稱和磁盤名稱,啟動新虛拟機,以後每次需要新虛拟機就執行改腳本,腳本的智能化就取決于自己水準,可以做個互動判斷需要一次克隆幾台虛拟機。

繼續閱讀