歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 微軟愛Linux:Linux動態內存配置與及時備份

微軟愛Linux:Linux動態內存配置與及時備份

日期:2017/2/28 13:56:21   编辑:Linux教程

動態內存配置以及及時備份是您在Hyper-V上運行Linux時相當重要的功能。這兩項功能需要Hyper-V主機與客戶端操作系統間密切的協同處理方能達成的功能。而現在微軟已經將這兩項功能帶至Hyper-V與Linux之中。

Linux動態內存配置

動態內存配置是一項在 Hyper-V 中可選擇使用的技術之一,如果您啟用此技術,Hyper-V 將會按照 Guest OS 所需要的內存大小,自動的保留或釋放物理內存。 當動態內存開啟時,能夠聚集事實上還沒被 Guest OS 用到的內存空間。 這使得內存能夠更妥善的被利用,能夠提高單台 Host OS 上運行的虛擬機數量,提高整體虛擬機的密度,能夠讓硬件有更高的利用率以及減少每個虛擬機所需要的花費。動態內存配置技術在 Windows 以及 Linux 客戶端操作系統都能夠使用,甚至可以在單一 Hyper-V 主機上使用這兩種操作系統的混合配置。

動態內存配置是在多種混合環境,盡可能發揮內存使用率的技術。 Hyper-V 將會減少對於內存使用較少的客戶端操作系統,並將其指定給使用較多內存的客戶端操作系統使用。 而 Hyper-V 會自行做內存的配置與調整和不需要管理人員去進行調整等工作。

如果目前客戶端操作系統內存需求已達穩定的程度,這時動態內存所能帶來的好處就不會表現得太明顯。 如果您的配置情況是可以穩定掌握的,那我們將會建議您關閉此項技術。另外,有些客戶端操作系統上的程序會嘗試著把所有劃分給他使用的內存都拿去自行規劃管理,而繞過操作系統。像如果有這種程序自行規劃內存配置時,則動態內存建議不進行啟用,因為這類的程序可能會與 Hyper-V 所提供的技術會有所沖突。 最普遍的例子就像是大型可擴展的數據庫以及一些 Java 應用服務器等。

在 Hyper-V 中動態內存的技術支持大部分的 Linux 發行版,但目前尚未於 FreeBSD 上支持。 這一部分可以持續關注在 TechNet 上的 LIS/BIS 技術表格,查看哪些發行版已經支動態內存技術。

動態內存技術是如何工作的?

動態內存技術使用兩種技術達成,而彼此兩者為獨立的方式:做 ”Hot-Add” 以及 ”Ballooning”。 為了要了解這兩種技術,首先我們先來看到 Hyper-V 允許您在虛擬機中設置三個動態內存配置的參數:

◆起始內存-最一開始虛擬機啟用時應該配置的內存大小。

◆最大內存限度-在這個虛擬機中能夠從動態內存術配置到的最大內存大小。

◆最小內存限度-最小內存是動態內存配置時,最少需要給此虛擬機最低限度的內存大小。

通常起始內存會介於最大內存限度與最小內存限度之間。

而前面提到 ”Hot-add” 技術是當虛擬機對內存用量需求增加時,則會逐漸地將該虛擬機的可用內存逐漸提升到最大內存限度。 而這種方式只會逐漸提升虛擬機中可用的內存限度,但並沒有辦法做到 ”Hot-remove”,也就是說這個方式只能增加內存而無法收回不使用的內存。

而在內存自虛擬機中回收已配置的大小是使用 ”Ballooning” 技術。 這是由 LIS 內動態內存驅動程序來向客戶端操作系統宣稱這些內存必須要留給 LIS,因此在 Linux 客戶端操作系統上並沒有辦法使用到這些內存。 接著LIS內存驅動程序會將這些由 LIS 占用的內存還給 Hyper-V,讓 Hyper-V 能夠配置給其他虛擬機使用。 這個操作並不會導致原本的 Linux 客戶端操作系統的總內存容量減少,反而是其 Linux 客戶端操作系統認為內存應該是被用來當作某些程序的緩沖區域。 因此 Ballooning 技術不會將其 Linux 客戶端操作系統所看到實際可以用的內存空間減少至小於最小內存限度所設定的值以下。

Ballooning 技術亦可將可用內存配置回虛擬機當中,當 Hyper-V 決定要歸還界用的內存時,LIS 內將會歸還先前宣稱需要使用的內存空間回 Linux 客戶端操作系統。 當虛擬機內存需求提升且 Ballooned 的內存皆已歸還,這時 Hyper-V 將會使用 Hot-add 配置更多的內存給需要的虛擬機中。

動態內存配置范例

讓我們來看看動態內存的配置流程,我們用下列的示例來解釋這三個步驟:

