OverLord
如果簡(jiǎn)單一點(diǎn)去闡述這個(gè)系統(tǒng)化組合,就是以PVE作為虛擬機(jī)底層系統(tǒng),再用它支撐Jellyfin媒體中心的功能,這樣的配置無疑更加靈活方便,而且在使用的時(shí)候也更簡(jiǎn)單,更穩(wěn)定。以往使用PVE做底層系統(tǒng)的時(shí)候,我們都是在其上安裝虛擬機(jī),這固然可以將電腦的硬件資源和虛擬環(huán)境分隔開,但傳統(tǒng)虛擬機(jī)還是會(huì)占用被指定分配的硬件。而本次則是使用更為輕便的Docker來實(shí)現(xiàn),所謂的Docker其實(shí)是一個(gè)開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的鏡像中,然后發(fā)布到任何流行的Linux或Windows操作系統(tǒng)的電腦上,也可以實(shí)現(xiàn)虛擬化。容器完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口(圖1)。而且它對(duì)硬件資源的使用方式是“隨用隨取”,不像虛擬機(jī)一樣需要提前分配好硬件資源,無疑這樣的靈活性大大增加。
PVE的全稱是Proxmox Vir tual Environment(官方網(wǎng)站:https://www.proxmox.com/),或稱之為Proxmox VE(圖2),是一款開源的虛擬化方案。其軟件和社區(qū)支持都是免費(fèi)的(基于Debian Linux和KVM的虛擬化平臺(tái)),企業(yè)用戶則可以通過訂閱制獲得付費(fèi)商業(yè)支持。PVE不僅僅是免費(fèi)開源這么簡(jiǎn)單(當(dāng)然非常重要),而是PVE具備極低的硬件資源要求、配置極為簡(jiǎn)單,且兼容性非常出色。
PVE的一大優(yōu)勢(shì)就是對(duì)電腦的系統(tǒng)性能要求不高(資源占用低),但是需要一定的Linux基礎(chǔ)。而且它有一個(gè)硬件需求的必備項(xiàng)——要使用支持虛擬化的處理器。當(dāng)然,這個(gè)要求對(duì)時(shí)下的電腦來說一點(diǎn)都不高,目前絕大部分處理器能夠支持虛擬化技術(shù),無論是英特爾還是AMD的都是如此。當(dāng)然,處理器的性能越高越好,這對(duì)任何應(yīng)用需求都是如此。在我們的PVE+Jellyfin組合方案下,一個(gè)10年以內(nèi)的電腦,只要不是使用特殊的低端CPU(如Atom),都完全可以勝任。
要想知道自己的電腦處理器是否支持虛擬化,下載Securable這個(gè)小軟件就型。下載(下載地址:https://www.grc.com/securable.htm)后運(yùn)行唯一的執(zhí)行文件,在最后一項(xiàng)“Hardware Virtualization”顯示為“Yes”(圖3),則表示處理器支持虛擬化功能。
點(diǎn)擊“Click for more”可以看到具體的虛擬化技術(shù)信息(圖4)。就PVE+Jellyfin的實(shí)際性能需求來看,筆者建議最好處理器的核心數(shù)量不少于2個(gè)——這意味著即便是賽揚(yáng)處理器也可以勝任,當(dāng)然,如果可能自然是核心、線程數(shù)量越多越好。
當(dāng)然了,如果處理器不支持,則S e c u r a b l e 中“H a r d w a r eVirtualization”項(xiàng)會(huì)顯示“No”(圖5)。
確定處理器支持后,還需要重啟進(jìn)入電腦的BIOS(F1或者Del),找到BIOS中相關(guān)的CPU虛擬化功能界面,確認(rèn)或?qū)⑵湓O(shè)置為“Enabled”啟用該功能(圖6)。
另外要特別提示一點(diǎn),我們以PVE+Jellyfin的組合方式實(shí)現(xiàn)媒體中心,最重要的就是要具備視頻編解碼能力,這也意味著你必須使用一個(gè)帶有核顯的處理器。而且如果可能的話,處理器不要低于英特爾第六代酷睿。這樣可以提供對(duì)4K HEVC視頻內(nèi)容的硬件編解碼。
除了這些,筆者推薦至少要擁有8G B 的內(nèi)存容量(圖7)——PV E自身的內(nèi)存占用一般在2GB~4GB內(nèi),再分配給Jellyfin大約4GB內(nèi)存剛剛好。當(dāng)然,如果你對(duì)虛擬機(jī)還有其他需求,那么內(nèi)存最好達(dá)到16GB,好在現(xiàn)在DDR3、DDR4內(nèi)存的價(jià)格都很便宜,即便擴(kuò)展起來成本費(fèi)用也不會(huì)很貴。
最后在存儲(chǔ)部分,筆者強(qiáng)烈建議使用一塊固態(tài)硬盤(圖8),哪怕是SATA接口的固態(tài)硬盤。除了傳輸速度優(yōu)勢(shì),最重要的地方在于響應(yīng)時(shí)間、多任務(wù)讀寫,固態(tài)硬盤都有著傳統(tǒng)機(jī)械硬盤不可比擬的技術(shù)優(yōu)勢(shì),即便是SATA規(guī)格的固態(tài)硬盤也不例外。
首先要下載得到PVE的ISO安裝文件(下載地址:https://www.proxmox.com/en/downloads),此外還需要Ru f u s工具用于制做引導(dǎo)安裝USB閃存盤(下載地址:https://rufus.ie/)。準(zhǔn)備一個(gè)8GB容量的USB閃存盤即可。準(zhǔn)備就緒(圖9)之后,將其插入電腦背部I/O部分的USB接口,注意最好不要插到電腦的前置USB接口,部分機(jī)箱的USB插針擴(kuò)展接口會(huì)有供電問題。
解壓縮Rufus后雙擊執(zhí)行文件運(yùn)行,點(diǎn)擊引導(dǎo)類型處的“選擇”項(xiàng),加載下載PVE ISO安裝文件的路徑,選中ISO文件,然后按照默認(rèn)設(shè)置(可以選擇純UEFI啟動(dòng),前提要確保主板支持并正確在BIOS中設(shè)置為UEFI啟動(dòng)),再點(diǎn)擊“開始”運(yùn)行(圖10)。
注意,在這里Rufus會(huì)提示選擇鏡像使用的模式,這和普通的Linux、Windows安裝啟動(dòng)盤略有區(qū)別,在這里要選擇“以DD鏡像模式寫入”而不是“以ISO鏡像模式寫入(推薦)”(圖11),如果選擇了后者USB閃存盤引導(dǎo)后將無法正確引導(dǎo)安裝PVE,這是和普通啟動(dòng)盤制作時(shí)最大的區(qū)別。
接下來分別提示兩次警告,內(nèi)容分別是格式化(圖12)、多分區(qū)提示(圖13),依次點(diǎn)擊默認(rèn)的“確定”即可,不需要更改設(shè)置內(nèi)容。
USB閃存盤寫入完成從電腦上拔出,將其轉(zhuǎn)移到即將安裝PVE的電腦上插入,并且開機(jī)使用該USB閃存盤引導(dǎo)(不同電腦的引導(dǎo)菜單選項(xiàng)不同,強(qiáng)烈建議進(jìn)入BIOS后設(shè)置啟動(dòng)順序,將USB閃存盤設(shè)置為優(yōu)先引導(dǎo)),在PVE的引導(dǎo)選單上選擇第一項(xiàng),即“Install Proxmox VE”(圖14)。
經(jīng)過PVE引導(dǎo)自檢,系統(tǒng)來到歡迎界面,讀取協(xié)議,點(diǎn)擊右下的“I agree”繼續(xù)(圖15)。
在接下來的界面中,主要是設(shè)置安裝的硬盤位置,默認(rèn)提供一個(gè)硬盤位置,如果是多個(gè)硬盤,點(diǎn)擊該處選擇需要安裝的硬盤即可。如果要在該硬盤上分區(qū)安裝,在選擇正確的硬盤設(shè)備后,點(diǎn)擊后面的“Options”設(shè)置即可,這里筆者以整盤默認(rèn)分區(qū)方式安裝,點(diǎn)擊“Next”繼續(xù)(圖16)。
對(duì)于需要硬盤分區(qū)的用戶,在“Options”選項(xiàng)設(shè)置中點(diǎn)擊進(jìn)入磁盤分區(qū)頁面(圖17),找到上方的“Filesystem”設(shè)置磁盤分區(qū)格式,推薦使用默認(rèn)的EXT4分區(qū)方式(Linux下的一種分區(qū)格式,Ext4文件系統(tǒng)有更好的設(shè)計(jì),更好的性能以及穩(wěn)定性)。hdsize處是設(shè)置總存儲(chǔ)空間容量的地方。
不同于Windows使用NTFS分區(qū)格式,Linux還需要使用到交換分區(qū),在下方的swapsize處設(shè)置交換分區(qū)容量,注意交換分區(qū)的容量大小不是隨意設(shè)置,一般情況下只要將其設(shè)置為與本機(jī)內(nèi)存容量相當(dāng)即可,例如電腦擁有8GB內(nèi)存,那么這里也設(shè)置成8GB交換分區(qū)容量就夠了。
除此之外,maxroot項(xiàng)是用于保存PVE操作系統(tǒng)鏡像的獨(dú)立空間,不能分配給虛擬機(jī)硬盤使用,酌情設(shè)置就可以(例如預(yù)留20GB的安裝鏡像容量值,可以充分滿足多個(gè)系統(tǒng)的安裝鏡像保存);接下來是minfree,這個(gè)minfree是用于保存虛擬機(jī)快照的,推薦設(shè)置為內(nèi)存容量的兩倍大小為宜,例如8GB內(nèi)存的電腦設(shè)置為16GB,16GB內(nèi)存的電腦設(shè)置為32GB,當(dāng)然這還要根據(jù)自己硬盤容量大小來權(quán)衡。最后就是maxvz,這個(gè)是用來數(shù)據(jù)保存的空間,可以設(shè)置更大一些。但是這一切容量之和不能超過hdsize的設(shè)置容量。
設(shè)置完點(diǎn)擊“Next”到下一步設(shè)置服務(wù)器的國(guó)家、時(shí)區(qū)及鍵盤布局(圖18),國(guó)家處填寫“China”,其他選項(xiàng)保持默認(rèn)設(shè)置即可。
之后就是系統(tǒng)的管理員賬號(hào)和密碼以及郵箱(圖19),注意這是PVE的最高權(quán)限Root用戶,設(shè)置密碼最好是復(fù)雜的字符+字母+數(shù)字+大小寫亂序生成,以確保系統(tǒng)安全性。
繼續(xù)安裝設(shè)置,在網(wǎng)絡(luò)管理界面(圖20),注意第一個(gè)“Management Interface”是管理口設(shè)置,所謂管理口是無論電腦中含有幾個(gè)有線網(wǎng)絡(luò)接口,只有一個(gè)具備管理能力,即可以連接到PVE設(shè)置后臺(tái)進(jìn)行設(shè)置調(diào)整,如果是多網(wǎng)卡的電腦,務(wù)必確認(rèn)使用的是哪一個(gè)網(wǎng)卡;“Hostname(FQDN)”則是主機(jī)名稱,根據(jù)自己喜好設(shè)置即可;其他分別是IP地址、子網(wǎng)掩碼、網(wǎng)關(guān)以及DNS服務(wù)器地址,根據(jù)實(shí)際情況填寫即可。
一切設(shè)置完畢PVE就開始安裝了,根據(jù)電腦的性能安裝時(shí)間一般在5分鐘至10分鐘左右,安裝完畢重啟電腦即可。重啟后注意要選擇硬盤啟動(dòng),PVE的引導(dǎo)菜單下(圖21),默認(rèn)項(xiàng)引導(dǎo)即可(無人工干預(yù)自動(dòng)進(jìn)入)。
引導(dǎo)完畢,界面將變成純字符界面,提示也極為簡(jiǎn)單——只有IP地址和登錄輸入(圖22),這時(shí)候我們就可以換到別的電腦來進(jìn)行操作了。
在其他電腦上,輸入服務(wù)器IP地址,注意格式必須要完整,包括https://以及端口號(hào)8006,例如https://192.168.1.2:8006,否則是無法正確訪問的。在登錄界面,首先可以將語言設(shè)置為“Chinese(Simplified)”即中文(圖23)。
然后輸入用戶名和密碼(圖24),即可登錄到PVE的主界面了。
登錄后,PVE會(huì)提示“沒有有效訂閱”,點(diǎn)擊確定即可忽略(圖25),這個(gè)訂閱是針對(duì)專業(yè)級(jí)、企業(yè)級(jí)用戶的,普通用戶無需理會(huì)。
登錄成功后,我們就可以看到P V E的基礎(chǔ)操作界面了(圖26)。
此時(shí),我們將要開始創(chuàng)建Jelly f in。在PVE主界面點(diǎn)擊右上方的創(chuàng)建CT,注意不是創(chuàng)建虛擬機(jī),我們要?jiǎng)?chuàng)建的是LXC容器。在這里要特別留意,取消下方勾選的“無特權(quán)的容器”,這樣我們才能讓Jelly f in的Docker具備訪問硬件的權(quán)限。此外,在CTID項(xiàng)中要記住當(dāng)前的ID數(shù)字,如本例中的103(圖27),后面會(huì)用到。
在下一步的模板中,存儲(chǔ)保持默認(rèn)的Local即可,在模板處則點(diǎn)擊右側(cè)下拉箭頭找到ubuntu-18.04-standard_18.04.1(圖28)。
在接下來的CPU部分,筆者推薦設(shè)置兩個(gè)核心供Jelly fin使用,內(nèi)存部分最少設(shè)置不小于2GB,即2048MB(圖29),推薦4GB~8GB,這個(gè)也要根據(jù)當(dāng)前安裝PVE電腦的內(nèi)存而定。
接下來是網(wǎng)絡(luò)部分的設(shè)置,設(shè)置好對(duì)應(yīng)的局域網(wǎng)內(nèi)IP地址(筆者建議使用靜態(tài)IP,不要使用DHCP),但是特別留意在IP地址后要加上netmask,即/24(圖30)。
配置完成后啟動(dòng)該容器,然后在容器中,我們將安裝Jellyfin——首先分別輸入命令apt update、apt upgrade,這兩個(gè)命令是更新源,注意每輸入一條指令都要回車執(zhí)行一下才可以。接下來將分別輸入每一條執(zhí)行,注意也是每輸入一條命令就要回車執(zhí)行一下,并且確保執(zhí)行完本條命令后再輸入下一條:
sudo apt install apt-transport-https software-properties-common
sudo add-apt-repository universe
wget -O - https://repo.jellyfin.org/ubuntu/jellyfin_team.gpg.key | sudo apt-key add -
echo "deb [arch=$( dpkg --print-architecture )] https://repo.jellyfin.org/ubuntu $( lsb_release -c -s )main" | sudo tee /etc/apt/sources.list.d/jellyfin.list
sudo apt update
sudo apt install jellyfin
逐條執(zhí)行命令后,jellyfin的Docker應(yīng)該就可以正常運(yùn)行了,我們可以通過輸入命令service jellyfin status來查看執(zhí)行狀態(tài)。如果看到綠色的“active(running)”字樣(圖31),說明jellyfin已經(jīng)在運(yùn)行了。
接下來,回到PVE主界面,打開Shell功能,依次輸入三個(gè)命令,apt update、apt install i965-va-driver vainfo、vainfo,即更新源、安裝顯卡驅(qū)動(dòng)和檢測(cè)、執(zhí)行檢測(cè)。在依次執(zhí)行完前兩條命令后,最后執(zhí)行vainfo,如果出現(xiàn)以下信息,就意味著正確安裝驅(qū)動(dòng),并能顯示當(dāng)前顯卡支持的編解碼。如果執(zhí)行vainfo命令報(bào)錯(cuò)則意味著安裝錯(cuò)誤:
root@pve:~# vainfo
error: can't connect to X server!
libva info: VA-API version 1.4.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: Found init function \_\_vaDriverInit_1_4
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.4 (libva 2.4.0)
vainfo: Driver version: 英特爾 i965 driver for 英特爾(R) Coffee Lake - 2.3.0
vainfo: Supported profile and entrypoints
為了讓Jellyfin能夠調(diào)用顯卡的硬件編碼功能,我們還需要進(jìn)一步執(zhí)行操作,此時(shí)在Shell窗口內(nèi)輸入ls -l /etc/dri,列出當(dāng)前顯卡信息,如下:
root@pve:~# ls -l /dev/dri/
total 0
drwxr-xr-x 2 root root 80 Oct 13 12:39 by-path
crw-rw---- 1 root video 226, 0 Oct 13 12:39 card0
c r w-r w---- 1 ro ot render 2 2 6, 128 Oct 13 12:3 9renderD128
其中,在第二行信息中,card0的設(shè)備號(hào)可以看到是“226,0”,然后再看第三行renderD128,設(shè)備號(hào)為“226,128”記住這兩條內(nèi)容。這是筆者的處理器核顯設(shè)備號(hào),具體到自己使用的電腦核顯可能會(huì)出現(xiàn)不一樣,但是方法一致。
在PVE的目錄/etc/pve/lxc中有容器配置文件存放地,找到自己對(duì)應(yīng)容器ID的配置文件,如103.conf,此時(shí)使用nano命令編輯這個(gè)103.conf文件,此時(shí)在Shell中輸入命令“nano /etc/pve/lxc/103.conf”。打開103.conf后一直向下拉倒末尾,添加如下命令:
lxc.cgroup.devices.allow: c 226:0 rwm
lxc.cgroup.devices.allow: c 226:128 rwm
lxc.cgroup.devices.allow: c 29:0 rwm
lxc.autodev: 1
lxc.hook.autodev: /var/lib/lxc/103/mount_hook.sh
注意,這里是添加命令,不是執(zhí)行命令,依次填寫即可。這里面的“226,0”、“226,128”就是之前記錄的顯卡設(shè)備號(hào),103即本容器的ID,具體要根據(jù)自己電腦的實(shí)際情況調(diào)整。
接下來我們繼續(xù)使用nano命令創(chuàng)建一個(gè)名為mount_hook.sh的文件,即在Shell中輸入命令“nano /var/lib/lxc/103/mount_hook.sh”回車執(zhí)行。然后添加如下命令到mount_hook.sh中好讓容器有訪問顯卡設(shè)備的權(quán)限:
m k d i r - p $ { L X C _ R O OT F S _MOUNT}/dev/dri
mknod -m 666 ${LXC_ROOTFS_MOUNT}/dev/dri/card0 c 226 0
mknod -m 666 ${LXC_ROOTFS_MOUNT}/dev/dri/renderD128 c 226 128
mknod -m 666 ${LXC_ROOTFS_MOUNT}/dev/fb0 c 29 0
一切配置完畢,我們就可以使用IP地址+端口號(hào)8096來訪問jellyfin進(jìn)行設(shè)置了。特別注意的是,我們要啟動(dòng)之前配置的顯卡硬解功能,依次進(jìn)入控制臺(tái)—播放,在硬件選項(xiàng)中選擇VAAPI,然后勾選“啟用硬件編碼”,保存設(shè)置即可(圖32)。
簡(jiǎn)言之,Jellyfin具備海報(bào)墻功能,而且可以分類保存視頻內(nèi)容,并通過局域網(wǎng)推送播放——因?yàn)槲覀兣渲昧擞布幗獯a功能,即便你的觀看端設(shè)備不能支持部分編解碼的視頻文件,Jellyfin也能自動(dòng)將其轉(zhuǎn)碼推送到觀看端設(shè)備上播放,非常人性化。當(dāng)然,它還有更多的功能,有興趣的朋友可以自己探索。這套媒體中心系統(tǒng)最重要的特性就是免費(fèi),而且易用性、功能性一點(diǎn)不輸于收費(fèi)系統(tǒng)。