CentOS7.2部署KVM虛擬機
轉自: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虛擬機