◆一台虛擬機開啟,其內存大小將會依照起始內存所設定的內存大小做配置。

◆虛擬機對內存的需求增加,於是 Hyper-V 通過 Hot-add 技術增加該虛擬機的內存。

◆虛擬機對對內存的需求減少,於是 Hyper-V 通過 Ballooning 技術釋放空閒內存。

而上面這三個步驟的過程我們用幾種方式來觀察:

◆從一個概要的內存配置圖來顯示目前內存配置狀況。 

◆通過 Hyper-V 管理員內的內存頁面查看內存狀況。 

◆在 Linux 下使用 free –m 命令查詢內存狀況。

前面兩個方式為從虛擬機觀察內存消耗狀況,而第三種方式為從客戶端操作系統內部觀察內存使用狀況。

在第一個步驟時,虛擬機此時開機完畢後並沒有特別顯明的程序消耗內存。 依照該虛擬機設定的起始內存配置相對應大小的內存。此時在 Hyper-V 與 Linux 客戶端操作系統內也可以看到相同數量的內存,但要注意 Linux 內已經預留 32MB 的內存大小給 BIOS 作為其他的用途使用。

在第二個步驟時,虛擬機內開始有顯著的內存需求出現,這時 Hyper-V 會開始通過 Hot-add 技術將更多的內存配置給虛擬機,可以看到在 Assigned Memory 的字段顯示的大小增加,而在 Linux 客戶端操作系統中也會跟著提升(依然保留 32MB 給 BIOS 使用)。

在第三個步驟時,先前耗費內存的程序完成運算,對內存使用量下降,這時 Hyper-V 會通過 LIS 使用 Ballooning 技術開始回收這些內存,而在 Hyper-V 內的 Assigned memory 此時會開始下降。 但是在 Linux 客戶端操作系統內查看內存狀態時,並不會作任何改變,仍然保持剛剛在高內存使用量額外加上的內存大小。盡管 Linux 客戶端操作系統可使用的內存看起來沒有任何改變,但其實在亮綠色的區塊中,是有 LIS 拿取並宣稱是 LIS 使用的,借此讓 Linux 客戶端操作系統認為是拿去作為 Buffer 用途。 如果這些亮綠色的區塊皆被 Linux 拿去使用且 Linux 客戶端操作系統對內存需求量又開始增長,這時會回到步驟一的情況,使用 Hot-add 配置更多內存到該虛擬機中。

Linux 及時備份

接著,我們來談談另外一項功能,及時備份。 及時備份允許您在不停止或者關閉虛擬機的情況下,能夠建立一個 Linux 虛擬機的完整備份,包括其中的虛擬磁盤驅動器。這個功能主要是確保您在生產階段所使用的環境能夠保持其最大的上線時間。

文件系統的備份必須要維持一致性,當一個備份動作被執行時,Linux 客戶端操作系統上的文件系統將會把位於內存 Buffer 內的數據回寫入虛擬磁盤中。 這個動作是為了確保操作系統有把所有的數據回寫入磁盤,否則當您通過備份文件恢復虛擬機時可能會遇到數據不一致的問題。

讓我們通過上圖示例,看看及時備份是如何工作的吧!

◆通過微軟或者第三方廠商所提供的備份軟件,要求 Hyper-V 備份一個或多個虛擬機。

◆通過在 LIS 內的 VSS 驅動程序,Hyper-V 與 Linux 虛擬機溝通並開始備份程序。 而這個稱作 VSS 的驅動程序其實是因為部分功能類似於 Windows 中 ”Volume Shadow Copy Service” 而命名。 但不盡相同,因此別把這兩個名稱視為同一種技術。

◆而 VSS 驅動程序與 Linux User space 內的 VSS 服務溝通,而 VSS 服務將會向 Linux 發出暫停文件系統與回寫內存回虛擬磁盤請求。

◆Hyper-V 將會建立一個備份的檢查點(Check point ),並告訴 LIS 可以將系統狀態解除暫停。 而 Linux 文件系統僅會在第三與第四步驟時暫停操作,而這足夠將內存內的數據回寫並且建立虛擬機檢查點,通常這個動作會小於 2 秒。

◆在 Hyper-V 內的 Windows VSS 將會對該虛擬磁盤建立一個快照磁盤卷(VHD/VHDX)。

◆而備份軟件再將此 VHD/VHDX 復制到其他的儲存空間上。

小結

動態內存配置以及及時備份是您在 Hyper-V 上運行 Linux 時相當重要的功能。這兩項功能需要 Hyper-V 主機與客戶端操作系統間密切的協同處理方能達成的功能。而現在微軟已經將這兩項功能帶至 Hyper-V 與 Linux 之中。

Copyright © Linux教程網 All Rights Reserved