VMware下的Centos7實踐Kvm虛擬化(通俗易懂)

来源:https://www.cnblogs.com/caijt/archive/2019/07/14/11174676.html
-Advertisement-
Play Games

雖然網上已經有很多關於kvm安裝的教程了,但我還是看得頭暈,有的教程里安裝的包很多,有的很少,也沒說明那些安裝包的作用是幹嘛的,用的命令也不一樣,也沒解釋命令的意思是什麼。 我重新寫一個教程,儘量通俗易懂點,也是給增強我的記憶。 這裡提示下,Hyper-v就是一個大坑!本來我是用Hyper-v來學習 ...


雖然網上已經有很多關於kvm安裝的教程了,但我還是看得頭暈,有的教程里安裝的包很多,有的很少,也沒說明那些安裝包的作用是幹嘛的,用的命令也不一樣,也沒解釋命令的意思是什麼。

 我重新寫一個教程,儘量通俗易懂點,也是給增強我的記憶。

這裡提示下,Hyper-v就是一個大坑!本來我是用Hyper-v來學習這個Kvm虛擬化的,我創建的宿主虛擬機可以連外網,宿主機里創建的kvm虛擬機是用橋接網路,但無論怎樣設置都連接不了外網,kvm的虛擬機可以ping得通宿主機,宿主機也能ping得通kvm的虛擬機,宿主機可以ping得通外網,但就是kvm的虛擬機ping不通外網,但害我查了一整天,後面無奈用回VMware後,網路全都正常。

而且用Hyper-v,明顯我的電腦記憶體占好多,每次啟動,還要等半天的什麼合併檢查點,還不能連接U盤。

 

準備工作:一臺能上網的Centos7虛擬機,VncViewer(這是在window運行的,到時可以連接虛擬機),XShell(遠程ssh工具),XFtp(上傳安裝包)

VncViewer下載地址:https://www.realvnc.com/en/connect/download/viewer/

XShell、XFtp下載地址:https://www.netsarang.com/zh/free-for-home-school/

