共計 4380 個字符,預計需要花費 11 分鐘才能閱讀完成。
這篇文章主要介紹虛擬磁盤工具 vmkfstools 怎么用,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
一、虛擬磁盤類型
厚置備延遲置零 // 默認選項
創建過程中為虛擬磁盤分配所需空間。創建時不會擦除物理設備上保留的任何數據,但是以后從虛擬機首次執行寫操作時會按需要將其置零
2. 厚置備置零
創建支持群集功能的厚磁盤。在創建時為虛擬磁盤分配所需的空間。創建中會將物理設備上保留數據置零。創建所需的時間可能會比創建其他類型的磁盤長。
3. 精簡置備
使用該磁盤最初所需要的數據存儲空間。如果以后精簡磁盤需要更多空間,則它可以增長到為其分配的最大容量。
二、vmkfstools 操作實例
操作前請先關閉虛擬機,打開 ESXI 配置里的安全配置文件里的 ssh 服務,并需要登陸到 ESXI,輸入用戶名及密碼。
1 虛擬磁盤類型轉換,thick to thin
vmkfstools 命令格式
# vmkfstools -i source-disk-name.vmdk -d {thin|thick} destination-disk-name.vmdk
參數解釋:
-i source-disk-name.vmdk 參數: 原 vmdk 磁盤名
-d {thin|thick} destination-disk-name.vmdk : 目標磁盤的格式,thin 或 thick; destination-disk-name.vmdk 為要生成的目標 vmdk 磁盤名;
1.1 進入虛擬機所在的 datastore 目錄, 每個目錄為一個虛擬機
# cd /vmfs/volumes/datastore1
/vmfs/volumes/4f3cedd3-1b48e924-3d7d-0022195a4404 # ls
cobbler-5.85 converter-two-57.72 datanode2-57.78
1.2 此次轉換的虛擬機為 converter-two-57.72, 進入該虛擬機目錄
/vmfs/volumes/4f3cedd3-1b48e924-3d7d-0022195a4404 # cd converter-two-57.72/
/vmfs/volumes/4f3cedd3-1b48e924-3d7d-0022195a4404/converter-two-57.72 # du -sh *
20.0G converter-two-flat.vmdk 64.0k converter-two.nvram
64.0k converter-two.vmdk 0 converter-two.vmsd
64.0k converter-two.vmx 64.0k converter-two.vmxf
1.3 轉換過程中需要用到的文件是 vmdk 磁盤文件,vmdk 有兩種, 一種是“虛擬機名.vmdk”,vmdk 文件很小, 存放了虛擬磁盤的一些配置信息(如虛擬磁盤數據文件等);另一種是“虛擬機名 -flat.vmdk”, 實際數據都存放在 flat.vmdk 文件中, 轉換時需要使用 vmdk 文件而不是 flat.vmdk 文件。
1.4 開始轉換過程
A:使用 vmkfstools 將厚模式的 vmdk 文件克隆為精簡的 vmdk 磁盤文件,轉換后將生成兩個新的 vmdk 和 flat.vmdk 文件
/vmfs/…./converter-two-57.72 # vmkfstools -i converter-two.vmdk -d thin converter-two_new.vmdk
/vmfs/…./converter-two-57.72 # du -sh *
20.0G converter-two-flat.vmdk
64.0k converter-two.vmdk
64.0k converter-two.vmx
64.0k converter-two.vmxf
7.9G converter-two_new-flat.vmdk
64.0k converter-two_new.vmdk
B:將原來的厚模式磁盤文件 vmdk 和 flat.vmdk 文件備份
/vmfs/…./converter-two-57.72 # mv converter-two.vmdk converter-two_old.vmdk
/vmfs/…./converter-two-57.72 # mv converter-two-flat.vmdk converter-two-flat_old.vmdk
C:將新生成的 vmdk 和 flat.vmdk 磁盤文件分別重命名為原有磁盤名稱
/vmfs/…./converter-two-57.72 # mv converter-two_new.vmdk converter-two.vmdk
/vmfs/…./converter-two-57.72 # mv converter-two_new-flat.vmdk converter-two-flat.vmdk
D:編輯 vmdk 文件,確保 # Extent description converter-two-flat.vmdk 為原有磁盤名稱
/vmfs/…./converter-two-57.72 # cat converter-two.vmdk
# Disk DescriptorFile
version=1
encoding= UTF-8
CID=9cad19cd
parentCID=ffffffff
isNativeSnapshot= no
createType= vmfs
# Extent description
RW 41932416 VMFS converter-two_new-flat.vmdk
# The Disk Data Base
#DDB
ddb.deletable = true
ddb.toolsVersion = 0
ddb.geometry.biosHeads = 255
ddb.geometry.biosSectors = 63
ddb.geometry.biosCylinders = 2610
ddb.virtualHWVersion = 7
ddb.longContentID = 364b422b2ceb3f6f0a4e88d09cad19cd
ddb.uuid = 60 00 C2 94 89 93 59 2c-d9 22 d3 e4 e6 b3 a4 22
ddb.geometry.cylinders = 2610
ddb.geometry.heads = 255
ddb.geometry.sectors = 63
ddb.thinProvisioned = 1
ddb.adapterType = lsilogic
E:啟動虛擬機檢查是否工作正常,對比精簡置備與厚置備大小
/converter-two-57.72 # du -sh *500.0M converter-two-326dc793.vswp
7.9G converter-two-flat.vmdk
20.0G converter-two-flat_old.vmdk
64.0k converter-two.nvram
64.0k converter-two.vmdk
1.5 其它方式
精簡置備轉換至厚置備置零:
vmkfstools –inflatedisk /vmfs/volumes/DatastoreName/VMName/VMName.vmdk
厚置備延遲置零轉換至厚置備置零:
vmkfstools –eagerzero /vmfs/volumes/DatastoreName/VMName/VMName.vmdk
2 更改虛擬磁盤 (vmdk) 大小
要特別注意的是,如果此虛擬機已有快照,請先刪除所有快照在執行以下操作,否則這個 VMDK 將出錯,內部的資料丟失。
2.1 vmkfstools 命令格式
vmkfstools -X [新的大小] [目的 vmdk 文件]
2.2 當前虛擬機虛擬磁盤大小
[root@bz-cl2 ~]# fdisk -l /dev/sda
Disk /dev/sda: 21.4 GB, 21469396992 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
2.3 關閉虛擬機,登陸 ESXI 調整虛擬磁盤大小
/converter-two-57.72 # vmkfstools -X 40g converter-two.vmdk
2.4 開啟虛擬機,驗證虛擬磁盤大小
[root@bz-cl2 ~]# fdisk -l /dev/sda
Disk /dev/sda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
三 vmkfstools 命令參數
/bin # vmkfstools
vmkfstools -C –createfs vmfs3
-b –blocksize #[mMkK]
-S –setfsname fsName
-Z –spanfs span-partition
-G –growfs grown-partition
問題補充:
給虛機 VM1 精簡配置了 1TB 空間,經過長期的運行,現在在 VM1 的 windows 系統里看到數據只有 200GB 左右,但是 vmdk 文件已有 1TB。我覺得,形成的原因是精簡配置只增長不收縮。
解決:
通過 Storage vMotion 在同一文件系統且磁盤區塊大小一樣的存儲之間是無法回收膨脹的 Thin Provision 的 VMDK 空間的。因為 NTFS 文件系統的機制,被寫入過的文件即使將文件刪除系統也不會將磁盤區塊置零,下次再寫入數據只會優先操作標記為零的區塊來寫。目前比較簡單方便的方法是,在 VM 上下載一個 SDelete.exe 的程序,然后用 cmd 運行,參數用 -z,這個參數是將那些被寫入過數據的區塊標記為零,并且是針對虛擬機使用,在物理機上這個參數無效。格式如:sdelete.exe -z c:,運行過程比較慢,耐心等待,期間在操作系統中會看見你的磁盤會被占滿,等運行完成后又會回到正常的容量。
命令運行完成后,用 SSH 連接到 ESXi 主機上進到需要回收空間的.vmdk 目錄下,運行 vmkfstools 工具,參數用 -K(因為 ESXi 主機是 Linux 的底層 OS 所以注意大小寫),如 vmkfstools -K VirtualMachine.vmdk,然后等運行完成后就能夠成功回收膨脹的 Thin Provision 空間了。
該方法僅限于 Windows 系統,Linux 和其他非 NTFS 文件系統目前我還沒找到回收的方法。
附上測試圖一張(回收空間之前我的 vCenter Server.vmdk 的占用空間是 96.0GB):
以上是“虛擬磁盤工具 vmkfstools 怎么用”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注丸趣 TV 行業資訊頻道!