由於在發怖文章的部份 還是有限制程式碼
所以就將此篇文章分為上中下三部份
(VMesxi 備份篇-Day20) VMware vSphere(ESXi) 虛擬硬碟工具 - vmkfstools(中)
(VMesxi 備份篇-Day20) VMware vSphere(ESXi) 虛擬硬碟工具 - vmkfstools(下)
什麼是 vmkfstools ?
vmkfstools 在VMware vSphere(ESXi) Server 中是一個很好用的文件系統管理工具。可用來創建虛擬硬碟、轉換虛擬硬碟格式。或是針對file systems (VMFS)、logical volumes、和 physical storage devices來作相關的操作。只要和VMDK檔案有關的都能處理。
目錄 : (一般比較常用到的設定)
參數說明
虛擬機設定檔說明
實作範例
上一篇 (VMesxi 備份篇-Day19) VMware vSphere(ESXi) 虛擬硬碟格式介紹
下一篇 (VMesxi 備份篇-Day21) VMware ESXi 備份 ghettoVCB.sh 基本設定
VMware vSphere Hypervisor (ESXi) 30天基礎速成班(文章彙整)
文章同步 FAQ BOOK
參數說明
以下針對幾個比較常用到的參數來說明一下
~ # 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,在這裡面就會看到所有安裝的虛擬機。每個資料夾就是一台虛擬機。
~ # cd /vmfs/volumes/datastore1/
~ # ls
VM1 proftpd2 windows2008
Linux proftpd windows 8
2. 設定檔說明
這次要設定的是VM1這台虛擬機,所以就進入VM1的資料夾來查看設定。
在這邊看到 vmdk 會有兩隻檔案,xxx-flat.vmdk和xxx.vmdk。整個虛擬機也就是主要靠這兩隻檔案在設定
~ # 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這隻檔案。
~ # 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
指令說明
~ # 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.1 由硬碟格式 Thick 轉換為 Thin
~ # 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 (動態大小)的硬碟格式
~ # 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
修改檔名
由於原本虛擬機設定就是抓取 VM1.vmdk 和 VM1-flat.vmdk 這兩個檔案,因此要修改一下檔名。
3.1 修改原本 Thick 格式的 VM1.vmdk 和 VM1-flat.vmdk 檔案名稱
~ # 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 檔案名稱
~ # 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
修改設定檔
編輯 VM1.vmdk ,確定是使用 VM1-flat.vmdk 為硬碟
請將 Extent description 的設定修改為對應的檔案名稱
~ # vi /vmfs/volumes/datastore1/VM1/VM1-thin.vmdk
RW 10485760 VMFS "VM1-thin-flat.vmdk"
RW 10485760 VMFS "VM1-flat.vmdk"
最後在開啟虛擬機測試,看是否有問題。沒問題的話就可自行決定是否還要保留舊的檔案
上一篇 (VMesxi 備份篇-Day19) VMware vSphere(ESXi) 虛擬硬碟格式介紹
下一篇 (VMesxi 備份篇-Day21) VMware ESXi 備份 ghettoVCB.sh 基本設定
VMware vSphere Hypervisor (ESXi) 30天基礎速成班(文章彙整)
一次有三張沙發可以坐耶
不知道是不是我發文的操作錯誤
只要文章內容有程式碼的部份過多
就會出現同樣內容或是亂數
所以只好拆成三篇.....
4
修改設定檔
編輯 VM1.vmdk ,確定是使用 VM1-flat.vmdk 為硬碟
請將 Extent description 的設定修改為對應的檔案名稱
~ # vi /vmfs/volumes/datastore1/VM1/VM1-thin.vmdk
上面 " ~# ...... " 應該是
~ # vi /vmfs/volumes/datastore1/VM1/VM1.vmdk
對吧!?因為在步驟3.2 已改檔名!