Synology VMM Pro:利用人工智慧優化生產虛擬機器規模(2026 年)

運行這家網站的虛擬機幾個月來一直佔用著實際所需硬體的兩倍資源:8 個虛擬 CPU、16 GB 內存,而實際工作負載從未超過這兩項資源的四分之一。這種情況並不罕見。在虛擬機器啟動之初,你會慷慨地分配資源,因為你不知道它未來會需要什麼,網站運作正常,而且沒人會去調整配置。本文記錄了我們調整配置的過程。我們使用 Synology 將虛擬機器的配置削減到 4 個虛擬 CPU 和 8 GB 記憶體。 VMM Pro, 在人工智慧助手的操控下,商店在兩分零七秒內無法使用。調整大小本身很枯燥——只是對話框中的兩個欄位而已。真正有趣的是,它透過測量證明了八GB記憶體足夠,透過操作順序避免了虛擬機器在首次啟動時記憶體耗盡,以及透過快照實現了所有操作的可逆性。 VMM Pro 讓所有這些操作都變得非常經濟,這才是它真正的優勢所在。.

SynoPower Club 點:在自託管環境中,合理調整資源配置是最不起眼的工作,也是回報最高的。沒人會寫部落格文章炫耀自己釋放了 8GB 的記憶體。但閒置在過大虛擬機器中的記憶體並不能幫你節省任何資源——在 Synology 伺服器上,記憶體是固定的,無法被伺服器上的其他任何程式使用。我們從一個開始感覺內存已滿的主機上釋放了 8GB 的內存,這意味著我們又可以省下兩個虛擬機的硬體預算。真正讓這個過程安全而不是令人擔憂的是底層的 VMM Pro 伺服器:在執行第一個命令之前就創建了一個鎖定快照,如果出現任何意外,我可以在 90 秒內將機器恢復到之前的狀態。最後一切順利。但如果沒有它,我是不會開始這項工作的。.

Synology VMM Pro 是什麼?

Virtual Machine Manager 是 Synology 的虛擬機器管理程式軟體包。它可從套件中心安裝,是免費的,並且在單一 NAS 上可以很好地運行 Linux、Windows 和 Virtual DSM 虛擬機,並支援本機快照。. VMM Pro 付費升級可以將單機虛擬機管理程式變成一個小型叢集:多個 NAS 單元作為一個池進行管理,虛擬機器可以在它們之間移動,具有高可用性,並且能夠從一台主機複製快照到另一台主機。.

對本文而言,這種區別至關重要,因為合理配置容量本質上是一個容量決策,而容量只有在叢集中有多台機器時才會變得重要。在單一 NAS 上,釋放的記憶體是指該 NAS 上未使用的記憶體。而在 VMM Pro 叢集中,釋放的記憶體可以在故障轉移期間供其他主機使用,或無需額外購買即可用於建置新的虛擬機器。.

A 虛擬DSM 我們在這裡調整了工作負載的大小,物件是一個完整的 DSM 系統,它以虛擬機器的形式運作。虛擬機器運行容器管理器,容器管理器又運行著這家商店背後的兩個 Docker 容器。這種分層架構是經過精心設計的,正是它確保了操作的安全性。我們之前已經介紹過如何在虛擬機器之間遷移 Docker 堆疊。 我們的 VDSM Docker 遷移演練; 本文旨在探討如何讓下面的客人尺寸合適。.

VMM Pro 對比免費版:升級究竟能帶來什麼?

免費版並非功能受限的試用版。它能夠運行生產環境虛擬機器、創建快照,對於單一 NAS 設備而言,它確實能夠滿足大多數用戶的所有需求。您購買的究竟是什麼? VMM Pro 這不是某個房客的功能,而是所有房東的功能。.

能力免費版VMM Pro
在同一台NAS上運行虛擬機是的是的
本地快照是的是的
多台NAS設備組成一個集群不是的
將房客在不同房東之間轉移不是的
高可用性故障轉移不是的
將快照複製到另一台主機不是的

購買前請務必查看參考資料中提供的官方功能頁面鏈接,因為 Synology 會根據 DSM 版本調整版本劃分。實際測試比表格更簡單:如果您只有一台 NAS,並且樂於手動從快照恢復數據,那麼免費版就足夠了。但如果您擁有第二台 NAS,並且希望第一台 NAS 上的虛擬機器在它發生故障後也能繼續運行,那麼您就需要一個付費版本。 VMM Pro授權.

