厚配置與薄配置:兩者有何區別?
在本文中,我們將詳細探討虛擬磁碟設定中的儲存預分配機制,並釐清"厚式配置"與"薄式配置"的定義、兩者有何差異,以及這兩種儲存預分配類型中,哪一種更適合您的基礎架構。
厚配置
厚配置是一種儲存預分配方式。透過厚配置,在建立虛擬磁碟時,虛擬磁碟的完整儲存容量會預先在實體儲存裝置上分配。採用厚配置的虛擬磁碟從一開始就會佔用資料存放區中分配給它的所有空間,因此該空間將無法供其他虛擬機器使用。
厚配置虛擬磁碟有兩種子類型:
- A
Lazy zeroed disk這是一種在建立時即佔用全部空間的磁碟,但該空間在實體儲存媒體上可能仍存有舊資料。由於這些舊資料並未被刪除或覆寫,因此在向區塊寫入新資料之前,必須先將其"清零";此類磁碟的建立速度較快,但由於新區塊的 IOPS(每秒輸入/輸出操作次數)增加,其首次寫入時的效能會較低; - 一個
Eager zeroed disk這是一種在建立時即預先分配所有所需空間的磁碟,且物理媒體上的先前資料會被徹底清除。建立"預先清零"磁碟所需的時間較長,因為必須將零值寫入整個磁碟,但其首次寫入時的效能會更佳。此類厚配置虛擬磁碟的子類型支援叢集特點,例如容錯功能。

基於資料安全考量,在厚配置虛擬磁碟中,預先清零比延遲清零更為常見。為什麼呢?當您刪除一個 VMDK 時,資料存放區上的資料並不會被完全清除;這些區塊僅被標記為可用,直到作業系統覆寫它們為止。 若您在此資料存放區上建立一個採用"積極清零"的虛擬磁碟,該磁碟區域將會被徹底清除(即清零),從而防止任何懷有惡意的人士能夠復原先前資料——即使他們使用專用的第三方軟體亦然。
精簡配置
精簡配置是另一種儲存預分配方式。 採用精簡配置的虛擬磁碟僅會佔用初始所需的空間,並會隨著時間推移根據需求進行擴充。
舉例來說,若您建立一個 30GB 的新精簡配置虛擬磁碟,並將 10 GB 的檔案複製至其中,生成的 VMDK 檔案大小將為 10 GB;反之,若您選擇使用厚配置磁碟,則會產生一個 30GB 的 VMDK 檔案。

薄配置虛擬磁碟建立迅速,且有助於儲存空間。薄配置磁碟的效能並不比懶惰清零的厚配置磁碟更高,因為這兩種磁碟類型在將資料寫入新區塊之前,都必須先寫入零值。請注意,當您從薄配置虛擬磁碟中刪除資料時,磁碟大小並不會自動縮減。 這是因為作業系統僅會從檔案表中刪除指向檔案系統中檔案本體的索引;它會將原本屬於"已刪除"檔案的區塊標記為可用,以便寫入新資料。這正是我們之所以會覺得檔案刪除是瞬間完成的原因。若採用完全刪除的方式,即在已刪除檔案所佔用的區塊上寫入零值,所需時間將與複製該檔案所需的時間相仿。 請參閱下方的簡化示意圖。

