1. 程式人生 > >CentOS7.2部署KVM虛擬機

CentOS7.2部署KVM虛擬機

release bootp cmd zip 位置 原來 div 退出 ont

轉自:http://www.linuxidc.com/Linux/2017-01/140007.htm

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

CentOS版本:64位 7.2 1511

一、安裝KVM

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

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

技術分享圖片

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

技術分享圖片

3. 最小安裝的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服務,並且設置其開機自動啟動

systemctl start libvirtd

systemctl enable libvirtd

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 就可以了。

技術分享圖片

二、安裝虛擬機

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連接,發現已經可以連進去了

技術分享圖片

三、簡單配置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

技術分享圖片

四、遷移虛擬機

虛擬機建好後,最大的好處就是任由我們折騰,而不用擔心重裝系統的麻煩。所以一定要知道虛擬機怎麽復制遷移,這裏有兩種情況,一種是本機上鏡像復制,另一種是將本機鏡像遷移到其他服務器上,本節參考自這裏,感謝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端口號修改你需要的值即可。

技術分享圖片

技術分享圖片

徹底刪除虛擬機

1, 刪除虛擬機 virsh destroy +域名

2,解除標記 virsh undefine +域名

3,刪除虛擬機文件

CentOS7.2部署KVM虛擬機