在本文中,我們將詳細討論虛擬磁碟設置中的存儲預分配方面,找出什麼是粗略分配和細粒分配,它們有何不同,以及這些存儲預分配類型中哪一種更適合您的基礎設施。
粗略分配
粗略分配是一種存儲預分配類型。使用粗略分配時,虛擬磁碟存儲容量的完整量在虛擬磁碟創建時被預先分配到物理存儲上。粗略分配的虛擬磁碟從一開始就佔用了在數據存儲中分配給它的所有空間,因此其他虛擬機器無法使用這些空間。
粗略分配的虛擬磁碟有兩個子類型:
- A Lazy zeroed disk is a disk that takes all of its space at the time of its creation, but this space may contain some old data on the physical media. This old data is not erased or written over, so it needs to be “zeroed out” before new data can be written to the blocks. This type of disk can be created more quickly, but its performance will be lower for the first writes due to the increased IOPS (input/output operations per second) for new blocks;
- 急於清零磁碟是一個在創建時獲得所需空間的磁碟,並且將物理媒體上的任何以前的數據清除。創建急於清零的磁碟需要更長的時間,因為將零寫入整個磁碟,但其性能在第一次寫入時更快。這種粗略分配的虛擬磁碟子類型支持集群功能,如容錯容忍。
出於數據安全考量,對於厚配置的虛擬磁碟來說,急切歸零比懶惰歸零更常見。為什麼呢?當您刪除一個VMDK時,數據存儲中的數據並未完全被刪除;這些區塊只是被標記為可用,直到操作系統覆蓋它們。如果您在此數據存儲上創建一個急切歸零的虛擬磁碟,該磁碟區域將被完全擦除(即歸零),從而防止任何惡意使用者能夠恢復先前的數據 – 即使他們使用專門的第三方軟件。
薄配置
薄配置是另一種存儲預分配類型。薄配置的虛擬磁碟僅在最初需要的空間,並根據需求隨時間增長。
例如,如果您創建一個新的薄配置的30GB虛擬磁碟並將10GB文件複製到其中,則生成的VMDK文件大小將為10GB,而如果您選擇使用厚配置磁碟,則將有一個30GB的VMDK文件。
薄配置虛擬磁碟快速建立,有助於節省儲存空間。薄配置磁碟的效能不如懶惰零填充厚配置磁碟高,因為這兩種磁碟類型在寫入新區塊的資料之前都必須寫入零。請注意,當您從薄配置虛擬磁碟中刪除資料時,磁碟大小不會自動減少。這是因為作業系統僅刪除檔案系統中指向檔案主體的檔案表索引;它將屬於“已刪除”檔案的區塊標記為空閒並可供新資料寫入。這就是為什麼我們認為檔案刪除是瞬間完成的原因。如果是完全刪除,即將零寫入已刪除檔案佔用的區塊,將需要大約與複製相關檔案的時間相同。請參見下方簡化的說明。
使用薄配置虛擬磁碟可能出現的問題
使用薄配置虛擬磁碟並非總是順暢。有一些問題您應該注意並準備應對。
讓我們考慮一個將虛擬機器無法使用的例子。例如,我們有一個20GB的資料存儲,上面運行著三個虛擬機器。每個虛擬機器都設有一個最大大小為10GB的薄虛擬磁碟。 (這種做法稱為“超配” – 我們為虛擬磁碟分配了比它們實際佔用的空間更多的空間。這經常這樣做,因為它允許您通過根據需要添加更多的物理存儲來擴展系統。)每個虛擬磁碟的文件大小將隨著添加數據而擴展,直到資料存儲上沒有剩餘空間為止。 當資料存儲上僅剩1GB的空間時,情況變得危急,例如,當VM1佔用8 GB,VM2佔用7 GB,VM3 – 4 GB時。
虛擬機器內的常規文件刪除方法將無法幫助縮小薄虛擬磁碟。 如果向這些虛擬機器中的任何一個寫入了超過1GB的新數據,則所有三個虛擬機器都將失敗,您將需要將一個或多個虛擬機器遷移到另一個資料存儲中以恢復其運行狀態。
刪除文件後如何減小薄虛擬磁碟的大小
要能夠減小您的薄虛擬磁碟的VMDK文件大小,您需要知道如何將以前刪除的數據所佔用的區塊歸零。 讓我們找出如何做到這一點。
注意:只有在虛擬機器不包含快照的情況下,才能執行磁盤收縮操作。此外,請注意並自行負責執行命令。在執行任何磁盤操作之前,請始終備份所有重要數據。
在 Linux 中收縮 Thin-Provisioned VMware 磁碟
讓我們考慮一個例子:我們有一個 10,266,496 KB(10GB)的 VMDK 檔案(我們通過進入虛擬機所在的數據存儲位置的目錄了解到其大小),並且想要縮小安裝有客戶端 Linux 作業系統的虛擬磁碟。我們可以嘗試刪除該虛擬磁碟上的不必要文件。但是,Linux 在刪除文件後不會自動將區塊歸零;您必須自己執行此操作。您可以使用 dd
(數據複製工具)實用程序來複製和轉換數據。此工具在所有 Linux 系統上都可用。
注意:在運行 dd
實用程序之前,必須確保數據存儲有足夠的容量可以使用它(例如,對於 ESXi 伺服器,您可以在 vSphere 客戶端的存儲部分檢查存儲容量 – 轉到 配置 > 存儲)。
讓我們使用 dd
實用程序。
-
首先,我們使用
df -h
命令檢查客戶 Linux 虛擬機器上的可用空間:root@test-virtual-machine:/# df -h
在控制台中,我們得到以下輸出:
檔案系統 容量 已用 可用 已用% 掛載點 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
從這個輸出中我們可以看到,
/
(根目錄)分區包含了 8.8 GB 的檔案。 -
現在,讓我們在根目錄中刪除一些不必要的檔案。如果我們運行
df -h /
命令,我們將在控制台中看到以下內容:檔案系統 容量 已用 可用 已用% 掛載點 /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 兆字節塊的數量是 10240。 -
if
表示“輸入文件”。這是您應該指示要從中複製數據的來源。在我們的情況下,它是/dev/zero
– 一個特殊文件(一個虛擬設備),可以提供您想要從中讀取的空字符。 -
of
表示“輸出文件”。這是您設置想要將數據寫入/粘貼的目的地的地方(在我們的情況下,文件的名稱是zero
)。
執行上述命令後,我們的 VMDK 文件大小增加了。這是我們在成功完成命令後看到的輸出:
10240+0 個記錄輸入 10240+0 個記錄輸出 10737418240 字節(10 GB)已複製,59.4348 秒,181 MB/s 命令已成功完成。
因此,現在我們的 VMDK 文件大小為 11,321,856 KB(10.8 GB),這意味著它已擴展。此外,如果我們再次運行
df -h /
命令,我們將看到以下內容:文件系統 大小 已用 可用 使用% 掛載在 /dev/sda7 17G 15G 569M 97% /
這意味著幾乎整個根分區(即 97%)被佔用。這是因為我們已經用零填滿了以前“可用”的大部分空間。現在,我們的薄型虛擬磁盤已準備好被收縮。
注意: 執行收縮操作需要安裝 VMware 工具。
-
對於運行在 VMware ESXi 或 VMware Workstation 上的虛擬機器,我們在 Linux 客戶端 OS 中執行以下兩個命令。a) 確保磁盤分割可用,我們運行以下命令:
root@test-virtual-machine:/# vmware-toolbox-cmd disk list
這是我們案例中看到的輸出(即,我們看到可用分割列表):
/
/boot
/var/log
根分割存在,所以我們可以繼續。b) 為了收縮分割,我們運行以下命令:
root@test-virtual-machine:/# vmware-toolbox-cmd disk shrink /
這是我們案例中看到的輸出:
請忽略在收縮過程中關於磁盤空間的任何警告。 進度: 100 [===========>] 磁盤收縮完成。
現在,我們收縮後的 VMDK 檔案大小為 5,323,456 KB(即 5.08 GB ——比之前的 10.8 GB 少得多)。
注意:如果您的客戶虛擬機正在運行在ESXi服務器上,在用零填充塊之後,您可以按照以下步驟進行:
- 關閉虛擬機,或者斷開您想要收縮的虛擬磁盤。
- 使用SSH客戶端連接到ESXi主機。
- 進入虛擬機文件夾。
- 使用
du -h
驗證磁盤使用情況。 - 運行
vmkfstools -K test-virtual-machine.vmdk
。 - 再次使用
du -h
驗證磁盤使用情況。
在Windows中收縮Thin-Provisioned VMware Disks
像Linux一樣,Windows在刪除文件後不會自動將區塊歸零。要能夠在您的Windows虛擬機上將目標磁盤的空閒空間歸零,您需要下載SDelete – 這是來自Microsoft Sysinternals Suite的免費實用程序 – 並將從下載的存檔中解壓縮文件到c:\program files\sdelete
。
然後按照以下步驟進行:
- 運行
cmd
-
轉到SDelete所在的目錄。在我們的情況下,這是:
cd c:\program files\sdelete
-
對於控制台中的每個分區,使用
sdelete -z
命令。這就是我們的情況:sdelete -z c:
sdelete -z d:
這些命令將通過填充指定分區上的任何未使用空間來將您的薄配置磁盤上的任何空閒空間歸零。請等待幾分鐘,直到過程完成。在此過程中,您的VMDK文件將擴展到其最大大小。
-
請確保 VMware Tools 已安裝在您的 Windows 虛擬機上。預設情況下,VMware Tools 會安裝到
c:\program files\vmware\vmware tools\
透過輸入以下命令來導航至此目錄:
cd c:\program files\vmware\vmware tools\
-
若要查看可用的磁碟分區,請輸入:
vmwaretoolboxcmd disk list
-
縮小您需要的磁碟分區。在我們的情況下,我們執行了以下命令:
vmwaretoolboxcmd disk shrink c:\
vmwaretoolboxcmd disk shrink d:\
請等待程式完成縮小磁碟的操作。
您可以將此方法用於在 VMware ESXi 或 VMware Workstation 上運行的虛擬機。
VMware 儲存分佈式資源調度器
以上,我們提到了一個手動縮小薄配置磁盤的解決方案。但是,如果您在 vSphere 中使用數據存儲集群,還有一種管理虛擬磁盤(包括薄配置和厚配置)的方法。VMware 提供了數據存儲集群內部的自動虛擬磁盤遷移,以避免薄配置虛擬磁盤所在位置的磁盤存儲溢出,並平衡 I/O 資源。
如果您在 ESXi 伺服器上掛載了多個共享數據存儲,您可以設置 Storage Distributed Resource Scheduler(Storage DRS)。Storage DRS 是一個智能的 vCenter Server 功能,用於有效管理 VMFS 和 NFS 存儲,提供自動虛擬機磁盤放置和遷移。如果您希望手動批准遷移建議,您也可以將 Storage DRS 設置為手動模式。
按照以下步驟啟用 Storage DRS:
- 在 vSphere Web Client 中導航至數據存儲集群。
- 轉到 vCenter > 數據存儲集群。
- 選擇您的數據存儲集群,然後點擊 管理 > 設置 > 服務 > Storage DRS。
- 點擊 編輯。
- 配置您需要的自動化設置、與 I/O 相關的功能和高級選項。
- 點擊 確定 完成。
如果您的 vSphere 環境中沒有數據存儲集群,請按照以下步驟創建和設置新的數據存儲集群:
- 前往 vCenter > 資料中心 在 vSphere Web 客戶端中。
- 在您的資料中心上按一下右鍵,然後選擇 新資料存儲叢集。
- 輸入您的資料存儲叢集的名稱,並選中“打開存儲 DRS”旁邊的核取方塊。
- 選擇您需要的自動化設置、I/O 相關功能和高級選項。
- 按一下 確定 完成。
結論
在這篇博客文章中,我們考慮了虛擬磁盤的類型,並權衡了每種磁盤的優缺點,以更好地了解厚配置和薄配置之間的區別。渴望零化厚配置磁盤在性能和安全性方面是最好的,但需要足夠的免費存儲空間並且需要花費大量時間來創建。惰性零化厚配置磁盤由於其短創建時間而適合,但它們的速度不及渴望零化磁盤,且安全性較低。薄配置磁盤是在磁盤創建時節省資料存儲空間的最佳選擇。
您可以創建一個具有比您現有的物理空間更大的最大大小的虛擬磁盤(“過度配置”),並在將來添加更多物理存儲,但請記住,如果物理磁盤空間填滿並且薄配置磁盤無法擴展以容納更多數據,您的虛擬機器將變得無法使用 – 所以不要忘記密切關注剩餘空間的數量。我們還介紹了縮小薄配置 VMware 虛擬磁盤的方法,以防您不想添加更多存儲並需要減少所佔空間。
Source:
https://www.nakivo.com/blog/thick-and-thin-provisioning-difference/