【長篇教學】在ESX中把玩VM的虛擬硬碟

如果你沒有使用vCenter而只是單台的ESX,能使用的功能就少很多,首先就是虛擬機的複製。在單台的ESX中,並沒有vCenter中的Clone功能,因此要複製虛擬機就得靠使用SSH登入至ESX主機的指令來完成。在ESX下有很多好用的指令幫助我們完成VMDK硬碟檔案的處理,其中最常用的就是vmkfstools。這個指令主要就是彌補vSphere Client中對VMDk硬碟檔處理的不足,是ESX使用者第一個要學習的點指令,我們在今天的例子就來看看如何複製一個VMDK檔案。
要能使用點指令,嘉許當然不建議到ESX的主機旁邊做,但我們首先要先開啟ESX上的SSH。然後使用一個好用的SSH Client端來存取即可。今天的教學對老鳥來說應該是很熟悉了,我們就來看看操作VMDK檔案的幾個步驟。
1、開放並啟用ESX的SSH
2、使用好用的SSH客戶端(本例使用PuTTY)連入ESX
3、了解ESX下VM存放的位置
4、了解VM硬碟VMDK檔案的分配
5、操作ESX中VM的VMDK檔案
開放並啟用ESX的SSH
這必須先到ESX的主機上操作了。如果你有KVM over IP也不需要去ESX旁,但如果沒有的話,就到機房接個滑鼠鍵盤螢幕操作一下吧。
1、接上鍵盤滑鼠螢幕,如果是PS/2的鍵盤滑鼠,ESX可能需要重新開機,最好用USB的鍵盤滑鼠。目前都是用HUB,一個USB上就有鍵盤滑鼠。

2、在ESX的登入畫面,按下ALT-F1

3、輸入帳號密碼,這邊以root為例。

4、登入後,輸入「vi /etc/sshd/sshd_config」,這是用來更改ESX下SSH啟動的地方。

5、進入vi之後,找到「PermitRootLogin no」的地方,把「no」改成「yes」,並且存檔離開vi。

6、輸入「service sshd restartt」重新啟動SSH功能即可。

使用SSH客戶端(本例使用PuTTY)連入ESX
在Windows下好用的SSH客戶端很多,但最多人用又免費的就 PuTTY了。大家可以來這邊下載PuTTY。下載之後直接使用,方法十分簡單。
1、輸入ESX的IP,按下Open即可。如果你想將這個常用的ESX的SSH存下來,輸入名稱,並且按下Save即可。

2、接下來就會進入登入畫面,輸入帳號密碼即進入ESX。

了解ESX下VM存放的位置
在ESX下,Datastore也是掛載在ESX console OS的目錄結構之下的。不管是哪一種儲存設備,在ESX下都可以使用Linux的指令來存取,如ls,mv, 等等。一般來說,ESX的Datastore都是放在「/vmfs/volumes」之下,ESX會將所有的Datastore建立一個設備號碼,並且用Linux下連結檔的方式來對應到真正Datastore的名字上。我們就先來看看。
1、進入ESX之後,可以在「/vmfs/volumes」看到兩個Datastore。

2、對應到vSphere Client下的Datastore。
3、進入Storage1,可以看到其下的目錄。

4、這是對應到Storage1下面的目錄分佈,這邊可以看到完整包含一個VM的目錄,以及分散的VMDK檔案。

了解VM硬碟VMDK檔案的分配
如果我們使用VMDK模式幫VM配置硬碟,不管是什麼型態的硬碟,都會存放在一組VMDK檔案中。在ESX的Console下,是由多個VMDK組成的,視其檔名不同而有不同的意義,一般來說會有三種,並且和你從vSphere Client下看到的不一樣。下面就是說明。
1、XXXX-flat.vmdk:這是真正存放檔案內容的地方,當建立VMDK時,所有的資料都會存放在這個檔案中。這個檔案有一小部分是處理VM虛擬機的處理資料。這個檔案在Console下顯示的大小和你建立VMDK的大小相等,不管你有沒有用Thin Provisioning功能,但實際並沒有佔用這麼大。

2、XXXX.vmdk:在新版的ESX4中,這個檔案不再是真正存放資料的地方了。在ESX4中,VMDK檔案變成一個VMDK描述檔,其中記錄了flat.vmdk的大小及資料存放結構。VMDK是一個純文字檔,除了記錄前面flat.vmdk的檔名之外,也記錄了這個VMDK檔案的模式,如Thin Provisioned,SCSI的介面卡型號,磁柱、磁頭、磁軌等等。我們可以用vi直接開啟這個檔案來查看。

3、XXXX-delta.vmdk:一般來說這是快照的REDO Log檔案,這是一個二元檔,當你建立了Snapshot時,就會建立這個檔案。建立快照之後,所有存入VMDK檔案的動作都會轉移到這個檔案上來,保持VMDK的不變。一開始這個檔案一定很小,但當你一直使用VM之後,就會越來越大。這個檔案是寫入VMDK的位元對應檔,是Bit by Bit記錄的,因此大小不可能超過VMDK。當建立一個Snapshot時就會建立一個-delta.vmdk檔案,刪除快照或還原回去時就會自動刪除。

