[原]CentOS7.2部署KVM虛擬機

 

前段時間學習了關於PostGis、OSM數據以及Mapnik相關內容,接下來將利用假期重點學習PostgreSQL-XL和瓦片服務器集羣技術,所以先把環境搭好。計劃採用KVM來充分利用家裏不太寬裕的「服務器」資源,以便實現彈性計算:)html

CentOS版本:64位 7.2  1511 linux

1、安裝KVM

1. 驗證CPU是否支持KVM;若是結果中有vmx(Intel)或svm(AMD)字樣,就說明CPU的支持的。shell

egrep '(vmx|svm)' /proc/cpuinfo

2. 關閉SELinux,將 /etc/sysconfig/selinux 中的 SELinux=enforcing 修改成 SELinux=disabled vim

3. 最小安裝的CentOS安裝一些最基本的包(可選項,由於我是剛安裝好的CentOS,因此爲了下面方便點,先把一些必要的工具安裝下)centos

yum install epel-release net-tools vim unzip zip wget ftp -y

4. 安裝KVM及其依賴項服務器

yum install qemu-kvm libvirt virt-install bridge-utils -y

5. 驗證安裝結果,下圖說明已經成功安裝了網絡

lsmod | grep kvm

6. 開啓kvm服務,而且設置其開機自動啓動tcp

systemctl start libvirtd

systemctl enable libvirtd

----------------2019.02.28更新-------------------------工具

報「Failed to load module '/usr /lib64/libvirt/connection-driver/libvirt_driver_interface.so': libexslt.so.0:「錯誤學習

解決方法爲

yum install -y libxslt.x86_64

----------------2019.02.28更新結束-------------------------

7. 查看狀態操做結果,以下圖所示,說明運行狀況良好

systemctl status libvirtd

systemctl is-enabled libvirtd

8. 配置網橋模式,先將 /etc/sysconfig/network-scripts/ 目錄下的網卡配置文件備份一份(不要備在當前目錄以及子目錄下,其餘目錄隨意)

a. 建立 ifcfg-br0 文件,內容以下:

BOOTPROTO=static
DEVICE=br0
TYPE=Bridge
NM_CONTROLLED=no
IPADDR=192.168.1.95
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=61.177.7.1
DNS2=8.8.8.8

b. 移除掉原來的 ifcfg-enp0s25 ,從新建立該文件,內容以下:

BOOTPROTO=none
DEVICE=enp0s25
NM_CONTROLLED=no
ONBOOT=yes
BRIDGE=br0

c. 重啓網絡服務

systemctl restart network

使用 ifconfig 驗證操做結果,多了一塊網卡br0,如今訪問 think8848-srv02 使用 192.168.1.95 就能夠了。

2、安裝虛擬機 

1. 準備操做系統安裝鏡像文件,在本文中將使用和宿主環境同樣的CentOS7.2,把該文件放到 /home/iso 目錄下

2. 建立虛擬機文件存放的目錄

mkdir -p /home/kvm-bak

3. 使用 virt-install 建立虛擬機

virt-install -n think8848-kvmbase -r 2048 --disk /home/kvm-bak/think8848-kvmbase.img,format=qcow2,size=20 --network bridge=br0 --os-type=linux --os-variant=rhel7.2 --cdrom /home/iso/CentOS-7-x86_64-DVD-1511.iso --vnc --vncport=5910 --vnclisten=0.0.0.0

 操做結果顯示:

不要理會裏面提示的錯誤,接着往下走

4. 打開防火牆上的5910端口

firewall-cmd --zone=public --add-port=5910/tcp --permanent

firewall-cmd --reload

5. 使用VNC鏈接該虛擬機,進行虛擬機操做系統的安裝,直接到VNC官網上下載最新版的VNC Viewer便可

a. VNC Viewer

b. 新建鏈接,提供宿主IP、端口號(在virt-install建立過程當中指定的),以及名稱

c. 在Expert頁籤中,將ColorLevel的值由原來的 pal8 修改成 rgb222 ,點擊OK按鈕保存

d. 若是你像我同樣,邊操做邊還在作筆記,等你雙擊鏈接的名稱後,安裝界面都準備好了

接下來就安裝CentOS吧,過程略。

6. 安裝完CentOS,系統要求重啓,這時候虛擬機沒有重啓(也不知是由於什麼問題),VNC也連不上,先在宿主機上查看虛擬機狀態,顯示think8848-kvmbase爲關閉狀態

virsh list --all

7. 手動啓動虛擬機

virsh start think8848-kvmbase

再次使用VNC鏈接,發現已經能夠連進去了

3、簡單配置KVM虛擬機