我們的叢集由三個節點組成,但大部分時間只有兩個節點處於運行狀態。第三個節點是冷備節點,它會按計劃喚醒以接收複製的快照,然後再次進入睡眠狀態。這種模式——僅在需要冗餘時才付費——是 VMM Pro 模式,也是控制台持續顯示無法存取主機警告的原因。此警告是設計運作的正常現象,並非故障。.

一個特別嘉賓為何最終體積是實際所需體積的兩倍

有三件事會促使用戶增加記憶體使用量,而沒有任何事情能阻止他們減少記憶體使用量。首先,初始記憶體大小只是一個估計值,而第一天慷慨地估計記憶體大小並不會造成任何損失。其次,每次出現記憶體不足的情況,最終都會有人提高記憶體限制。我們的系統在一週內就發生了兩起記憶體不足事件;這兩起事件都透過增加記憶體空間解決了,而且之後再也沒有出現過類似的問題。第三,儀錶板上顯示 80% 的記憶體使用率看起來很嚇人,所以沒有人會主動減少記憶體。這些都不是 VMM Pro 系統本身的問題,而是人為因素造成的,這也是為什麼記憶體使用量過大成為常態的原因。.

最後一個是陷阱,值得直言:大多數人用來判斷容器是否還有空間的數字是錯誤的。我們的系統顯示資料庫容器已佔用其容量的 81%,但實際上並非如此。第五部分將詳細解釋原因,以及是什麼測量方法使得將 VMM Pro 的容量調整從一種僥倖的嘗試轉變為一種穩健的決策。.

以 VMM Pro 分 4 步驟優化即時訪客規模

整個操作分為四個步驟,只有第三步會導致網站離線。從容器停止運行到訪客恢復訪問後收到第一個 HTTP 200 回應,總共停機時間為兩分零七秒。. VMM Pro 參與第一步和第三步;中間步驟發生在客人體內。.

在進行任何其他操作之前,請先拍攝一張鎖定快照。

從 VMM Pro 為虛擬機器建立快照並將其標記為鎖定,以防止計劃的快照輪替將其刪除。這相當於後續每一步操作的撤銷按鈕,而且它會捕獲整個虛擬機,而不是單個資料夾。請新增描述,說明您即將執行的操作,因為三個月後,僅憑時間戳將無法辨識。.

衡量工作負載實際消耗的資源,而不是儀表板報告的資源。

讀取每個容器內的 cgroup 內存統計信息,並將匿名內存與頁面緩存區分開來。只有匿名記憶體是不可回收的,也只有匿名記憶體的容量大小才應該作為記憶體容量規劃的依據。同時,檢查資料庫緩衝池的大小是否與資料庫的實際大小相符。我們的系統在 663 MB 的資料庫前面設定了一個 3 GB 的緩衝池。.

先縮小容器,再縮小客人。

首先降低應用程式和資料庫的記憶體限制,並將相同的值同步到你的 Compose 檔案中,這樣後續的重新建置就不會撤銷這些設定。如果容器的當前記憶體使用量已經超過新的限制,就不能簡單地限制它——需要修改其配置並重啟,使其記憶體使用量減少,然後再套用較低的限制。如果順序錯誤,就會導致首次啟動時出現記憶體溢位循環。.

正常停止容器,調整大小,然後驗證行為,而不是修改設定。

使用較大的逾時時間停止資料庫容器,並在其日誌中確認正常關機,以避免虛擬機器進入崩潰復原模式。關閉虛擬機,在 VMM Pro 中設定新的 vCPU 和記憶體值,然後重新啟動。接下來,驗證使用者操作的內容:實際頁面返回 200 狀態碼,價格正確,沒有記憶體溢出事件——而不僅僅是您在對話方塊中輸入的數字。.

在調整生產環境虛擬機器大小之前拍攝的鎖定 VMM Pro 快照
這是第一步中鎖定的快照。這個鎖形圖示是為了防止計劃輪換將其刪除。.

為什麼 Docker 統計資訊會讓你得到錯誤的答案

在調整大小之前,容器儀表板看起來像是沒有絲毫調整空間的機器:

Docker 統計資料:WordPress 2.51 GiB / 7 GiB (35.9%) WordPress-DB 3.25 GiB / 4 GiB (81.1%) <-- 看起來快滿了

讀完之後,你可能會得出結論:資料庫需要 4GB 內存,而虛擬機器內存不能低於 12GB。這兩個結論都是錯誤的,因為這些工具報告的記憶體使用情況包含了頁面緩存,而頁面快取會在其他程式需要記憶體時自動回收。決定是否因記憶體不足而終止程式的,是匿名記憶體。直接閱讀相關內容:

