不少人家中都有比較老舊的電腦,當我們購買新的電腦或者零件的時候,就會有舊的零件空出來。有時為了有效運用舊的零件,讓舊電腦或零件繼續為我們服務,但又考慮到舊的硬體可能會有功耗較高的問題,因此也加入功耗量測環節,測量近幾年的硬體以及年代稍早的硬體功耗,來驗證是否有這個問題存在。
虛擬化讓舊電腦繼續發揮價值
虛擬化架構介紹
筆者手上有兩款硬體平台,分別是 Intel Core i5-2400 與 AMD Ryzen 5 2400G。兩者的核心的數量相同,但製程不同,因此我們可以比較新舊世代的平台,對於工作的功耗是否真的會隨著製程進步而減少。
一般常見的服務有網路附加儲存 (Network Attached Storage,NAS)、防火牆、軟體路由器、影音串流等等,如果一台主機只有跑一個服務,是很浪費的,因此筆者找了開源的硬體虛擬化系統,來介紹將這些服務整合在同一台機器上面的作法。
這邊先簡單介紹一下虛擬化,虛擬化是將想要執行的功能放在一個虛擬的環境下執行,這個虛擬環境並不會與其他虛擬環境,或者正在使用的環境混在一起,彼此之間的資料是互相隔離的。管理虛擬化的角色稱為虛擬機器管理員 (Virtual Machine Manager,VMM),根據 VMM 所在的位置,我們可以將虛擬化分成兩種類型,分別是第一型 (Type I) 與第二型 (Type II)。
第一型虛擬化是直接以 VMM 作為作業系統,直接管理虛擬機器與硬體之間的溝通。常見的第一型虛擬化有 VMWare ESXi 還有 Xen Server。
第二型虛擬化也是目前最常見的作法,VMM 會作為一種軟體在作業系統上執行,用來管理虛擬機器。常見的第二型虛擬化有 VMWare Workstation、KVM、QEMU、Proxmox Virtual Environment (PVE,基於 QEMU),還有大家熟悉的 Android 模擬器 (如雷電或夜神,基於 VirtualBox)。本篇我們會以 Proxmox VE 來示範將常見的服務分離。
在了解虛擬化之後,我們可以開始規劃我們想要使用的服務。

上圖是我們將會在 Proxmox VE 裝載的虛擬機器與容器,pfSense 為防火牆,同時可以做為路由器與交換器使用。TrueNAS 則可以提供儲存空間,透過硬碟直通讓 TrueNAS 分享硬碟空間,同時 TrueNAS 可以作為其他虛擬機器或容器存取資料用。Jellyfin 則是作為影音串流的工具,裝載在要提供服務的 Ubuntu 虛擬機器上。
除了以上系統架構外,我們也會對這些虛擬機器做功耗的監測,看看這些服務在運作期間會消耗多少的電力。使用的測量工具是松大電子的 SPG-26MS,最大可以量測 220V/15A/3750W,可以直接量測冷氣的功耗。
這次使用的兩個硬體平台詳細資訊如下:
A 組 | B 組 | |
CPU | AMD Ryzen 5 2400G | Intel Core i5-2400 |
主機板 | ASUS Prime B350M-A | ASUS H61M-A/M32AA |
記憶體 | XPG DDR4 8G*1 | DDR3L 4G*2 SODIMM |
其餘的零件例如電源供應器,使用 Fractal Design Ion SFX-L 500W Gold,這款電源供應器的等級為 80+ 金牌,80+ 認證等級越高,輸出與實際消耗的數值也會更相近。另外一個選擇這顆的原因是,80+ 金牌電源供應器也是很多電腦店家會幫客人挑選的規格,因此我們以偏向大眾的配置方便讓讀者了解自己的舊電腦會有什麼樣的表現。
系統碟使用金士頓 256GB 記憶卡,可以在家裡附近的 3C 店買到,也可以在電商平台購買,是個容易入手的東西。
另外我們會使用 WD 的 WD10EZEX 硬碟作為存放資料的空間,讓 TrueNAS 可以管理這顆硬碟。WD10EZEX 可以說是在近年來,最常用來搭配套裝機或者電腦店家配單的一顆硬碟,除了當作系統碟,還可以拿來儲存資料。
再來為大家介紹一下網路架構。

我們宿主機 (Host) 的虛擬交換機 0 號 (vmbr0),依附在網路卡上面連接到外部交換器上面,並將 IP 設定在 10.1.1.11,由於 Proxmox VE 不支援路由功能,也因為要將連接埠轉送出來,我們在其中一台虛擬機上面安裝了 pfSense,這台虛擬機器透過虛擬交換機 0 號連接到外部路由器,並將 IP 設定成 10.1.1.12。
接著新增一台虛擬交換機 1 號 (vmbr1),這台交換機並沒有直接依附在網路卡,而是當作虛擬機器間交換資料使用,也就是直接在宿主機上面作封包交換。再將 vmbr1 指定給 pfSense 作為 LAN 端使用,並將 IP 設定成 10.1.2.1。
為了方便在各虛擬機器與實體網路設備之間交換資料,在安裝完 TrueNAS 之後將他的網路卡連接到 vmbr1,並將 139 與 445 連接埠透過 pfSense 進行轉發,我們可以透過 smb://10.1.1.12 進行網路芳鄰 (samba) 連接。作為存放資料用的機器,因此也直通了一顆硬碟給機器,讓機器可以直接對硬碟進行操作。
最後要裝載服務的虛擬機器我們選擇安裝 Ubuntu,並在上面安裝 Jellyfin 服務來測試影音播放的功耗。把它的網路卡接上 vmbr1,並將 8096 連接埠透過 pfSense 轉發,我們可以直接透過瀏覽器就能開啟 Jellyfin。再來將 TrueNAS 分享出來的資料夾,掛載到家目錄底下的 media 資料夾中,最後把 media 資料夾加到 Jellyfin 的媒體庫中。
虛擬機器都設定完後,只要把影片放置在 TrueNAS 分享出來的資料夾中,Jellyfin 就可以直接讀取剛剛的影片。
實際硬體功耗狀況
首先我們測試了 A 組,開機時平均功耗為 45W,開機完成後降低至 26W,1 台虛擬機器開機時平均功耗為 45W,2 台同時開機時為 55W,3 台開機時為 65W,平均每台虛擬機器開機會增加 10W。當虛擬機器開機完成後功耗會下降至 28.5W,比空載時多了 2.5W。在播放影片時功耗為 30.5W,比全部虛擬機器空載時增加 2W。
再來測試 B 組,開機時平均功耗為 50W,開機完成後降至 23W,1 台虛擬機器開機時平均功耗為 44W,2 台同時開機時為 60W,3 台同時開機時會來到 70W。虛擬機器開機完進入空載狀態時會下降到 26W。播放影片時為 28W,比空載時多出 2W。
總結
虛擬機器在開機時消耗的功率會因為製程不同而有不一樣的結果,但在執行相同種類的運算時,在本案例中並沒有因為製程老舊顯著增加功耗。所以大家可以放心使用舊型的零件,來打造自己想要的家用服務主機,比較值得注意的是,這類服務本身也會有一些耗電量,因此可以想辦法從 BIOS 中調整成較為省電的選項,以節省更多能源。
作者:路西法