使用精簡配置虛擬磁碟時可能出現的問題
使用精簡配置的虛擬磁碟並非總是順暢無阻。有幾項問題您應有所察覺並做好應對準備。
讓我們來探討一個會導致虛擬機器無法使用的例子。假設我們有一個 20GB 的資料存放區,上面運行著三台虛擬機器。 每台虛擬機器都配有一組最大容量為 10 GB 的精簡配置虛擬磁碟。(這種做法稱為"超額配置"——我們為虛擬磁碟分配的空間,會超過其實際能佔用的物理空間。此做法相當常見,因為它能讓您在需要時透過增加更多實體儲存空間來縮放系統。) 隨著資料的增加,每個虛擬磁碟的檔案大小會持續擴張,直到資料存放區不再有可用空間為止。當資料存放區僅剩 1GB 可用空間時,情況便會變得危急,例如當 VM1 佔用 8GB、VM2 佔用 7GB,而 VM3 佔用 4GB 時。
在虛擬機器內使用常規的檔案刪除方法,無法縮小這些薄配置虛擬磁碟的容量。若任何一台虛擬機器寫入超過 1 GB 的新資料,這三台虛擬機器都將發生故障,您必須將其中一台或多台虛擬機器遷移至另一個資料存放區,才能恢復其運行狀態。
刪除檔案後,如何縮小薄配置虛擬磁碟的大小
若要縮小薄配置虛擬磁碟的 VMDK 檔案大小,您需要了解如何將先前刪除的資料所佔用的區塊清零。讓我們來看看該如何操作。
註: 只有當虛擬機器中不包含快照時,才可執行磁碟縮小操作。此外,請務必謹慎操作,並自行承擔執行命令的責任。在執行任何磁碟操作之前,請務必先備份所有重要資料。
在 Linux 中縮小 VMware 薄配置磁碟
讓我們來看看一個例子:我們有一個 10,266,496 KB(10GB)的 VMDK 檔案(我們是透過前往虛擬機器位置的資料存放區目錄來得知其大小),並希望縮小安裝了 Linux 客體作業系統的虛擬磁碟。 我們可以嘗試刪除此虛擬磁碟上的不必要檔案。然而,Linux 在刪除檔案後並不會自動將區塊設為零;您必須自行執行此操作。您可以透過使用 dd (資料複製工具) 用於複製和轉換資料。此工具可在所有 Linux 系統上使用。
註: 在執行 dd 若要使用此工具,必須確保資料存放區有足夠的容量(例如,對於 ESXi 伺服器,您可以在 vSphere Client 的"儲存"區段中檢查儲存容量——前往 Configuration > Storage).
讓我們使用 dd 實用工具。
-
首先,我們使用
df -h指令:root@test-virtual-machine:/# df -h我們在控制台看到以下輸出:
Filesystem Size Used Avail Use% Mounted on
udev 469M 0 469M 0% /dev
tmpfs 99M 6,3M 92M 7% /run
/dev/sda7 17G 8,8G 6,4G 58% /
tmpfs 491M 116K 491M 1% /dev/shm
tmpfs 5,0M 4,0K 5,0M 1% /run/lock
tmpfs 491M 0 491M 0% /sys/fs/cgroup
/dev/sda1 945M 121M 760M 14% /boot
/dev/sda6 3,7G 13M 3,5G 1% /var/log
tmpfs 99M 36K 99M 1% /run/user/1000從這個輸出結果可以看出,該
/(root) 分區包含 8.8 GB 的檔案。 -
讓我們刪除根分區中幾 GB 的不必要檔案。如果我們執行該指令,控制台會顯示以下內容:
df -h /指令:Filesystem Size Used Avail Use% Mounted on
/dev/sda7 17G 4,7G 11G 31% /因此,我們的根分區現在包含 4.7 GB 的檔案。然而,若前往 VMDK 檔案的位置,我們會發現其大小仍為 10,266,496 KB(10 GB)。
-
現在我們要將剩餘空間填滿為零(在本例中,我們將把 11 GB 可用空間中的 10 GB 填滿)。首先,我們輸入
cd接著是需要清零的分區所掛載的目錄名稱(在本例中是cd /(因為我們要切換到根分區)。接著,我們執行以下指令,並根據實際需求調整變數:dd bs=1M count=10240 if=/dev/zero of=zero在此指令中:
dd只能以超級使用者身分執行。-
bs設定區塊大小(例如,bs=1M(這將使區塊大小為 1 百萬位元組)。 -
count指定要複製的區塊數(預設值為dd(持續執行直到永遠,或直到輸入資料耗盡為止)。在我們的情況下,10,240 MB 就是我們想要用零填滿的可用空間,因此 1 MB 區塊的數量為 10240。 -
if代表"輸入檔案"。您應在此處指定要複製資料的來源。在本例中,它是/dev/zero– 一個特殊檔案(偽裝置),可提供任意數量的空字元供您讀取。 -
of代表"輸出檔案"。此處是用來設定您要寫入或貼上資料的目的地(在本例中,檔案名稱是zero).
執行上述指令後,我們的 VMDK 檔案大小會增加。以下是指令成功執行後顯示的輸出內容:
10240+0 records in
10240+0 records out
10737418240 bytes (10 GB) copied, 59,4348 s, 181 MB/s
Command has been completed successfully.因此,現在我們的 VMDK 檔案大小為 11,321,856 KB(10.8 GB),這表示檔案已經擴充了。此外,如果我們執行
df -h /再次執行該指令,我們將看到以下內容:Filesystem Size Used Avail Use% Mounted on
/dev/sda7 17G 15G 569M 97% /這表示根分區幾乎已被佔滿(即 97%)。這是因為我們已將先前"可用"的空間大部分填滿了零。現在,我們的薄配置虛擬磁碟已準備好進行縮小。
註: 要執行縮減操作,必須安裝 VMware Tools。
-
對於在 VMware ESXi 或 VMware 工作站上運行的虛擬機器,我們會在 Linux 客體作業系統中執行以下兩個指令。a) 為確保磁碟分割區可用,我們執行以下指令:
root@test-virtual-machine:/# vmware-toolbox-cmd disk list
以下是我們在此情況下看到的輸出結果(即,我們看到可用分割區的清單):
/
/boot
/var/log
根分區已存在,因此我們可以繼續。b) 要縮小該分區,請執行以下指令:
root@test-virtual-machine:/# vmware-toolbox-cmd disk shrink /
以下是我們在本次案例中看到的輸出結果:
Please disregard any warnings about disk space for the duration of shrink process.
Progress: 100 [===========>]
Disk shrinking complete.現在,我們壓縮後的 VMDK 檔案大小為 5,323,456 KB(也就是 5.08 GB——遠低於之前的 10.8 GB)。
註: 如果您的客機虛擬機器是在 ESXi 伺服器上運作,在將區塊填滿零後,您可以依照以下步驟操作:
- 請關閉虛擬機器,或斷開您要縮小容量的虛擬磁碟。
- 使用 SSH 客戶端連線至 ESXi 主機。
- 導航至
Virtual Machine Folder. - 使用以下指令檢查磁碟使用狀況:
du -h. - 執行
vmkfstools -K test-virtual-machine.vmdk. - 使用以下指令檢查磁碟使用狀況
du -h再次。
在 Windows 中縮小 VMware 薄配置磁碟
與 Linux 一樣,Windows 在刪除檔案後並不會自動將區塊清零。若要在 Windows 虛擬機器上將目標磁碟的可用空間清零,您需要下載 SDelete – 這是 Microsoft Sysinternals 套件中的一款免費工具 – 並將下載的壓縮檔解壓縮至 c:program filessdelete
請按照以下步驟操作:
- 執行
cmd -
前往該目錄
SDelete位置。在我們的情況下,它是:cd c:program filessdelete -
對於主控台中的每個區隔,請使用
sdelete -z指令。以下是我們當前的情況:sdelete -z c:
sdelete -z d:
這些指令會將您薄配置磁碟上的所有可用空間清零,方法是填滿指定分割區中的未使用空間。請等待幾分鐘,直到處理程序完成。在此過程中,您的 VMDK 檔案會擴展至最大容量。
-
請確認您的 Windows 虛擬機器已安裝 VMware Tools。預設情況下,VMware Tools 會安裝至
c:program filesvmwarevmware tools請輸入以下指令以導航至此目錄:
cd c:program filesvmwarevmware tools -
若要檢視可用的磁碟分割區,請輸入:
vmwaretoolboxcmd disk list -
縮小您需要的磁碟分割區。在我們的案例中,我們執行了以下指令:
vmwaretoolboxcmd disk shrink c:
vmwaretoolboxcmd disk shrink d:
請等待程式完成磁碟縮減作業。
您可以將此方法應用於在 VMware ESXi 或 VMware 工作站上運行的虛擬機器。
VMware 儲存分散式資源排程器
前文我們提到了手動縮小精簡配置磁碟的解決方案。然而,如果您在 vSphere 中使用資料存放區叢集,還有另一種管理虛擬磁碟(無論是精簡配置或厚配置)的方法。VMware 提供資料存放區叢集內的自動虛擬磁碟遷移功能,以避免存放精簡配置虛擬磁碟的磁碟儲存空間溢出,並平衡 I/O 資源。
若您在 ESXi 伺服器上掛載了多個共用資料存放區,可設定"儲存分散式資源排程器"(Storage DRS)。Storage DRS 是 vCenter Server 的一項智慧型特點,用於高效管理 VMFS 和 NFS 儲存,並提供虛擬機器磁碟的自動配置與遷移。若您希望手動核准遷移建議,亦可將 Storage DRS 設定為手動模式。
請依照以下步驟啟用儲存 DRS:
- 在 vSphere Web Client 中導航至資料存放區群集。
- 前往
vCenter > Datastore Clusters. - 選擇您的資料存放區叢集,然後點擊
Manage > Settings > Services > Storage DRS. - 點擊
Edit. - 請設定您所需的自動化設定、I/O 相關功能以及進階選項。

- 點擊
OK完成。
如果您的 vSphere 環境中沒有資料存放區叢集,請依照以下步驟建立並設定新的資料存放區叢集:
- 導航至
vCenter > Datacenters在 vSphere Web Client 中。 - 在您的資料中心上按右鍵,然後選擇
New Datastore Cluster. - 輸入您的資料存放區叢集名稱,並勾選旁邊的核取方塊
"Turn On Storage DRS". - 請選擇您所需的自動化設定、I/O 相關功能以及進階選項。
- 點擊
OK完成。
結論
在這篇部落格文章中,我們探討了各種虛擬磁碟的類型,並權衡了各自的優缺點,以便更深入理解厚配置與薄配置之間的差異。預先清零的厚配置磁碟在效能與安全性方面表現最佳,但需要足夠的可用儲存空間,且建立過程耗時較長。 延遲清零的厚配置磁碟雖具備建立時間短的優勢,但其速度不如預先清零的磁碟,安全性也較低。若要在建立磁碟的當下儲存資料存放區空間,薄配置磁碟是最佳選擇。
您可以建立最大容量大於可用實體空間的虛擬磁碟("超額配置"),並在未來追加實體儲存空間;但請注意,若實體磁碟空間已滿,而薄配置磁碟無法擴充以容納更多資料,您的虛擬機器將無法使用——因此切勿忘記密切關注可用空間的數量。 我們也介紹了縮小 VMware 薄配置虛擬磁碟的方法,以備您不希望增加儲存空間,而需要減少所佔用的空間時使用。