docker exec sh -c 'awk "/^(cache|rss) /{printf "%-8s %8.0f MBn", $1, $2/1048576}" /sys/fs/cgroup/memory/memory MB 50rs MB 快取 1543 MB

現在情況完全顛倒了。應用程式容器實際只使用了 1.3 GB 內存,而不是 2.5 GB。在這 1.3 GB 記憶體中,有 768 MB 是一個共享的操作碼緩存,每個工作進程都映射而不是複製該緩存——因此,20 個工作進程每個大約佔用 27 MB 內存,而不是簡單地計算進程內存佔用量所得出的 250 MB。資料庫佔用的 2.5 GB 記憶體幾乎全部都是一個 3 GB 的緩衝池,而資料庫本身只有 663 MB。.

同類陷阱還有一個例子:歷史峰值計數器會顯示容器已達到其上限,因為該計數器也包含了頁面快取。我們的兩個容器都達到了上限。但它們從未因記憶體不足而被強制關閉。請檢查記憶體不足計數器,而不是最高水位線。.

掌握了這兩個事實之後,8 GB 就不再是一個冒險的數字了。將緩衝池大小降至 1 GB——仍然遠大於整個資料庫——釋放的實際記憶體比調整大小所需的還要多。我們在關閉虛擬機器之前就已經驗證了最終輸入到 VMM Pro 中的數值。.

一個小團隊如何利用 VMM Pro 回收整個伺服器

在 Synology 虛擬機器中,記憶體是固定的。虛擬機器管理程式會鎖定並預先分配內存,這意味著您無法像在其他一些平台上那樣超額分配內存。分配給一個虛擬機的 16 GB 內存,無論該虛擬機處於繁忙狀態還是空閒狀態,其他任何虛擬機都無法使用。正是這種限制使得在 Synology 虛擬機器上進行記憶體最佳化變得至關重要。 VMM Pro 具體來說:除了購買 NAS 之外,釋放記憶體是增加容量的唯一方法。.

VMM Pro 叢集視圖,顯示調整虛擬機器大小後主機可用記憶體
調整規模後的 VMM Pro 叢集視圖。虛擬機器的預留記憶體從 19.74 GB 減少到 11.74 GB。.

在一台總記憶體 46.83 GB 的主機上,回收了 8 GB 的空間。可用記憶體從大約 22 GB 減少到 30.29 GB。實際上,這相當於額外創建了兩個我們實際運行大小的虛擬機,而這只是基於測量結果。在一個三節點叢集中,這也意味著剩餘的主機有更大的空間來容納故障節點的虛擬機,而這正是我們當初選擇 VMM Pro 模式的初衷。.

CPU 方面的情況則較為直接。虛擬機器擁有八個虛擬 CPU,但在空閒狀態下僅使用了大約六分之一的核心。四個並非妥協之舉;四個仍然相當慷慨,而 VMM Pro 也將其應用到了一個單獨的字段中。自調整大小以來,虛擬機器的平均負載為 1.36,而虛擬 CPU 只有四個,這意味著即使在一天中最繁忙的時段,CPU 使用率也約為三分之一。.

Synology 和 VMM Pro 顯示配置合適的虛擬機,即 4 個虛擬 CPU 和 8 GB 記憶體。
更改後的客戶機:四個核心,八 GB 內存,以及三十八個快照。.

防止啟動時記憶體溢出循環的操作順序

這部分很容易出錯,出錯代價也很高。容器記憶體限制和你在 VMM Pro 中設定的客戶機記憶體是兩個獨立的上限。如果容器內存限制總和超過了客戶機內存,就相當於你允許容器使用的內存超過了機器的可用內存。在高負載情況下,核心會透過終止某些進程來解決這種衝突。.

變更前,我們的限制是應用容器 7 GB,資料庫 4 GB——在 16 GB 的虛擬機器上總共 11 GB,這沒問題。但在 8 GB 的虛擬機器上,一旦流量高峰到來,就會引發安全隱患。因此,容器必須先關閉:

環境前後
客人8 個虛擬 CPU / 16 GB4 個虛擬 CPU / 8 GB
應用程式容器限制7168 MB4096 MB
資料庫容器限制4096 MB2048 MB
資料庫緩衝池3 GB1 GB
資料庫最大連線數300100
Apache 工作行程上限5035