操作ESX中VM的VMDK檔案
在ESX指命下操作VMDK檔案就是用vmkfstools這個工具。vmkfstools功能強大到所有和VMDK檔案有關的事情都可以處理。也可以處理vmfs3的檔案系統,但在本例中我們不介紹能用vSphere Client能處理的動作,而是看看大家最想知道的VMDK檔案複製要怎麼做,也順便舉幾個常用的實例。

這邊特別要說明的是,使用者對VM硬碟的操作指令時,都要以.vmdk檔案為主,而不是flat.vmdk,讀者們不要以為flat.vmdk是真正存放的地方而去操作,是無法成功的,vmkfstools是針對.vmdk這個描述檔的
實例一:複製一個VMDK檔案
指令:vmkfstools -i [來源檔案] -d [檔案格式] [目的檔案]
範例:vmkfstools -i /vmfs/volumes/Storage1/2003/2003.vmdk -d thin /vmfs/volumes/Storage1/2003c/2003c.vmdk
指令說明:
上面的指令使用「-i」來進行虛擬機VMDK的複製,來源是「/vmfs/volumes/Storage1/2003/2003.vmdk」,目的是「/vmfs/volumes/Storage1/2003c/2003c.vmdk」,特別要注意的是其檔案格式為「thin」,表示這個轉換出來的檔案是「Thin Provisioning」的,也就是檔案的大小會隨著使用而成長,而非一次就固定大小。這個功能是在vSphere Client中無法達成的。

實例二:讓VMDK變大
指令:vmkfstools -X [來源檔案] [新的大小]
範例:vmkfstools -X /vmfs/volumes/Storage1/2003/2003.vmdk 20G
指令說明:
上面的指令使用「-X」來進行虛擬機VMDK的增大成20GB,特別要注意的是增大後,原來的分割區大小會不變,但會多一些未配置空間,因此你還是要用磁碟工具將分割區重新改變大小。舉例來說,原來是10G的大小,只有一個C分割區,在變大之後,還是一個C,10G,但後面會多出一個10G的未配置空間。這個功能在vSphere Client也是可以改變的。

要特別注意的是,如果你已經有Snapshot,千萬不要用這個指令改變大小,如果改變了,這個VMDK就無法開機了,內部的資料會全部消失!

實例三:將Thin Provisioned的硬碟放大回Thick型態
指令:vmkfstools -j [來源檔案]
範例:vmkfstools -j /vmfs/volumes/Storage1/2003/2003.vmdk
指令說明:
當我們使用Thin Provisioning來規劃硬碟時,也許有時因為效能的問題而需要將這個硬碟轉換成真實對應而非自動增長大小的型態,此時可以用「-j」指令還原,這在vSphere Client中也做不到的。


