日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

kvm虚拟化_KVM 虚拟化环境搭建 - WebVirtMgr

發(fā)布時間:2024/7/5 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 kvm虚拟化_KVM 虚拟化环境搭建 - WebVirtMgr 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前文《KVM 虛擬化環(huán)境搭建 - ProxmoxVE》已經給大家介紹了開箱即用的 PVE 系統(tǒng),PVE 是方便,但還是有幾點問題:

第一:始終是商用軟件,雖然可以免費用,但未來版本還免費么?商用的法律風險呢?

第二:黑箱化的系統(tǒng),雖然基于 Debian ,但是深度改造,想搞點別的也不敢亂動。

第三:過分自動化,不能讓我操作底層 libvirt/qemu 的各項細節(jié)配置。

PVE 是傻瓜相機,智能又復雜,對小白很友好;WebVirtMgr 是機械相機,簡單而靈活。多一個選擇始終是好事,何況我們說完 PVE 之后還介紹 WebVirtMgr,那肯定是有它不可代替的優(yōu)勢的。

不管你是在中小公司研究 IT 解決方案,還是搭建自己的 HomeLab,虛擬化是一個繞不過去的砍,現(xiàn)在的服務都不會直接啟動在物理機上,成熟的架構基本都是:

物理機->虛擬化->容器

這樣的三層架構,也就是說虛擬化是一切服務的基礎。通過下面的步驟,讓你擁有一套完全開源免費的,屬于你自己的,沒有任何版權和法律問題的虛擬化環(huán)境。

操作系統(tǒng)選擇

發(fā)行版選擇主要以 Debian/Ubuntu LTS Server 為主,二者我并無偏好,選擇你趁手的即可。Debian 每兩年一個大版本,Ubuntu LTS Server 也是每兩年一個大版本。也就是說每年都有一個最新的,他們的支持周期都是五年以上,去年發(fā)布的 Debian 9 ,今年是 Ubuntu 18.04 LTS,明年又是 Debian 10。

安裝依賴

新安裝操作系統(tǒng)以后,先安裝必備的包:

sudo apt-get install libvirt-daemon-system libvirt-clients sudo apt-get install sasl2-bin libsasl2-modules bridge-utils

將 /etc/default/libvirtd 里面的一行 libvirtd_opts 改為:

libvirtd_opts

修改 /etc/libvirt/libvirtd.conf,保證下列配置生效:

# 允許tcp監(jiān)聽

修改 /etc/libvirt/qemu.conf,取消 "# vnc_listen = ..." 前面的 # 注釋(如有),變?yōu)?#xff1a;

vnc_listen

找到并把 user 和 group 兩個選項,取消注釋,改為 libvirt-qemu:

user

重啟并查看服務的狀態(tài):

sudo service libvirtd restart sudo service libvirtd status

到了這一步,依賴就準備好了。

創(chuàng)建管理用戶

ubuntu 18.04 LTS 得改一下:/etc/sasl2/libvirt.conf 文件,取消最后一行注釋,變?yōu)?#xff1a;

sasldb_path: /etc/libvirt/passwd.db

并保證 mech_list 的值為 digest-md5 ,默認的 gssapi 不能用:

mech_list: digest-md5

(注意:如果是 Debian 10,那么單機請使用 unix socket,digest-md5 方式被廢除掉了,下面的驗證方式可以跳過直接把 www-data 用戶加入 libvirt 用戶組即可)。

客戶端鏈接 libvirtd 需要用戶名和密碼,創(chuàng)建很簡單:

sudo saslpasswd2 -a libvirt virtadmin

可以查看創(chuàng)建了哪些用戶:

sudo sasldblistusers2 -f /etc/libvirt/passwd.db

繼續(xù)重啟服務:

sudo service libvirtd restart

測試用戶權限:

virsh -c qemu+tcp://localhost/system list

使用 virsh 鏈接本地的 libvirtd 操作本地虛擬機,輸入剛才的用戶名和密碼檢查是否能夠順利執(zhí)行,如果該命令成功則代表 libvirtd 的服務和權限工作正常。

配置網橋

Debian 9 下面是更改 /etc/network/interfaces,注意設備名稱 eth0 需要改為實際的名稱:

# The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet manual auto br0 iface br0 inet staticaddress 192.168.0.2netmask 255.255.255.0network 192.168.0.0broadcast 192.168.0.255gateway 192.168.0.1dns-nameservers 192.168.0.1dns-search dell420bridge_ports eth0bridge_stp offbridge_fd 0bridge_maxwait 0

Ubuntu 18.04 中,使用 /etc/netplan 配置網橋,卸載 cloud-init,禁用 cloud-init 配置:

sudo apt-get remove cloud-init sudo mv /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.disable

并且新建文件:/etc/netplan/10-libvirtd-bridge.yaml:

network