該表中隱藏著一條二階規則。您不能將容器的記憶體限制降低到低於其當前使用量,並期望核心能夠友好地執行此操作。應用程式容器使用的記憶體低於其新的限制,因此在無需重新啟動或停機的情況下即時限制了其記憶體。資料庫容器使用的記憶體高於其新限制,因此必須先重新配置其緩衝池並重新啟動容器;只有完成這些步驟後,才能套用較低的限制。在 VMM Pro 中,這兩個步驟都不會執行-必須先完成這兩個步驟,才能開啟調整大小對話方塊。.

容器管理器顯示 WordPress 容器記憶體限制已降低至 4 GB
更改後的應用程式容器,其啟動時間與客戶機重新啟動時間一致。.

工作進程上限是整個方案中唯一真正的成本,它應該被明確指出,而不是被掩蓋。將應用程式容器從 7 GB 縮減到 4 GB 意味著並發請求的數量會減少:從 50 個減少到 35 個,峰值並發量降低了 30%。網站日常運行 11 個工作進程,所以一切照舊。但在廣告高峰期可能會有所變動。這是我們有意做出的權衡,並且已經記錄下來,以免在系統當機時再次出現問題。.

AI助理實際上做了什麼,以及它錯在哪裡

助手完成了那些需要耐心才能完成的部分:它在進行任何操作之前就拍攝了 VMM Pro 快照,讀取了 cgroup 統計信息而不是依賴儀錶盤,計算出了容器限制的排序約束,並通過抓取實際頁面並檢查價格是否仍然以正確的貨幣顯示來驗證結果。這相當於將大約 40 分鐘的細緻工作壓縮到了幾分鐘之內,而且確實非常實用。.

它也曾在測試中出錯三次,而這才是故事中更有價值的部分。.

  • 當用戶要求8GB時,它卻建議了10GB。使用者的要求是對的——但這只是因為過大的緩衝區池同時被鎖定了。助手雖然掌握了測量結果,但仍堅持使用較穩健的數字。.
  • 它為客人重新命名,讀 成功:是 API 請求重新命名操作,並報告重命名已完成。但實際上並未重命名。它使用的重命名字段是用於標識訪客的字段,而不是用於更改訪客名稱的字段,而 API 無論哪種情況都會返回成功。.
  • 它偵測到一個 VMM Pro 叢集發出關於無法存取主機的警告,並將其標記為故障轉移路徑降級。該主機是一台冷備用機,已故意斷電。該警報已按設計存在數月。.

這三種情況的模式相同:透過合理的檢查獲得可靠的輸出。因此,真正重要的防護措施往往並不引人注目。每次都應該先進行快照,在執行第一個命令之前,而不是在執行風險命令之前。永遠不要將返回值視為證據——要回溯狀態並查看你想要更改的欄位。並且要驗證行為,而不是設定:頁面載入成功且價格正確,勝過任何命令回傳值為零的確認。.

這些並非人工智慧特有的。這與你希望一位擁有root權限的新同事具備的素質並無二致:他行動迅速、不知疲倦,但偶爾也會對某些錯誤的事情深信不疑。.

哪裡可以找到更多官方資源

在使用 VMM Pro 調整任何內容大小之前,建議先觀看以下三個影片。第一個影片對該軟體包本身進行了最佳概述;另外兩個影片則講解瞭如何創建和授權訪客,這通常是大多數人在第一次嘗試時遇到的問題。.

Virtual Machine Manager 的詳細介紹,它是 VMM Pro 的升級包。.
從頭開始建立 DSM 虛擬機,包括授權提示。.
雖然年代較早,但仍準確地介紹如何在 Virtual Machine Manager 內安裝 Virtual DSM。.

在將 VMM Pro 用於生產之前需要了解的局限性

記憶體不能超額分配。您分配的每一GB記憶體都會被鎖定,與其他所有NAS裝置(無論是否繁忙)的資源隔離。正是這種限制使得合理分配記憶體變得至關重要,也正因如此,在NAS上,一開始就隨意估計記憶體容量的成本會比允許超額分配的平台更高。.

縮減記憶體需要重啟,因為 VMM Pro 不會從正在運行的虛擬機器移除記憶體。擴展虛擬磁碟和增加某些資源是即時進行的,但移除記憶體意味著關閉虛擬機器。請預留並安排短暫的停機時間;兩分鐘是可以實現的,但並非零。.

虛擬磁碟會不斷成長,永不縮減。如果您過度分配的是儲存空間而不是內存,, VMM Pro 不會歸還。唯一的辦法是創建一個新的虛擬機器然後遷移過去,但這比今天下午的時間要長得多。.

