1、 虛擬磁盤類型
node
厚置備延遲置零 //默認選項
建立過程當中爲虛擬磁盤分配所需空間。建立時不會擦除物理設備上保留的任何數據,可是之後從虛擬機首次執行寫操做時會按須要將其置零
2.厚置備置零
建立支持羣集功能的厚磁盤。在建立時爲虛擬磁盤分配所需的空間。建立中會將物理設備上保留數據置零。建立所需的時間可能會比建立其餘類型的磁盤長。
3.精簡置備
使用該磁盤最初所須要的數據存儲空間。若是之後精簡磁盤須要更多空間,則它能夠增加到爲其分配的最大容量。
2、 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-partitionios
問題補充:windows
給虛機VM1精簡配置了1TB空間,通過長期的運行,如今在VM1的windows系統裏看到數據只有200GB左右,可是vmdk文件已有1TB。我以爲,造成的緣由是精簡配置只增加不收縮。安全
解決:ssh
經過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):ide