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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

搭建 KVM 虚拟化系统

發(fā)布時(shí)間:2024/8/26 综合教程 31 生活家
生活随笔 收集整理的這篇文章主要介紹了 搭建 KVM 虚拟化系统 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近閱讀了韋易笑(Github/知乎)專欄我愛命令行中的三篇文章:

KVM 虛擬化環(huán)境搭建 - WebVirtMgr
KVM 虛擬化環(huán)境搭建 - ProxmoxVE
OpenMediaVault:你的開源 NAS 系統(tǒng)

這三篇文章介紹了 KVM 虛擬化的搭建和家庭 NAS 方案,看得我心癢癢的。恰好自己在學(xué)校有動(dòng)態(tài)公網(wǎng) IP,就從咸魚買了兩條 16G 內(nèi)存,加上一塊 2T 監(jiān)控硬盤,把臺(tái)式機(jī)虛擬化作服務(wù)器。

我在 Debian10 上搭建 KVM 虛擬化環(huán)境,在虛擬機(jī)中創(chuàng)建 OpenMediaVault(NAS)和 Windows10 。這里主要有三個(gè)問題:

如何管理虛擬機(jī)?使用 WebVirtCloud 圖形化地管理虛擬機(jī)。
如何管理存儲(chǔ)?使用 mapped 模式讓虛擬機(jī)共享物理機(jī)硬盤。
如何管理網(wǎng)絡(luò)?使用橋接模式實(shí)現(xiàn)虛擬機(jī)聯(lián)網(wǎng)。

物理機(jī)僅用于虛擬化和為虛擬機(jī)提供硬盤,不做多余的事情。

機(jī)器配置

CPU: AMD Ryzen 3 3200GE
GPU: 核顯
硬盤:512G SSD 和 2T HDD
主板:迫擊炮 PRO A MAX

安裝 Debian10

因?yàn)?WebVirtCloud 支持在 Debian10 上自動(dòng)安裝,并且 Debian 是最重要的開源項(xiàng)目之一,所以這里選擇 Debian10。

安裝無(wú) GUI 版本即可,這樣可以節(jié)約系統(tǒng)資源。使用 GUI 安裝器安裝,在設(shè)置磁盤分區(qū)時(shí),選擇“僅使用一個(gè)分區(qū)”,使用 btrfs 文件系統(tǒng)。事實(shí)上,btrfs 支持在不分區(qū)上的硬盤上安裝,但是 Debian10 沒有提供這個(gè)安裝選項(xiàng)。安裝完成后,如果確實(shí)想要類似于分區(qū)的效果,可以再為 home 等目錄創(chuàng)建 btrfs 子卷。

以下是我的 OS 信息。

       _,met$$$$$gg.
    ,g$$$$$$$$$$$$$$$P.
  ,g$$P"     """Y$$.".
 ,$$P'              `$$$.