容器內的 CPU 限制可能完全無效。在這個虛擬機器中,核心沒有 CFS 頻寬控制,因此容器 CPU 配額會被直接拒絕——更糟的是,嘗試在同一命令中同時設定 CPU 配額和記憶體限制會導致整個命令靜默失敗。記憶體限制和應用程式本身的 worker 數量上限是僅有的 CPU 保護措施。.

快照並非備份。它與受保護的客戶機位於同一主機和同一儲存池中。 VMM Pro 可以將快照複製到距離更近的另一台主機,但真正能在火災中倖存下來的仍然是異地資料備份。.

最後,注意控制台的輸出。容器詳情頁面會以明文顯示環境變量,包括資料庫密碼。這並非 Docker 的缺陷,而是其一貫的坦誠做法,但這也意味著,即使只是截取一張錯誤頁面的螢幕截圖,也會洩漏憑證。如果您對此感到不安(理應如此),請將這些金鑰移至容器讀取的檔案中,而不是以變數的形式傳遞。.

參考

經常問的問題

對於單一 NAS 設備來說,VMM Pro 值得購買嗎?

可能不行。 Virtual Machine Manager 是免費的,免費版可以在一台機器上運行具有本機快照的生產環境虛擬機器。 VMM Pro 的優點在於,當你擁有第二台 NAS,並且希望虛擬機器能夠在主機之間遷移、自動故障轉移,或將快照複製到運行所在機器以外的其他位置時,它就能發揮作用。.

我可以在不停機的情況下縮小 Synology 虛擬機器嗎?

不。 Synology 主機上的記憶體是鎖定並預先分配的,因此 VMM Pro 無法即時減少內存,只能關閉虛擬機器。我們的虛擬機器在端對端中斷了 2 分 7 秒,期間也進行了資料庫的正常關閉。相比之下,虛擬磁碟的成長可以在虛擬機器運行時進行。.

如何判斷一個容器實際上需要多少記憶體?

讀取容器內部的 cgroup 內存統計信息,並查看匿名內存使用量,而不是監控工具報告的總內存使用量。總使用量包含頁面緩存,核心會按需回收這些快取。我們的資料庫容器報告使用了 3.25 GB 的內存(限制為 4 GB),但實際只有 2.55 GB 的不可回收內存,其中大部分是過大的緩衝池。.

我應該按什麼順序更改容器限制和客戶機記憶體?

先設定容器,再設定虛擬機器-在容器記憶體限制符合要求之前,請勿開啟 VMM Pro 調整大小對話框。如果容器記憶體限制的總和超過了虛擬機器可用內存,虛擬機器在首次啟動時可能會耗盡內存。另請注意,如果容器已使用的記憶體超過新的限制,則無法直接限制其大小:請重新配置容器並重啟,使其恢復到較小的記憶體佔用,然後再降低限制。.

VMM Pro 中的鎖定快照是否會計入我的保留期限?

鎖定快照可以使其免於定期輪換,這正是您在進行此類更改之前需要鎖定快照的原因。如果沒有鎖定,繁忙的複製計劃可能會在您確認更改安全性之前悄悄刪除您所依賴的還原點。.

讓AI助理調整生產環境中的虛擬機器大小是否安全?

有了防護措施,答案是肯定的,而且這些防護措施並不複雜。在執行第一個命令之前(而不是在執行風險命令之前)先拍攝快照。要求讀取狀態而不是僅依賴成功回應。驗證使用者能夠看到的行為,而不是你剛剛寫的設定。我們的助手在一個會話中出現了三個錯誤,而每一個錯誤都是透過讀取狀態捕獲的。.

合理化裁員究竟節省了什麼?

8 GB 的固定記憶體和 4 個虛擬 CPU 已返回到 VMM Pro 主機池,使可用記憶體從大約 22 GB 增加到 30.29 GB(總記憶體為 46.83 GB)。這為另外兩台我們運行的同等規模的虛擬機器提供了空間,也為叢集吸收故障節點提供了更多餘裕。.

Virtual DSM 能否運行 Docker?調整虛擬機器大小是否會影響容器?

是的,Virtual DSM虛擬機器是一個完整的DSM系統,因此容器管理器的安裝方式與在實體NAS上完全相同。在VMM Pro中調整虛擬機大小不會影響容器本身,但容器的記憶體限制是一個單獨的上限,必須先降低記憶體限制以適應較小的虛擬機,然後再縮小虛擬機。.

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


評分
5.0
閱讀我們的評論