# Linux HW5 - KVM ###### tags: `Linux` ## 參考文獻 * jaywcjlove on [GitHub](https://github.com/jaywcjlove/handbook/blob/master/CentOS/CentOS7%E5%AE%89%E8%A3%85KVM%E8%99%9A%E6%8B%9F%E6%9C%BA%E8%AF%A6%E8%A7%A3.md) * [傲笑紅塵路](https://www.lijyyh.com/2015/12/linux-kvm-set-up-linux-kvm.html) * virt-install的man文件 on [linux.die.net](https://linux.die.net/man/1/virt-install) --- ## 前置作業 ### 檢查 SELinux 的狀態 CentOS 預設有啟用 SELinux,所以結果是 Enforcing,表示 SELinux 正在執行 ``` getenforce ``` ### 關閉 SELinux ``` vi /etc/sysconfig/selinux ``` `SELinux=enforcing` 修改成 `SELinux=disabled` ``` reboot ``` ### 再次檢查 SELinux 的狀態 結果是 Disabled,表示 SELinux 已經關閉 ``` getenforce ``` ### 檢測是否支援 KVM ``` cat /proc/cpuinfo | egrep 'vmx|svm' ``` ![](https://i.imgur.com/gdPhCLY.png) ### 準備 CentOS ISO 如何下載不用再提了吧? ### 安裝套件 ``` yum install qemu-kvm qemu-img virt-manager libvirt libvirt-python libvirt-client virt-install virt-viewer ``` ### 確認 KVM 核心模組有載入 ``` lsmod | grep kvm ``` ![](https://i.imgur.com/iwFu1fN.png) ### 開啟 KVM 服務 ``` systemctl start libvirtd ``` ### 設置開機時自動啟動 ``` systemctl enable libvirtd ``` ### 查看狀態操作結果,確認其運行情況良好 ``` systemctl status libvirtd ``` ![](https://i.imgur.com/6K1HKqU.png) --- ### 關閉 NetworkManager #### 前提概要:上一次我們已經固定 IP 了 看到綠色的 active (running), 那便表示 Network Manager 正在執行。 ``` systemctl status NetworkManager.service ``` ![](https://i.imgur.com/QOyVLGH.png) ``` systemctl stop NetworkManager systemctl disable NetworkManager ``` --- ### 設置橋接網路 #### 新增一個Bridge介面卡 於`/etc/sysconfig/network-scripts`新增`ifcfg-介面卡名稱` 內容加入 ``` DEVICE=介面卡名稱 TYPE=Bridge ``` Bridge的B要一定要大寫,其他字母一定要小寫 #### 原固定ip的設定至該Bridge中 ``` BOOTPROTO=none IPADDR= NETMASK= GATEWAY= DNS1= DNS2= ``` #### 讓原本的Ethernet介面卡變成Bridge的slave 修改`/etc/sysconfig/network-scripts/ifcfg-當slave的介面卡` 內容加入 ``` BRIDGE=br1 ``` #### 啟動介面卡 ``` ifup ifcfg-介面卡名稱 ``` #### 用`ifconfig`確認正常運作 ![](https://i.imgur.com/RadwJr5.png) libvirt會像一個交換器一樣管理後續的分配 --- ## 建立虛擬機 ### 指令說明 ### `virt-install` 基於libvirt服務的虛擬機器建立命令 `--virt-type` 指定使用的虛擬化方式,如`kvm` `--name` 設定虛擬機名稱 `--vcpus` 設定虛擬機所需要用到的CPU核心數量 `--memory` 設定虛擬機所需要的空間,這邊設置為2GB `--location` 指定iso檔的位置讓虛擬機可以去抓取(iso檔必須放到`/home/`下面,不然會因為許可權報錯,無法建立虛擬機器) `--disk` 設置guest的儲存設備。以下為一些子參數: 格式為:`--disk para1=a,para2=b,...` `path=`指定虛擬機要掛載的檔案(硬碟或光碟映像)位置,如果不存在,會自動嘗試建立新的虛擬硬碟 `size=`硬碟大小(GB) `format=`指定格式 `--network` 網路設置,本次設置為橋接`bridge` `--graphics` 圖形模式,本次規定使用文字模式,所以設成`none` `--extra-args` 更多設置,只有在`--location`有設置時能使用。本次會用到`console=ttyS0`以將guest的輸出輸至ttys0。 範例: ``` virt-install \ --virt-type=kvm \ --name=1063003 \ --vcpus=1 \ --memory=2048 \ --location=/home/CentOS-8-x86_64-1905-dvd1.iso \ --disk path=/home/vms/1063003.qcow2,size=30,format=qcow2 \ --network bridge=br0 \ --graphics none \ --extra-args='console=ttyS0' ``` --- ## `virsh` 管理虛擬機 這裡只列出一些常用的指令 在shell執行`virsh`後會進入virsh的指令介面 ``` Welcome to virsh, the virtualization interactive terminal. Type: 'help' for help with commands 'quit' to quit virsh # ``` `start {vm名稱}` 啟動指定的vm `destory {vm名稱}` 關閉指定的vm `console {vm名稱}` 以文字介面進入指定的vm `undefine {vm名稱}` 刪除指定的vm `edit {vm名稱}` 編輯指定vm的設定 `exit` 離開 virsh --- ## 虛擬機內安裝 CentOS 接下來我們需要配置系統基礎設置,帶`[!]`基本都是要配置的,按照順序往下配置,按對用的數字進行進行設置。 ![](https://i.imgur.com/Jspytri.png) 1.選擇語言 2.選擇時區 3.iso檔掛載 4.選擇最小安裝 5.安裝目的地 6.不需要進行調整 7.網路設置(可安裝完後再設置) 8.設定root的密碼 9.建立使用者帳號密碼 當`[!]`都變成`[X]`的时候就可以開始安裝了,安裝完畢後,可以用`virsh console (虛擬機名稱)`指令來進入虛擬機。 --- ## 更改網路設置 `su` 進入root `cd /etc/sysconfig/network-scripts/` 進到這個檔案位置下 `ls` 查詢network-scripts內的檔案 `vi ifcfg-XXX` XXX部分為網卡名稱 ``` TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static //由dhcp改為static DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens3 UUID= //每個人都不一樣,根據系統設置即可 DEVICE=ens3 ONBOOT=yes //由no更改為yes //增加下列四行 IPADDR=10.2.200.X //設定個人的IP位置,X在本次作業中本組為182~185,根據每個人分配的而定 NETMASK=255.255.255.128 //設定網路遮罩 GATEWAY=10.2.200.239 //設定通訊閘 DNS1=140.130.81.11 //設定DNS ``` 用 `ifdown` 關閉網路介面卡後再用 `ifup` 重新啟動以生效新的設定 --- ## 測試網路是否會通 `ping www.google.com` 看有沒有成功 ![](https://i.imgur.com/Zw1CcuI.png) --- ## 作業檢查項目 ### 1062998 林冠廷 ![](https://i.imgur.com/vncQyfT.png) ### 1063003 許哲愷 ![](https://i.imgur.com/4pInOQ5.png) ### 1063031 洪嘉銓 ![](https://i.imgur.com/OJ3zwlJ.png) ### 1053008 盧柏瑜 ![](https://i.imgur.com/pTc8xkH.png)