什麼是 vmkfstools ?
vmkfstools 在VMware vSphere(ESXi) Server 中是一個很好用的文件系統管理工具。可用來創建虛擬硬碟、轉換虛擬硬碟格式。或是針對file systems (VMFS)、logical volumes、和 physical storage devices來作相關的操作。只要和VMDK檔案有關的都能處理。
目錄 : (一般比較常用到的設定)
參數說明
虛擬機設定檔說明
實作範例
1. 虛擬硬碟格式轉換
(1) Thick 轉換成 Thin
(2) Thin 轉換成 Thick Provision Eager Zeroed (eager zeroed thick) 初始化歸零
(3) Thin 轉換成Thick Provision Lazy Zeroed (zeroed thick) 不會初始化歸零
2. 清除虛擬硬碟所有數據
3. 增加虛擬硬跌(vmdk)大小
4. 創建一個虛擬硬碟
5. 刪儲虛擬硬跌(vmdk)
6. 虛擬硬碟重新命名
7. 查詢虛擬硬碟的訊息 (柱面、磁頭和扇區)
參數說明
以下針對幾個比較常用到的參數來說明一下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
~ # vmkfstools OPTIONS FOR FILE SYSTEMS: vmkfstools -C --createfs [vmfs3|vmfs5] -b --blocksize #[mMkK] (設定文件大小,預設的為1MB,可設定的為1MB、2MB、4MB和8MB) -S --setfsname fsName (設定VMFS的標簽,此選項只能和-C一起使用,標簽最大為128字元,頭尾不能有空格) -Z --spanfs span-partition -G --growfs grown-partition deviceName -P --queryfs -h --humanreadable -T --upgradevmfs vmfsPath OPTIONS FOR VIRTUAL DISKS: vmkfstools -c --createvirtualdisk #[gGmMkK] -d --diskformat [zeroedthick| 硬碟格式 thin| eagerzeroedthick] -a --adaptertype [buslogic|lsilogic|ide| lsisas|pvscsi] -w --writezeros (虛擬硬碟歸0,會將原硬碟內資料清除) -j --inflatedisk (使thin disk增加到最大值 轉換為會初始化歸零的Thick 虛擬硬碟.原來的資料會受到保護) -k --eagerzero (轉換為不會初始化歸零的Thick虛擬硬碟) -K --punchzero -U --deletevirtualdisk (刪除指定的虛擬硬碟或相關文件) -E --renamevirtualdisk srcDisk (重新命名虛擬硬碟) -i --clonevirtualdisk srcDisk (建立或複製虛擬硬碟) -d --diskformat [zeroedthick| 硬碟格式 thin| eagerzeroedthick| rdm:<device>|rdmp:<device>| 2gbsparse] -X --extendvirtualdisk #[gGmMkK] (擴展虛擬硬碟VMFS的大小) [-d --diskformat eagerzeroedthick] -M --migratevirtualdisk (搬移虛擬硬碟 可從ESXI5之前的版本轉換過來) -r --createrdm /vmfs/devices/disks/... (創建RDM) -q --queryrdm (查詢RDM 可列出相關資訊) -z --createrdmpassthru /vmfs/devices/disks/... (在VMFS文件系統上影射一個passthrougn raw 硬碟到一個文件.這允許虛擬機器跳過VMKernel SCSI命令過濾沒用的VMFS虛擬硬碟) -v --verbose # -g --geometry (獲取虛擬硬碟相關資料) -x --fix [check|repair] -e --chainConsistent vmfsPath OPTIONS FOR DEVICES: -L --lock [reserve|release|lunreset|targetreset|busreset|readkeys|readresv] /vmfs/devices/disks/... -B --breaklock /vmfs/devices/disks/... vmkfstools -H --help |
實作範例
在開始操作設定之前,要先記得把 VMware vSphere(ESXi) Server 的 SSH 開啟。並且關閉要設定的 VM 虛擬機。
虛擬機設定檔說明
1. VM 虛擬機存放路徑
虛擬機的設定檔,基本上都是存放在datastore1,在這裡面就會看到所有安裝的虛擬機。每個資料夾就是一台虛擬機。
1 2 3 4 |
~ # cd /vmfs/volumes/datastore1/ ~ # ls VM1 proftpd2 windows2008 Linux proftpd windows 8 |
2. 設定檔說明
這次要設定的是VM1這台虛擬機,所以就進入VM1的資料夾來查看設定。
在這邊看到 vmdk 會有兩隻檔案,xxx-flat.vmdk和xxx.vmdk。整個虛擬機也就是主要靠這兩隻檔案在設定
1 2 3 4 5 6 7 8 9 |
~ # cd /vmfs/volumes/datastore1/VM1 ~ # du -sh * 5.0G VM1-flat.vmdk 1.0M VM1.nvram 0 VM1.vmdk 0 VM1.vmsd 8.0K VM1.vmx 0 VM1.vmxf 1.0M vmware.log |
3. xxx.vmdk和xxx-flat.vmdk
xxx.vmdk主要是放一些設定檔,所以整個檔案不會太大。至於實際數據都是放xxx-flat.vmdk。而在 vmkfstools 操作時也都是使用xxx.vmdk這隻檔案。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
~ # cd /vmfs/volumes/datastore1/VM1 ~ # vi /vmfs/volumes/datastore1/VM1/VM1.vmdk # Disk DescriptorFile version=1 encoding="UTF-8" CID=7ed94c44 parentCID=ffffffff isNativeSnapshot="no" createType="vmfs" # Extent description RW 10485760 VMFS "VM1-flat.vmdk" # The Disk Data Base #DDB ddb.adapterType = "lsilogic" ddb.geometry.sectors = "63" ddb.geometry.heads = "255" ddb.geometry.cylinders = "652" ddb.uuid = "60 00 C2 9b 78 99 92 1b-47 9d 4f 86 2e 59 c7 6c" ddb.longContentID = "c7dda467f1eba072d4457dc77ed94c44" ddb.virtualHWVersion = "8" |
虛擬硬碟格式轉換
Thick 轉換成 Thin
1. 指令說明
1 2 3 4 5 6 |
~ # vmkfstools -i [來源vmdk檔案] -d [檔案格式] [目的vmdk檔案] -i : 建立或複製虛擬硬碟 [來源vmdk檔案] : 要轉換的vmdk檔案存放路徑,如 /vmfs/volumes/datastore1/VM1/VM1.vmdk -d [檔案格式] : -d 後面接要轉換的硬碟格式,如thin 或thick [目的vmdk檔案] : 轉換完成後vmdk要存放的路徑。如 /vmfs/volumes/datastore1/VM1/VM1-thin.vmdk |
2. 設定開始
2.1 由硬碟格式 Thick 轉換為 Thin
1 2 3 4 |
~ # vmkfstools -i /vmfs/volumes/datastore1/VM1/VM1.vmdk -d thin /vmfs/volumes/datastore1/VM1/VM1-thin.vmdk Destination disk format: VMFS thin-provisioned Cloning disk '/vmfs/volumes/datastore1/VM1/VM1.vmdk'... Clone: 100% done. |
2.2 轉換完成後會看到,兩個新產生的xxx.vmdk和xxx-flat.vmdk
VM1-thin-flat.vmdk 和 VM1-thin.vmdk 就是新產生的檔,而原本的檔案部份還是存在的。
仔細查看會發現 VM1-flat.vmdk 和 VM1-thin-flat.vmdk 的大小不同了。因為在 VM1-flat.vmdk 使用的是 Thick (固定大小) 的硬碟格式,而 VM1-thin-flat.vmdk 已經變成 Thin (動態大小)的硬碟格式
1 2 3 4 5 6 7 8 9 10 11 |
~ # cd /vmfs/volumes/datastore1/VM1 ~ # du -sh * 5.0G VM1-flat.vmdk 1.6G VM1-thin-flat.vmdk 0 VM1-thin.vmdk 1.0M VM1.nvram 0 VM1.vmdk 0 VM1.vmsd 8.0K VM1.vmx 0 VM1.vmxf 1.0M vmware.log |
3. 修改檔名
由於原本虛擬機設定就是抓取 VM1.vmdk 和 VM1-flat.vmdk 這兩個檔案,因此要修改一下檔名。
3.1 修改原本 Thick 格式的 VM1.vmdk 和 VM1-flat.vmdk 檔案名稱
1 2 3 |
~ # mv /vmfs/volumes/datastore1/VM1/VM1.vmdk /vmfs/volumes/datastore1/VM1/VM1-thick.vmdk ~ # mv /vmfs/volumes/datastore1/VM1/VM1-flat.vmdk /vmfs/volumes/datastore1/VM1/VM1-thick-flat.vmdk |
3.2 再來修改轉換後 Thin格式的 VM1-thin-flat.vmdk 和 VM1-thin.vmdk 檔案名稱
1 2 3 |
~ # mv /vmfs/volumes/datastore1/VM1/VM1-thin.vmdk /vmfs/volumes/datastore1/VM1/VM1.vmdk ~ # mv /vmfs/volumes/datastore1/VM1/VM1-thin-flat.vmdk /vmfs/volumes/datastore1/VM1/VM1-flat.vmdk |
4. 修改設定檔
編輯 VM1.vmdk ,確定是使用 VM1-flat.vmdk 為硬碟
請將 Extent description 的設定修改為對應的檔案名稱
1 2 3 4 5 6 7 8 |
~ # vi /vmfs/volumes/datastore1/VM1/VM1-thin.vmdk # 修改前 # Extent description RW 10485760 VMFS "VM1-thin-flat.vmdk" # 修改後 # Extent description RW 10485760 VMFS "VM1-flat.vmdk" |
最後在開啟虛擬機測試,看是否有問題。沒問題的話就可自行決定是否還要保留舊的檔案
Thin 轉換成 Thick Provision Eager Zeroed (eager zeroed thick) 會初始化歸零
1. 指令說明
兩種指令的下法選一種就行了
1 2 3 4 5 |
~ # vmkfstools -j [來源vmdk檔案] ~ # vmkfstools --inflatedisk [來源vmdk檔案] -j --inflatedisk (使thin disk增加到最大值 轉換為會初始化歸零的Thick 虛擬硬碟.原來的資料會受到保護.) [來源vmdk檔案] : 要轉換的vmdk檔案存放路徑,如 /vmfs/volumes/datastore1/VM1/VM1.vmdk |
2. 開始轉換
1 2 |
~ # vmkfstools --inflatedisk /vmfs/volumes/datastore1/VM1/VM1.vmdk Inflate: 100% done. |
3. 轉換完成
在轉換完成後,查看硬碟大小會發現從原本的1.6G變為5.0G。
1 2 3 4 5 6 7 8 9 |
~ # du -sh /vmfs/volumes/datastore1/VM1 * 5.0G /vmfs/volumes/datastore1/VM1 5.0G VM1-flat.vmdk 1.0M VM1.nvram 0 VM1.vmdk 0 VM1.vmsd 8.0K VM1.vmx 0 VM1.vmxf 1.0M vmware.log |
Thin 轉換成Thick Provision Lazy Zeroed (zeroed thick) 不會初始化歸零
1. 指令說明
兩種指令的下法選一種就行了
1 2 3 4 5 |
~ # vmkfstools -k [來源vmdk檔案] ~ # vmkfstools --eagerzero [來源vmdk檔案] -k --eagerzero (轉換為不會初始化歸零的Thick虛擬硬碟) [來源vmdk檔案] : 要轉換的vmdk檔案路徑和檔案名稱,如 /vmfs/volumes/datastore1/VM1/VM1.vmdk |
2. 開始轉換
1 2 |
~ # vmkfstools --eagerzero /vmfs/volumes/datastore1/VM1/VM1.vmdk Inflate: 100% done. |
3. 轉換完成
在轉換完成後,查看硬碟大小會發現從原本的1.6G變為5.0G。
1 2 3 4 5 6 7 8 9 |
~ # du -sh /vmfs/volumes/datastore1/VM1 * 5.0G /vmfs/volumes/datastore1/VM1 5.0G VM1-flat.vmdk 1.0M VM1.nvram 0 VM1.vmdk 0 VM1.vmsd 8.0K VM1.vmx 0 VM1.vmxf 1.0M vmware.log |
清除虛擬硬碟所有數據
1. 指令說明
兩種指令的下法選一種就行了
1 2 3 4 5 |
~ # vmkfstools -w [來源vmdk檔案] ~ # vmkfstools --writezeros [來源vmdk檔案] -w --writezeros : (虛擬硬碟歸0,會將原硬碟內資料清除) [來源vmdk檔案] : 要轉換的vmdk檔案存放路徑,如 /vmfs/volumes/datastore1/VM1/VM1.vmdk |
2. 開始清除
1 2 |
~ # vmkfstools --writezeros /vmfs/volumes/datastore1/VM1/VM1.vmdk Inflate: 100% done. |
增加虛擬硬跌(vmdk)大小
1. 指令說明
1 2 3 4 5 |
~ # vmkfstools -X [新的大小] [目的vmdk檔案] -X : (擴展虛擬硬碟VMFS的大小) [新的大小] : 看要設定多少大小,單位為 M、G [目的vmdk檔案] : 要設定的vmdk檔案存放路徑,如 /vmfs/volumes/datastore1/VM1/VM1.vmdk |
2. 調整 vmdk 大小
1 2 |
~ # vmkfstools -X 20g /vmfs/volumes/datastore1/VM1/VM1.vmdk Grow: 100% done. |
3. 查看
此時查看 vmdk 的大小,會看到原本5G的VM1.vmdk變為20G了
1 2 3 4 5 6 7 8 9 |
~ # du -sh /vmfs/volumes/datastore1/VM1 * 20.0G /vmfs/volumes/datastore1/VM1 20.0G VM1-flat.vmdk 1.0M VM1.nvram 0 VM1.vmdk 0 VM1.vmsd 8.0K VM1.vmx 0 VM1.vmxf 1.0M vmware.log |
[note] 在這邊要注意一下,vmdk增大後,在server上原分割區的大小是沒有改變的,需要自行在設定修改才會真的有所改變。還有就是如果有使用Snapshot(快照)功能時,請不要使用此指令。要不然vmdk會無法開機,資料也又會不見。
創建一個虛擬硬碟
1. 指令說明
1 2 3 4 5 |
~ # vmkfstools -c [新的虛擬硬碟大小] [目的vmdk檔案] -c : 創建一個虛擬硬碟 [新的虛擬硬碟大小] : 設定此虛擬硬碟的大小,單位 M、G [目的vmdk檔案] : 要設定的vmdk檔案存放路徑,如 /vmfs/volumes/datastore1/VM1/VM1.vmdk |
2. 建立新硬碟
1 2 |
~ # vmkfstools -c 20G /vmfs/volumes/datastore1/VM1/VM2.vmdk Create: 100% done. |
3. 查看
會看到多出一個20G的VM2-flat.vmdk和VM2.vmdk
1 2 3 4 5 6 7 8 9 10 11 |
~ # du -sh /vmfs/volumes/datastore1/VM1 * 40.0G /vmfs/volumes/datastore1/VM1 20.0G VM1-flat.vmdk 1.0M VM1.nvram 0 VM1.vmdk 0 VM1.vmsd 8.0K VM1.vmx 0 VM1.vmxf 20.0G VM2-flat.vmdk 0 VM2.vmdk 1.0M vmware.log |
刪儲虛擬硬跌(vmdk)
1. 指令說明
1 2 3 4 |
~ # vmkfstools -U [目的vmdk檔案] -U : 刪除虛擬硬碟VMFS [目的vmdk檔案] : 要設定的vmdk檔案存放路徑,如 /vmfs/volumes/datastore1/VM1/VM1.vmdk |
2. 調整 vmdk 大小
1 2 |
~ # vmkfstools -U /vmfs/volumes/datastore1/VM1/VM3.vmdk Grow: 100% done. |
虛擬硬碟重新命名
1. 指令說明
1 2 3 4 5 |
~ # vmkfstools -E [原本vmdk檔案] [重新命名vmdk檔案] -E : 重新命名虛擬硬碟 [原本vmdk檔案] : 原本vmdk檔案存放的路徑,如 /vmfs/volumes/datastore1/VM1/VM1.vmdk [重新命名vmdk檔案] : 要重新命名的vmdk檔案存放路徑,如 /vmfs/volumes/datastore1/VM1/VM3.vmdk |
2. 重新命名設定
1 |
~ # vmkfstools -E /vmfs/volumes/datastore1/VM1/VM2.vmdk /vmfs/volumes/datastore1/VM1/VM4.vmdk |
3. 查看
會發現原本VM2.vmdk和VM2-flat.vmdk的檔案名稱,變為VM4.vmdk和VM4-flat.vmdk
1 2 3 4 5 6 7 8 9 10 11 |
~ # du -sh /vmfs/volumes/datastore1/VM1 * 40.0G /vmfs/volumes/datastore1/VM1 20.0G VM1-flat.vmdk 1.0M VM1.nvram 0 VM1.vmdk 0 VM1.vmsd 8.0K VM1.vmx 0 VM1.vmxf 20.0G VM4-flat.vmdk 0 VM4.vmdk 1.0M vmware.log |
查詢虛擬硬碟的訊息 (柱面、磁頭和扇區)
1. 指令說明
1 2 3 4 |
~ # vmkfstools -g [目的vmdk檔案] -g : 獲取虛擬硬碟相關資料 [目的vmdk檔案] : 要查詢的vmdk檔案存放的路徑,如 /vmfs/volumes/datastore1/VM1/VM1.vmdk |
2. 查詢
1 2 |
~ # vmkfstools -g /vmfs/volumes/datastore1/VM1/VM4.vmdk Geometry information C/H/S is 261/255/63 |
評論
此文章尚無評論。