老師
想問您
在您說明1.XXXX-flat.vmdk:這是真正存放檔案內容的地方
後來又說明
讀者們不要以為flat.vmdk是真正存放的地方而去操作
我有點搞不清楚
到底實際的東西是放在.vmdk還是flat.vmdk?
對不起,寫的不明白
已經修改好。所有vmkfstools的指令操作是以vmdk為主的,但實際的資料存放還是在flat.vmdk,謝謝你的指正。
所以說如果只有一台ESX..
要備份裡面安裝的VM..
就可以用這方法備份出來囉…
例如我想要重灌ESX..
可以先用這方法備份出來..
然後裝好再到回去…
就跟原本的一樣囉??
是這樣嗎??
謝謝..
您好,
重灌ESX時,可以保留原來的Datastore,要備份也可以Browser Datastore下載到本機,但用這些指令可以複製VMDK,這是ESX單台無法做到的啊,呵呵。
老師
我想問vmkfstools -i [來源檔案] -d [檔案格式] [目的檔案]
其中目的檔案,我可以複製到其他的nas或pc 的硬碟上嗎?
您好,
只要這個nas有掛上這台執行vmkfstools的Datastore,就可以在/vmfs/volumes下找到,當然可以複製過去,但PC只能利用WinSCP或是vSphere中的Storage Browser來傳了。
可是我用winscp傳iso檔時,時常都會斷線?
和同網路上其它非ESX的電腦傳也會斷嗎?
應該說沒有傳送這麼大的檔案
所以沒斷過
您好,最近遇到一個問題,
想請問一個題外話,
就是我的server裝了esx4,server上有一張intel PCIe的網卡,
可是裝完後發現onboard的網路介面有抓到,但那張PCIe的沒抓到,
查了一下官網是有支援那張intel網卡的,
而且在安裝過程中他也沒有抓到intel網卡,
那這樣esx裝完後有辦法再安裝驅動嗎?
謝謝。
@銘
你如果有在官網上有看到有支援的話,你可以下載它的最新driver tools來
驅動這一張intel的網卡。
不知intel網卡的型號為何的呢?
您好,
您的問題我不太了解,是問我使用的intel網卡型號嗎?
Intel PRO/1000MT Server Dual Port
嗯,就是說我的server上有一張網卡沒抓到,
不過官方網站上是說有支援,不過裝完以後卻沒看到這張網卡,
只抓到onboard的,
我先去官網抓driver來試試看好了,
謝謝各位的回答。
為什麼我用WinSCP上傳的速率怎麼慢= =
我區域網路是1G,現在不到1000kb/s 上下怎麼慢
是那一個問題= =
網路上其它機器互傳的速度呢?
@嘉許
若不用 WinSCP 傳輸,用FTP實機互傳,速率是正常
但換用 WinSCP 連到 ESX裡互傳,就更慢了…不到6~9Mb/s
試試這個指令的速度如何:
進入ESX的Console,
1、開放防火牆
輸入「esxcfg-firewall –allowOutgoing」
2、開始下載
輸入「lwp-download http://xxx.xxx.xxx/aaaaa.iso」等等
3、關回防火牆
輸入「esxcfg-firewall –blockOutgoing」
緊急問一下
現在有一台舊 guest os 把 D: vmdk 卸載下來
要 mount 到新的 guest os 上
卻出問題
固態硬碟無法掛起來… XD
您好,抱歉回的晚。
是RDM模式嗎?如果是VMDK,用拷貝的就行。是Workstation還是ESX?
1、XXXX-flat.vmdk:這是真正存放檔案內容的地方,…….,但實際並沒有佔用這麼大。
那他真實有幾大呢? 如何找出來??
您好,
其實在vCenter中的Datastore Browser中,就可以看到一個虛擬機的vmdk總共佔了多大。舉例來說,嘉許建立了一個VM 2003,給的是20GB,但用thin provisioning,在Datastore browser中看就是3GB,就是目前真正佔的容量大小。
您好
我最近剛好碰到硬碟效能問題,我在vm(ESX)上裝了centos5.5(64/32bit 都試過,guest os 是選red hat5),dd自己本機磁硬時卻只能跑到20幾MB/s,請問我該怎麼設定呢?
機器hp DL580 G5
本機磁碟 hp smart array p400做raid5(SAS)
設定virtual machine時,用create new virtual disk分了100G來用
SCSI controller是用LSI logic parallel
您好,
20MB還算正常,如果你覺得慢,停用thin provisioning,直接用thick試試,謝謝。
請問我現在ESXi 4.0 中有個VM
VM裡的Windows HD容量當切切的太大…
現在想往下縮小容量
我該如何設定呢
您好,
不知道您這個Windows HD是如何切的,是Thick Provision嗎?如果要將VMDK變小,有些複雜動作,您可以參考下面的網址:
http://blog.tpv.dk/?p=3
如果還有問題,可以上來再看看怎麼做,謝謝。
前輩您好~ 請教一個有關Thin Provision的問題.
Host OS不論是esx/esxi 4/4.1 建立虛擬機時, HDD部分有勾選了Thin Provisioning
當系統安裝完畢Vmware tools裡的Shrink都會顯示
Shrink disk is disabled for this virtual machine. Shrinking is disabled for virtual disks not used in persistent mode and other factors. For more information see the documentation for your VMware product.
Guest OS有試過試過2003, 2008/R2, win7 不知您有遇過這個問題嗎?
Thanks~
請問要如何更改 ip的設定
因為我在灌VM時 沒有更改IP
預設是127.0.0.1
要怎樣在文字介面更改IP????
您好,
是安裝啥產品,沒說清楚,猜不出來啊。
據我所知.. 是不是要先Defragment…
@neo
嘉許:您好
想請教您一個問題,如果使用WINSCP下載VM Files,如果一個VM 80GB(實際上沒有那麼大),結果下載的時候還是80GB,可以下載的時候只下載實際的大小,移到另外一部ESXi也可以正常開啟,thanks
嘉許大大 您好
有個空間擴充的問題請教
原本我作RAID 0(146GBx2),Capacity為131GB,安裝ESXI4上線沒問題
今天擴充硬碟(146GBx5),將RAID 0轉為RAID 5,Capacity變為543GB
但是重新開機後,通過 vSphere Client 無法作 Increase Datastore 的動作(Increase按鈕可以按,但是找不到設備)
參考了原廠資料,依說明操作了,結果還是看不到…
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1017662
請問是否有其他解決方案?
老师 你好
我有一个问题
我现在 有一个需求 要在 esx中 虚拟一个ide的硬盘
可esx中 好像不通虚拟ide的硬盘
这个 有没有办法 解决呀
老師:
請問若只有 XXXX-flat.vmdk 檔案. 但沒有 XXXX.vmdk. 有辦法使用嗎??
我是 esxi 4.1
您好,
應該是不行,因為需要完整的各個檔案,謝謝。
老師:
請問我安裝ESX以後,HDD space是270GB,datastore為1MB block size, capacity 是256GB,裡面有一個esxconsole-40XXXXXX.vmdk, 大小為242GB,結果esx都無法增加vm guest, 請問要如何解決這個問題阿?
你好,ESXi5 有vmkfstools吗,谢谢
有的,謝謝。