1. 網橋配置,這裏值得一提的是,若是你在虛擬機中安裝CentOS過程當中,配置了合適的網格參數,那麼這時虛擬機裏應該就可使用網絡了。若是當時就採用系統安裝包的默認參數,未啓用網卡,那麼此時你須要啓動虛擬機的網卡,先看下虛擬機網卡的配置文件列表,貌似和普通電腦安裝沒啥區別,網卡的配置文件是 ifcfg-eth0 

再查看 ifcfg-eth0配置文件,和普通電腦安裝的也沒啥區別,按照要求呢,貌似在一些文章中介紹,說須要添加一行配置 NM_CONTROLLED=no ,我沒添加也沒發現有什麼問題。

2. 配置在宿主端登陸虛擬機shell。固然在宿主端也是能夠經過SSH登陸,可是直接登陸貌似也是一個不錯的方式。這個配置主要有兩個步驟:

a. 編輯 /etc/default/grub 文件,對照以下:

編輯前:

編輯後:

文本內容:

GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL="console serial"
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb"
GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0,115200"
GRUB_DISABLE_RECOVERY="true"

b. 運行下面一行的代碼

grub2-mkconfig -o /boot/grub2/grub.cfg

c. 重啓虛擬機 reboot 

d. 在宿主機上進入虛擬機控制檯,想退出時使用 Ctrl 鍵+ ]  (左方括號)鍵退出。

virsh console think8848-kvmbase

4、遷移虛擬機 

虛擬機建好後,最大的好處就是任由咱們折騰,而不用擔憂重裝系統的麻煩。因此必定要知道虛擬機怎麼複製遷移,這裏有兩種狀況,一種是本機上鏡像複製,另外一種是將本機鏡像遷移到其餘服務器上,本節參考自這裏,感謝koumm。

1. 本機複製

a. 先關閉虛擬機

virsh shutdown think8848-kvmbase

b. 在 /home 下新建文件夾 /home/kvm-img 

mkdir -p /home/kvm-img

c. 使用 virt-clone 克隆think8848-kvmbase爲新的虛擬機

virt-clone -o think8848-kvmbase -n think8848-kvm01 -f /home/kvm-img/think8848-kvm01.img

克隆完成

使用 virsh list --all 查看

d. 開啓think8848-kvm01,而後修改IP地址、主機名

virsh start think8848-kvm01

virsh console think8848-kvm01

#等虛擬機啓動好後,用root登陸

hostname think8848-kvm01

#編輯/etc/hostname文件,修改主機名爲think8848-kvm01
vi /etc/hostname

#編輯/etc/sysconfig/network-scripts/ifcfg-eth0,修改IPADDR

e.  reboot 重啓虛擬機,重啓後剛纔修改的內容已經生效了。

2. 將虛擬機鏡像遷移到其餘服務器上

 a. 先將虛擬機的配置文件和鏡像文件放到合適的位置(我搭了一臺FTP服務器,方便測試時全部的文件傳輸,以下圖所示)

b. 如今到服務器轉戰到think8848-srv01(IP:192.168.1.96),剛纔虛擬機是在think8848-srv02(IP:192.168.1.95)上建立的。如下全部操做均是在think8848-srv01上進行的

c. 將ftp上的think8848-kvm01.img放到/home/kvm-img目錄,將think8848-kvm01.xml放到/etc/libvirt/qemu目錄中

d. 編輯think8848-kvm02.xml,將裏面全部think8848-kvm01替換爲think8848-kvm02,而後把UUID換爲新的(直接使用這個在線工具生成吧)

e. 定義新虛擬機

virsh define /etc/libvirt/qemu/think8848-kvm02.xml

圖中think8848-kvm01是我以前在宿主機中配置的虛擬機,剛好名稱與以前的重複了。我在think8848-kvm01上沒有安裝ftp客戶端,在新遷移的虛擬機裏面安裝了ftp,能夠利用這個包驗證虛擬機是否正確

OK,說明沒有問題

f. 如今是時候再給新的虛擬機指定新主機名和IP了。剛纔是咱們重啓生效的,此次咱們不要重啓了,先使用 systemctl restart network 使新IP生效,而後再 exit 註銷用戶使主機名生效,就能夠了。

最後一個問題,若是在克隆或遷移後想使用VNC鏈接,那就須要從新指定VNC的端口號,將 /etc/libvirt/qemu/think8848-kvm02.xml 中的VNC端口號修改你須要的值便可。

 

 5、KVM管理

 網上有大批,我就不一一貼出來了,下面提供一個比較有用的連接(很是感謝原文做者)

人在路上兄虛擬化之KVM virsh經常使用命令篇

相關文章
相關標籤/搜索