主要步驟:

  1. 開啟嵌套虛擬功能(如果你不是用虛擬機的話,這步就不用)
  2. 安裝kvm工具包
  3. 設置橋接網卡(如果是用Nat的,這步不用)
  4. 創建第一個kvm虛擬機(安裝方式分控制台安裝及遠程圖形化安裝

 


 

1、開啟嵌套虛擬功能

一開始我是在hyper-v的虛擬機上安裝的,hyper-v比vmware麻煩點,得用以下命令操作

#以下命令不區分大小寫
Get-VM    #獲取全部虛擬機
Get-VMProcessor -VMName xxx | fl    #查看虛擬機屬性,ExposeVirtualizationExtensions屬性代表是否開啟嵌套虛擬化
Set-VMProcessor -ExposeVirtualizationExtensions $true -VMName xxx    #開啟嵌套虛擬化,得先把虛擬機關機,不然會出錯

 

 

後面改用VMware就簡單多了,如下圖,把紅圈裡兩個覆選框勾上就行了,虛擬機得先關機才能修改

 

 打開虛擬機,輸入以下命令,查看是否支持虛擬化,如果沒上面的操作是肯定沒有的

cat /proc/cpuinfo | egrep "vmx|svm"

 


 

2、安裝kvm工具包

我看網上好多教程安裝的包很多,但又沒說明各個包是乾什麼的,原諒我有點強迫症,我必須得瞭解每個包作用到底是乾什麼的

但經我測試後,最終發現只需安裝三個包,分別是libvirt、qemu-kvm、virt-install(網上寫的一些其它的包,如libvirt-python、libvirt-client、qemu-img,其實在安裝這3個包時也會順帶安裝了)。

我的理解:kvm只是linux一個功能,但linux沒有提供任何方便我們去使用它的命令,所以需要安裝一些工具,而libvirt、qemu-kvm、virt-install都是工具包,qemu-kvm提供一些qemu開頭的命令(這個不安裝會提供錯誤主機不支持任意虛擬化選項),libvirt提供一個服務(libvirtd)和其它virsh管理命令,virt-install提供安裝管理虛擬機的命令

yum -y install qemu-kvm libvirt virt-install

因為我的是命令行管理,不在虛擬機上用圖形化管理,所以只需這三個包,因為要在虛擬機上圖形管理,還得安裝個XWindows,我覺得生產環境應該也沒人去裝個圖形管理。

 

還有一個包bridge-utils,這是用來管理橋接網卡的,這個我裝libvirt包時也順帶裝了,如果你的沒包裝,就安裝一下

yum -y install bridge-untils

 


 

3、設置橋接網卡

 經常玩虛擬機的都知道有兩種試,一種是Nat,一種是橋接,

Nat就好比宿主機(就是安裝kvm虛擬化的主機)是台路由器,虛擬機是連接路由器下麵的電腦,跟宿主機同個網段的電腦是訪問不了虛擬機的,要訪問的話,就得在宿主機上設置埠映射。

而橋接就是把宿主機的物理網卡當做一個交換機,虛擬機直接連接交換機,那就跟宿主機是同一個網段的了,可以被其它電腦訪問到,一般做服務虛擬化都是用橋接模式。

 先切換到網卡目錄,然後把原來的網卡文件複製一份,名稱為ifcfg-br0,命令如下

cd /etc/sysconfig/network-scripts
cp ifcfg-ens33 ifcfg-br0  #你的不一定是ifcfg-ens33,我開始用hyper-v時,介面是叫eth0

然後修改ifcfg-br0的配置,如下

 

修改ifcfg-ens33,主要是新增加一行,如下所示,如果你的本來是靜態IP的話,就把靜態IP的配置註釋掉,只保留在br0就行了

然後重啟下網路服務

systemctl restart NetworkManager
systemctl restart network

 然後查看下網橋介面

brctl show

這個圖是我在後面補的,紅圈的是在啟動虛擬機後才有的,你如果按博客順序的話,現在應該是看不到這個紅圈的vnet0的,等你把虛擬機啟動後,再查看就看到這個vnet0,這表示vnet0也撟接在br0下麵

 


 

 4、創建第一個kvm虛擬機

 這個就需要用到之前安裝的包virt-install了,我先把命令主要參數列出來

#virt-install參數
--name=xxx                            #虛擬機唯一名稱
--memory=1024[,maxmemory=2048]        #虛擬機記憶體,單位為mb --memory=1024,maxmemory=2048
--vcpus=1[,maxvcpus=4]                #虛擬機CPU數量
--cdrom=/xxx/xxx                     #指定安裝源文件
--location=/xxx/xxx                    #指定安裝源文件,跟--cdrom二選一,如果要用控制台安裝得用這個,配合--extra-args參數
--disk path=/xx/xxx[,size=10,format=raw] #存儲文件及格式
--graphics vnc,port=xxx,listen=xxx     #圖形化參數,不用圖形化用--graphics none --extra-args="console=ttyS0"
--network bridge=br0              #網路連接方式
--os-variant=xxx               #對應的系統值,可以osinfo-query os這個查對應值
--virt-type=kvm                   #虛擬機類型
--noautoconsole                #不自動連接,預設是安裝時用virt-viewer或者virsh console去連接虛擬機

 把管理虛擬機的命令也寫一下

virsh list --all    #查看所有虛擬機,加all列出關機狀態的
virsh console xxx    #以控制項台連接到指定虛擬機
virsh start xxx        #啟動虛擬機
virsh shutdown xxx    #關閉虛擬機,一般關不了
virsh destroy xxx    #強制關閉虛擬機
virsh autostart xxx    #設置虛擬機隨機啟動
virsh undefine xxx    #刪除虛擬機,只會刪除對應的xml,硬碟文件不會刪除
virsh autostart xxx    #設置虛擬機自動啟動

 

4.1、利用VncViewer遠程圖形化安裝的方式

virt-install主要參數--graphics vnc,port=5901,listen=xxx

原理就是用virt-install命令安裝時,在宿主機上開啟一個vnc埠5901,然後用VncViewer程式連接宿主機的5901埠,跟平時圖形化安裝一樣了。

推薦用Xshell連接,因為可以方便地複製命令,再裝個XFtp上傳iso文件到/data/iso目錄里

 創建所需目錄

mkdir -p /data/iso /data/vm

把安裝文件上傳到/data/iso後,用Xshell連接後,複製以下命令,回車(以下命令的斜杠,只是為了好看分行,不是必要的)

virt-install --name=c7 \
--memory=1024 --vcpus=1 \
--cdrom=/data/iso/CentOS-7-x86_64-Minimal-1810.iso \
--disk path=/data/vm/c7.qcow2,size=10,format=qcow2 \
--network bridge=br0 --virt-type=kvm --os-variant=centos7.0 \
--graphics vnc,listen=0.0.0.0,port=5900 \
--noautoconsole

看到以上提示,就可以用VncViewer來連接了,對了,得先把防火牆服務給關了

systemctl stop firewalld  #關閉防火牆服務
systemctl --zone=public --add-ports=5900/tcp --permanent    #或者用這個開放5900埠

 在vncViewer上輸入ip跟埠號

然後就可以圖形化安裝了,非常方便。

 

 4.2、用控制台安裝的方式

virt-install主要參數--location跟--extra-args配合,不用--cdrom參數,複製以下命令,回車

virt-install \
--name=c7-2 \
--memory=1024 \
--vcpus=1 \
--location=/data/iso/CentOS-7-x86_64-Minimal-1810.iso \
--disk path=/data/vm/c7-2.qcow2,size=5,format=qcow2 \
--network bridge=br0 \
--virt-type=kvm \
--os-variant=centos7.0 \
--graphics none \
--extra-args 'console=ttyS0'

 

接著就會進入控制台安裝界面,如下圖所示

 

可能還有些人沒在控制台安裝過centos7,那我簡單說下

觀察這個,這些可以對應我上面的那個圖形化安裝的圖,註意紅圈,打X的就是已經設置好了,!的代表還沒設置,需要進行配置,輸入q退出安裝,輸入b開始安裝,輸入r刷新

  1. 語言設置
  2. 時區設置
  3. 安裝源
  4. 軟體選擇
  5. 安裝位置
  6. Kdump
  7. 網路配置
  8. Root密碼
  9. 用戶設置

那我們需要對那些!的配置項進行設置,或者修改原來設置,先修改第1項,語言設置,輸入1回車,會顯示下圖,找到我們的中文,輸入68,回車

 

然後輸入1,簡體中文,回車

 

會回到主界面,你會看到第1項已經變了,變成簡體中文了

 

 

再配置時區,輸入2,回車,然後輸入1(Set timezone),然後輸入2(Asia亞洲),然後輸入64(Shanhai上海)

 

回到主界面,發現第2項已改變了

 

 

接著再設置安裝位置,輸入5,回車,如下圖,看到硬碟前面已經是X,說明已經選擇了,直接輸入c繼續就好了

 

這裡不太懂,我預設,輸入c繼續

 

還是保持預設LVM,輸入c繼續

 

會回到主界面,發現安裝位置也改變了,那最後來設置下Root密碼,輸入8,回車

 

重覆輸入兩次root密碼

 

 

回到主界面,發現沒有!號了,那輸入b就可以進行安裝了,你會發現其實控制台安裝跟圖形化安裝也是差不多的。

 

安裝好後啟用下網卡,就可以正常連接外網的,我一開始是用Hyper-v,導致虛擬機一直連不了外網,以為哪裡配置不對,用回VMware後就一切正常。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • VS2013 、VS2015 、VS2017調試出現無法啟動iis express web伺服器 最近自己老是遇到這個問題,天天如此,煩死人,網上答案繁多,但是都解決不了,也是由於各種環境不同導致的,這裡把幾種解決方法都記錄下 首先 檢查win的IIS服務有沒有打開,慄子可以查看https://ji ...
  • 小白開學Asp.Net Core 《七》 — — 探究中間件(MiddleWare) 1、何為中間件? 中間件是組裝到應用程式管道中以處理請求和響應的家伙,管道中的每個組件都要滿足以下兩個條件 選擇是否將請求傳遞給管道中的下一個組件 可以在調用管道中的下一個組件之前和之後執行工作。 2、中間件的本質 ...
  • 源碼編譯安裝 http://nginx.org/en/download.html 到官網下載,然後用XFTP上傳到root目錄 把文件解壓出來 然後用yum安裝依賴項 如果沒裝以上相關的依賴,會在./configure過程中出現各種錯誤 下圖是沒裝gcc包的錯誤,我看網上要裝gcc-c++,但我發現 ...
  • 使用VM虛擬機配置RHEL實驗環境。 鑒於在筆記本上裝過centos7,這章內容難度對我來說不是很大。 重置root管理員密碼(RHCSA考題,第一題,做不出來無法進行下一步考試) e linux16 ...... rd.break ctrl + x mount -o remount, rw /sy ...
  • ip
    第九講 以172.16.0.0/16為例進行子網劃分網路部分向主機部分借3位求解問題: 子網ID的個數 所有的子網ID 所有子網的廣播地址 每個子網的IP地址範圍及個數 每個子網的有效IP地址範圍及個數子網ID的個數 所有的子網ID 所有子網的廣播地址 172.16.0.0 172.16.0.001 ...
  • 運維過阿裡雲伺服器或者騰訊雲伺服器的運維人員都知道,針對耗資源以及高併發的應用,很多時候我們需要關註雲伺服器的資源利用率情況,如最近一段時間內CPU的使用率、記憶體占用率等情況信息。阿裡雲和騰訊雲官方後也有相應的監控數據可查看,如果伺服器安裝的寶塔操作面板的話,在寶塔操作面板後臺界面上也有相應的監控功 ...
  • 在筆記本電腦或者辦公電腦的使用過程中,有時候需要更換盤符號,例如在重裝系統後,硬碟相應的分區盤符號可能會發生錯亂變化,此時如果想更換回重裝系統之前的盤符號,可以通過電腦管理裡面的磁碟管理來實現更換盤符號。 以下教程以Win7系統為例,Win8和Win10系統的操作方式基本類似,可作參考。 (1)在 ...
  • Linux磁碟系統——管理磁碟的命令 Linux磁碟系統——管理磁碟的命令 摘要:本文主要學習了Linux系統中管理磁碟的命令,包括查看磁碟使用情況、磁碟掛載相關、磁碟分區相關、磁碟格式化等操作。 df命令 df命令用於顯示Linux系統中各文件系統的硬碟使用情況,包括文件系統所在硬碟分區的總容量、 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...