注意上面的設備名稱 enp3s0f0 以及 ip 網關等配置應按實際情況更改。

注意接口名字和 ip等,改為對應的內容,改完后:

sudo netplan apply

啟用新的網絡配置,然后重啟網絡看看網橋,是否正常:

sudo brctl show

并且查看網絡是否正常。

安裝 WebVirtMgr

按照 WebVirtMgr 的官網首頁的說明

安裝依賴:

sudo apt-get install git python-pip python-libvirt python-libxml2 novnc supervisor nginx

克隆倉庫:

cd /var/www sudo git clone git://github.com/retspen/webvirtmgr.git

安裝 Django 等 python 包:

cd webvirtmgr sudo pip install -r requirements.txt sudo ./manage.py syncdb sudo ./manage.py collectstatic

按提示輸入 root 用戶密碼,該用戶后面將用來登陸 WebVirtMgr。

然后測試:

sudo ./manage.py runserver 0:8000

用瀏覽器打開 http://your-ip:8000 并用剛才的用戶登陸看看行不行,成功的話,會看到:

然后點擊右上角添加一個 connection,把 localhost 這個 libvirtd 的鏈接用 tcp 的方式添加進去,用戶名和密碼是剛才初始化的 libvirt 的管理員 admin 和密碼:

鏈接如果能夠正常添加的話,表明可以正常運行了:

然后 CTRL+C 退出。

安裝 Nginx

新建并編輯 /etc/nginx/sites-available/webvirtmgr 文件:

server

然后做一個該文件的軟連接到 /etc/nginx/sites-enabled 下面,并刪除默認軟連接:

cd /etc/nginx/sites-enabled sudo ln -s /etc/nginx/sites-available/webvirtmgr . sudo rm default

然后重啟服務

sudo service nginx restart

完成安裝

新建并編輯 /etc/supervisor/conf.d/webvirtmgr.conf:

[program:webvirtmgr]

把整個 webvirtmgr 的項目文件所有者改為 www-data:

sudo chown -R www-data:www-data /var/www/webvirtmgr

重啟并查看結果:

sudo supervisorctl reload sudo supervisorctl status

如果碰到錯誤,比如 Exited too quickly 那么到 /var/log/supervisor 下面查看日志。

完成后,瀏覽器打開:http://your-ip:8080/servers/

如果一切工作正常,那么恭喜你,WebVirtMgr 安裝成功。

開始使用

在 /home/data 下面創(chuàng)建 kvm 目錄,用于放虛擬機磁盤鏡像文件和 iso 文件