',$$P       ,ggs.     `$$b:
`d$$'     ,$P"'   .    $$$
 $$P      d$'     ,    $$P    root@Thursday
 $$:      $$.   -    ,d$$'    -------------
 $$;      Y$b._   _,d$P'      OS: Debian GNU/Linux 10 (buster) x86_64
 Y$$.    `.`"Y$$$$P"'         Host: MS-7C52 1.0
 `$$b      "-.__              Kernel: 4.19.0-18-amd64
  `Y$$                        Uptime: 5 hours, 50 mins
   `Y$$.                      Packages: 1000 (dpkg)
     `$$b.                    Shell: bash 5.0.3
       `Y$$b.                 Terminal: /dev/pts/3
          `"Y$b._             CPU: AMD Ryzen 3 3200GE (4) @ 2.770GHz
              `"""            GPU: AMD ATI Picasso
                              Memory: 19689MiB / 30097MiB

配置 ssh

安裝完成后首先要配置 ssh 服務(wù)器,以便遠(yuǎn)程登錄操作。默認(rèn)情況下,Debian 已經(jīng)啟用了 ssh 服務(wù)器,如果沒有,請(qǐng)用以下命令安裝:

apt install -y openssh-server

然后啟用 ssh 服務(wù)器:

systemctl restart ssh # 重啟 ssh 服務(wù)
systemctl enable ssh # 開機(jī)自動(dòng)啟動(dòng) ssh 服務(wù)
ssytemctl status ssh # 查看 ssh 服務(wù)狀態(tài)

安裝 Debian 時(shí),自動(dòng)創(chuàng)建了普通用戶賬戶,但物理機(jī)僅用于虛擬化,不做多余事情,不使用這個(gè)賬戶。所以直接使用 ssh 登錄 root 賬戶進(jìn)行系統(tǒng)管理。如果 ssh 不允許登錄 root 賬戶,請(qǐng)取消 /etc/ssh/sshd_config 中以下代碼的注釋:

# PermitRootLogin yes

ssh 默認(rèn)允許通過密碼驗(yàn)證登錄,這會(huì)給系統(tǒng)帶來(lái)安全風(fēng)險(xiǎn),配置好密碼登錄的 ssh 后,配置密鑰驗(yàn)證,然后禁止密碼驗(yàn)證。

在本地計(jì)算機(jī)(你的筆記本或臺(tái)式機(jī))執(zhí)行以下命令:

ssh-keygen # 如果有密鑰就不用再生成了
ssh-copy-id root@服務(wù)器ip地址

輸入 root 賬戶的密碼驗(yàn)證成功后,就可以通過密鑰驗(yàn)證登錄了。取消 /etc/ssh/sshd_config 中這樣注釋,禁止密碼驗(yàn)證登錄。

# PasswordAuthentication no

只允許密鑰驗(yàn)證登錄就意味著假如密鑰丟失,將永遠(yuǎn)不可能通過 ssh 登錄服務(wù)器,所以要妥善保管密鑰。如果還需要更強(qiáng)的 ssh 安全性,可以參考如何配置安全的 SSH 服務(wù)?(OpenSSH 安全必知必會(huì))。

最后,完成 ssh 安全性最重要的一步配置——神獸護(hù)體。在 /etc/issue.net 添加以下字符畫,下次登錄就會(huì)有神獸護(hù)體,永不宕機(jī)。

         ┌─┐       ┌─┐
      ┌──┘ ┴───────┘ ┴──┐
      │                 │
      │       ───       │
      │  ─┬┘       └┬─  │
      │                 │
      │       ─┴─       │
      │                 │
      └───┐         ┌───┘
          │         │
          │         │
          │         │
          │         └──────────────┐
          │                        │
          │                        ├─┐
          │                        ┌─┘
          │                        │
          └─┐  ┐  ┌───────┬──┐  ┌──┘
            │ ─┤ ─┤       │ ─┤ ─┤
            └──┴──┘       └──┴──┘
                  神獸保佑
                  永不宕機(jī)

安裝 KVM

執(zhí)行以下命令安裝 KVM 所需的包。

apt-get install --no-install-recommends qemu-system libvirt-clients libvirt-daemon-system dnsmasq

KVM 整套解決方案一般分三層:

KVM:內(nèi)核級(jí)別的虛擬化功能,主要模擬指令執(zhí)行和 I/O
QEMU:提供用戶操作界面,VNC/SPICE 等遠(yuǎn)程終端服務(wù)
Libvirtd:虛擬化服務(wù),運(yùn)行在 Hypervisor 上提供 TCP 接口用于操作虛擬機(jī)的創(chuàng)建和啟停

安裝完 KVM 后,需要配置 libvirtd 和 qemu。

首先配置 libvirtd,使用 UNIX socket 連接 libvirtd,禁止安全驗(yàn)證(本地連接沒有安全問題),禁止監(jiān)聽 TLS,并將 socket 所有組設(shè)置為 libvirt。在 /etc/libvirt/libvirtd.conf 中找到并修改以下配置:

-p /home/data/kvm/imagei
mkdir -p /home/data/kvm/isounix_sock_group = "libvirt"
unix_sock_ro_perms = "0777"
unix_sock_rw_perms = "0770"
unix_sock_admin_perms = "0700"
unix_sock_dir = "/var/run/libvirt"
auth_unix_ro = "none"
auth_unix_rw = "none"
listen_tls = 0

然后將 www-data 用戶添加到 libvirt 組。

usermod www-data -G libvirt

最后讓 qemu 由用戶 libvirt-qemu(所屬用戶組為 libvirt-qemu)啟動(dòng)。在 /etc/libvirt/qemu.conf 中找到并修改以下配置。

user = "libvirt-qemu"
group = "libvirt-qemu"

由于使用 WebVirtCloud 在瀏覽器中管理虛擬機(jī),必須要讓用戶 www-data 可以連接 libvirt 的三個(gè) socket,還要將這三個(gè) socket 的所有者修改為 www-data。

chown www-data:libvirt /var/run/libvirt/libvirt*

設(shè)置橋接模式

KVM 有好幾種網(wǎng)絡(luò)模式,比如 NAT 模式、橋接模式等。

NAT 模式中,物理機(jī)相當(dāng)于一個(gè)具有 NAT 功能的路由器,虛擬機(jī)處于這個(gè)子網(wǎng)中,擁有子網(wǎng)內(nèi)的私有地址,虛擬機(jī)通過物理機(jī)向外連接互聯(lián)網(wǎng),所有虛擬機(jī)在外界看來(lái)都使用物理機(jī)的 IP 地址。這種網(wǎng)絡(luò)模式可能導(dǎo)致端口沖突,只有私網(wǎng) IP 的話可以使用這種模式。

橋接模式中,物理機(jī)相當(dāng)于一個(gè)網(wǎng)橋(一種數(shù)據(jù)鏈路層設(shè)備),將物理機(jī)和虛擬機(jī)橋接起來(lái),虛擬機(jī)有自己獨(dú)立的 IP 地址,在外界看來(lái)每個(gè)虛擬機(jī)都是獨(dú)立的網(wǎng)絡(luò)設(shè)備。這種網(wǎng)絡(luò)模式比較適合有多個(gè)公網(wǎng) IP 的情況,每個(gè)虛擬機(jī)都有公網(wǎng) IP,不會(huì)導(dǎo)致端口沖突。橋接模式僅適用于以太網(wǎng)。

參考 Debian 手冊(cè) BridgeNetworkConnections 一節(jié)配置網(wǎng)橋。先安裝網(wǎng)橋管理的包:

 apt install -y bridge-utils

再創(chuàng)建虛擬網(wǎng)橋 br0 并將物理網(wǎng)卡橋接上去。網(wǎng)卡名字通過ip a查看。

brctl addbr br0
brctl addif br0 網(wǎng)卡名字

完成之后可以通過ip a看到系統(tǒng)中多了一個(gè)網(wǎng)絡(luò)接口br0。修改網(wǎng)絡(luò)接口配置文件 /etc/network/interfaces.d。

source /etc/network/interfaces.d/* #

auto lo                            # 啟動(dòng)時(shí)激活
iface lo inet loopback             # 本地回環(huán)

auto enp37s0                       # 啟動(dòng)時(shí)激活以太網(wǎng)接口
iface enp37s0 inet manual          # Debian 手冊(cè)推薦使用 maunal

auto br0                           # 啟動(dòng)時(shí)激活網(wǎng)橋
iface br0 inet dhcp                # 通過 DHCP 獲取 IP 地址
	bridge_ports enp37s0           # 將以太網(wǎng)接口橋接到網(wǎng)橋
	bridge_stp off                 # Debian 手冊(cè)推薦的調(diào)優(yōu)配置
	bridge_waitport 0
	bridge_fd 0

/etc/network/interface.d/ 中有一個(gè)配置文件 setup,其中激活了網(wǎng)卡 eth0,電腦上沒有這個(gè)網(wǎng)卡的話刪除這個(gè)文件。

修改內(nèi)核參數(shù),將以下配置寫入 /etc/sysctl.d/99-netfilter-bridge.conf。

net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0

加載 br_netfilter 內(nèi)核模塊并重啟 network 服務(wù)。

modprobe br_netfilter
systemctl restart network

創(chuàng)建 KVM 目錄

mkdir -p /home/data/kvm
mkdir -p /home/data/kvm/image
mkdir -p /home/data/kvm/iso
chown www-data:www-data /home/data/kvm/iso

掛載機(jī)械硬盤

mkdir -p /home/data/kvm/hdd
mkfs.btrfs -l hdd /dev/sdx # 硬盤號(hào)使用 lsblk 查看
mount -t btrfs -o subvol='/' LABEL=hdd /home/data/kvm/hdd/

創(chuàng)建 /home/data/kvm/hdd,將機(jī)械硬盤掛載上去。嘗試掛載:

mount -t btrfs -o subvol='/' /home/data/kvm/hdd

在 /etc/fstab 中添加以下設(shè)置,實(shí)現(xiàn)自動(dòng)掛載:

LABEL=hdd /home/data/kvm/hdd btrfs subvol=/ 0 0

安裝 WebVirtCloud

使用官方安裝腳本自動(dòng)安裝配置。如果不能FQ就從 hub.fastgit.org 中下載安裝腳本,并將將腳本中的 github.com 改為 hub.fastgit.org。

進(jìn)入 WebVirtCloud(端口 8080),初始用戶名 admin,初始密碼 admin。在“計(jì)算節(jié)點(diǎn)”-->“存儲(chǔ)”中配置 ISO 池(/home/data/kvm/iso)和 image 池(/home/data/kvm/image)。

共享目錄

通過設(shè)置共享目錄讓宿主機(jī)和虛擬機(jī)共享機(jī)械硬盤。編輯 KVM 虛擬機(jī)配置文件(也可以在 WebVirtCloud 中編輯 XML 配置):

virsh edit --domain 虛擬機(jī)名字

<device>...</device>中添加以下代碼:

<filesystem type='mount' accessmode='mapped'>
      <source dir='/home/data/kvm/hdd/omv'/> # 分配給該虛擬機(jī)的目錄在物理機(jī)中的路徑
      <target dir='hdd'/> # 虛擬機(jī)中設(shè)備的名字,當(dāng)成硬盤掛載
</filesystem>

上面的代碼片段中,宿主機(jī)創(chuàng)建了 /home/data/kvm/hdd/omv 并將這個(gè)目錄映射到虛擬機(jī)的硬盤 omv,在虛擬機(jī)中當(dāng)成一般的硬盤掛載即可。在虛擬機(jī)中設(shè)置 /etc/fstab 實(shí)現(xiàn)開機(jī)自動(dòng)掛載。

hdd       /mnt/omv     9p    trans=virtio   0    0

重啟后發(fā)現(xiàn)系統(tǒng)無(wú)法掛載,這是因?yàn)?systemd unit 之間的依賴有問題。mnt-hdd.mount 依賴于 9pnet_virtio 模塊,這個(gè)模塊在 kmod 之后才會(huì)加載。所以修改 mnt-hdd.mount 文件,在Unit中添加Requires=kmod.service強(qiáng)制在 kmod 加載后才掛載 mnt-hdd。

安裝配置 Windows10

Windows10 默認(rèn)不支持 virtio,所以在 WebVirtCloud 中創(chuàng)建實(shí)例時(shí),不要勾選任何和 virtio 有關(guān)的東西。創(chuàng)建完成后,在實(shí)例的“設(shè)置”-->“磁盤”-->“實(shí)例卷”-->“編輯卷”(一個(gè)圖標(biāo))-->“高級(jí)”-->“總線”中將 virtio 修改為 SATA。

Debian10 默認(rèn)沒有安裝 acpi,導(dǎo)致 Windows10 無(wú)法相應(yīng) libvirt 的關(guān)機(jī)指令。關(guān)機(jī)時(shí)會(huì)出現(xiàn)libvirt-guests.sh: Waiting for guest OMV to shut down 的報(bào)錯(cuò),安裝 acpi 就可以解決。

apt install -y acpi acpid

Windows10 虛擬機(jī)在我的電腦上只有兩個(gè)核心,性能非常差。通過 host-passthrough 解決這個(gè)問題,詳細(xì)信息參考 Domain XML format,使用這個(gè)模式后虛擬機(jī)可以直接使用物理機(jī) CPU,但喪失了在不同平臺(tái)遷移的能力。

<cpu mode='host-passthrough' check='none'>
    <topology sockets='1' cores='4' threads='1'/>
</cpu>

sockets 是 CPU 數(shù)量,cores 是核心數(shù),threads 是每個(gè)核的線程數(shù)。

安裝配置 OpenMediaVault

OpenMediaVault(簡(jiǎn)稱 OMV) 是基于 Debian 的 NAS 系統(tǒng),詳細(xì)信息可以參考韋易笑的知乎專欄文章OpenMediaVault:你的開源 NAS 系統(tǒng)。

參考本文上面介紹的掛載機(jī)械硬盤和共享目錄,在機(jī)械硬盤上創(chuàng)建一個(gè)目錄給 OMV。安裝好 OMV 后,服務(wù)的主要服務(wù)都跑在 OMV 中。

安裝 OMV-Extras(OMV 插件管理器):

apt update -y && apt --no-install-recommends -y install dirmngr gnupg && wget http://omv-extras.org/openmediavault-omvextrasorg_latest_all5.deb && dpkg -i openmediavault-omvextrasorg_latest_all5.deb

安裝完畢后,進(jìn)入 OMV 的 Web 管理界面,在 OMV-Extras 中安裝 docker。

搭建應(yīng)用服務(wù)

到這里,我們就有了自己的 NAS 和私有云,可以方便的創(chuàng)建銷毀虛擬機(jī),還可以利用服務(wù)器(虛擬機(jī))搭建各種應(yīng)用。Github 上有一個(gè)項(xiàng)目 awesome-selfhosted 收集了各種可以在服務(wù)器上搭建的項(xiàng)目,知乎上也有不少回答很有價(jià)值。

calibre-web

搭建 calibre-web 個(gè)人圖書館。直接通過 pip3 安裝 calibre-web。

apt install -y python3-setuptools xz-utils python3-pip imagemagick
pip3 install wheel
pip3 install "Jinja2>3"
pip3 install calibreweb[
pip3 install calibreweb[{oauth,metadata,comics}]

安裝 calibre 來(lái)獲取電子書轉(zhuǎn)換功能。

wget -nv -O- https://download.calibre-ebook.com/linux-installer.sh | sudo sh /dev/stdin

電子書轉(zhuǎn)換器位置在 /opt/calibre/calibre-convert,在 web 中設(shè)置轉(zhuǎn)換器位置。

通過calibre-web-double實(shí)現(xiàn)從豆瓣下載元數(shù)據(jù)。將這個(gè)項(xiàng)目中的 NewDouban.py 拷貝到 /usr/local/lib/python3.7/dist-packages/calibreweb/cps/metadata_provider 并重啟 calibre-web 即可。

編寫 systemd 服務(wù)開啟自動(dòng)啟動(dòng)。

# /etc/systemd/system/calibre.service
[Unit]
Description=Calibre web service

[Service]
ExecStart=/usr/local/bin/cps
# /etc/systemd/system/calibre.timer
[Unit]
Description=Run calibre-web everyday

[Timer]
OnBootSec=1m

[Install]
WantedBy=multi-user.target

硬件問題

sp5100-tco watchdog hardware is disabled

這是因?yàn)橹靼宀恢С诌@個(gè)功能,/etc/modprobe.d/sp5100_tco.conf 添加以下配置,將 sp5100-tco 假如黑名單。

blacklist sp5100_tco

AMD Vi error: unable to write to iommu perf counter

在 /etc/default/grub 中修改GRUB_CMDLINE_LINIXiommu=soft,然后執(zhí)行update-grub更新 grub。

總結(jié)

以上是生活随笔為你收集整理的搭建 KVM 虚拟化系统的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。