{images, iso

你可以放在你喜歡的地方,/home 目錄一般在 debian 下面會分配比較大的空間,所以把虛擬機相關的東西,放到 /home/data/kvm 下面。

然后瀏覽器登陸 webvirtmgr 的頁面,選擇剛才添加的 localhost 鏈接,webvirtmgr 可以同時管理多臺機器的 libvirtd,這里我們以剛才添加的 localhost 鏈接為例。

首先到左側的 “存儲池”添加用于保存虛擬機映像的路徑:

先點擊 "New Storage" 添加一個類型為 “目錄卷類型”的存儲池,名字為 images,指向:

/home/data/kvm/images

繼續(xù)點“New Storage”添加一個類型為 “ISO 鏡像卷”的存儲池,名字為 iso ,路徑為:

/home/data/kvm/iso

你如果有多塊硬盤,還可以繼續(xù)添加一些其他位置用于保存虛擬機的磁盤鏡像。

還差網絡配置就妥了,點擊左邊 “網絡池”:

原來只有一個 default 的 NAT 類型網絡,那個 bridge 是我們需要點擊 "New Network" 添加的橋接網絡:

上面這個橋接名稱,就是我們前面配置的網橋名稱 br0。我們啟動的虛擬機一般都會希望和物理機同處于一個內網下,擁有可以直接訪問的 IP,因此基本都用橋接模式。

創(chuàng)建虛擬機

先創(chuàng)建磁盤映像,到左邊的 “存儲池”,然后選擇 images 存儲池:

點擊最下面的添加鏡像,添加一個 20G 的 qcow2,名字為 test1:

然后點擊左邊的 “虛機實例”,然后點擊左上角的 “New Instance”:

不要使用它那些亂七八糟的模板,直接點擊正上方的 “Custom Instance”,創(chuàng)建虛擬機:

在創(chuàng)建虛擬機的對話框里,點擊“Add Image”添加剛才創(chuàng)建的 test1.img 鏡像,然后再 "Add network" 添加類型為 bridge 的橋接網絡,你如果想要所有虛擬機都處于一個虛擬內網的話,還可以再添加一塊類型為 default 的網卡,就是默認的 NAT 類型。

完成后點 “創(chuàng)建”,咱們的虛擬機就有了:

這時候,可以到現(xiàn)前的 “存儲池”的 iso 下面,上傳兩個操作系統(tǒng)的安裝盤 iso 文件,然后回來這個 test1 虛擬機主頁,選擇設置,掛載 iso 文件:

選擇我們剛才上傳的操作系統(tǒng) ISO 文件,并點擊右邊的“鏈接”按鈕,然后可以到“Power”那里使用 “啟動”按鈕開機了,此時虛擬機出于“開機”狀態(tài):

然后選擇 Access :

點擊 “控制臺”,打開虛擬機的 webvnc 終端,開始安裝操作系統(tǒng):

網頁版本的 Webvnc 圖形性能一般,建議安裝操作系統(tǒng)都用普通文本模式安裝(可以選擇的話),測試虛擬機可以正常啟動以后,我們先把它強制結束了,進行一些必要設置。

安全設置

如果的服務器暴露再公網上,一定要到 Access -> Console Password 下面設置個密碼:

webvirtmgr 里點擊控制臺它會自動讀取該密碼,不需要你手工輸入,但是這樣就比沒有密碼安全很多了。

然后啟動后,你可以到:設置->XML 那里查看一下 VNC 被分配的端口號和設置過的密碼:

由于默認配置 VNC 都是使用 “自動端口”,這樣更安全些,每次虛擬機啟動,都會動態(tài)分配一個,再 XML 這里可以查看得到,這樣你也可以不用 webvnc,而用自己的 VNC 客戶端:

比如 Windows 下的 vnc-viewer,填入 ip 地址和端口號,然后點 "connect":

提示輸入密碼,將上面 XML 里的密碼復制粘貼過來即可:

然后點擊 OK 開始顯示終端屏幕:

共享文件夾

這是個很基本的需求,想省事的話,nfs 共享一下也可以,但是 KVM 本身支持 Hypervisor 和虛擬機共享文件夾的,并且性能很好,可惜 PVE 里居然做不了,因為它不能改 XML。

再 “設置”-> XML 那里點擊 “編輯”并在 <devices>... </devices> 中加入下面配置:

<filesystem

accessmode 可以設置成:mapped,passthrough 或 none。物理機準備一下共享目錄:

sudo mkdir /home/data/kvm/kfs sudo chown libvirt-qemu:libvirt-qemu /home/data/kvm/kfs

所有虛擬機在物理機上都會以 libvirt-qemu 這個用戶來跑(前面設置過 qemu.conf),所以需要保證你物理機上需要共享的路徑的權限。同時 accessmode 建議設置成 mapped,這樣會用文件信息里的 meta info 來保存虛擬機中的文件權限信息。

虛擬機中編輯 /etc/modules 文件,添加下面幾行:

loop virtio 9p 9pnet 9pnet_virtio

加載內核模塊:

sudo service kmod start

然后測試 mount:

trans

這樣,虛擬機中的 /mnt/kfs 就映射到了物理機的 /home/data/kvm/kfs 路徑下。

測試成功的話,設置 /etc/fstab:

kfs /mnt/kfs 9p trans=virtio 0 0

修改完后,mount -a 測試,測試通過重啟虛擬機即可。

后記

可能大家發(fā)現(xiàn)了 WebVirtMgr 本質就是一個輕量級的 web 管理后臺,可以在一臺機器上搭建 webvirtmgr 并管理內網所有的提供 libvirtd 服務的機器。

由于 webvirtmgr 項目本身簡單清晰,不少成功項目的代碼都是源自它的,比如 QNAP 產品線里的 “虛擬機工作站”,通過前面一番動手,相信你對 kvm/libvirtd/vnc 之類的運作機里已經很熟悉了。

該系統(tǒng)設計的比較好的一個點就是允許我編輯 XML,而前面提到的 PVE 居然不允許我在頁面上修改 XML,KVM支持的功能非常豐富,很多都需要通過修改 XML 完成,比如常用的硬件透傳,大家可以搜索 "kvm passthrough":該功能可以把 pcie 總線上的設備傳遞給虛擬機,比如你的物理機上有兩個 USB 插口,你可以將其中一個賦予虛擬機。或者把物理機的磁盤陣列全部傳遞給虛擬機,由虛擬機里面來組 raid,這樣虛擬機里面裝點黑群暉或者 clearos / openmediavault 之類的 nas 系統(tǒng)的話,可以方便的把磁盤陣列管理起來。

如果物理機有顯卡的話,你甚至可以把物理機的 gpu 透傳給虛擬機,這樣虛擬機里面就可以跑需要 GPU 支持的任務了,比如挖礦之類,這些在 PVE 里都沒法支持,這些都是 webvirtmgr 比 PVE 更靈活的地方。

更多的功能,留給大家慢慢探索吧。

總結

以上是生活随笔為你收集整理的kvm虚拟化_KVM 虚拟化环境搭建 - WebVirtMgr的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。