vmware修改虛擬機名稱


原虛擬機名稱為:OLD_VMNAME
需要修改成:NEW_VMNAME

vmware創建虛擬機時,會以虛擬機名稱存儲對應的磁盤和配置文件。如果只在vcenter界面上修改虛擬機名稱存儲端名稱是不會修改的(只會修改.vmx文件中的displayName),這樣對以后的運維留下隱患。可通過以下方式將存儲端修改成對應的名稱。


一、虛擬機關機,並從清單移除


二、修改虛擬機目錄名稱
ssh 登錄宿主機,進入虛擬機所在的存儲目錄
mv OLD_VMNAME/ NEW_VMNAME
cd NEW_VMNAME


三、修改文件夾下的所有虛擬機相關的文件名稱
mv OLD_VMNAME.vmx NEW_VMNAME.vmx
mv OLD_VMNAME.vmdk NEW_VMNAME.vmdk
mv OLD_VMNAME-flat.vmdk NEW_VMNAME-flat.vmdk
...


四、修改虛擬機配置文件(xxx.vmx)
sed -i 's#OLD_VMNAME#NEW_VMNAME#g' NEW_VMNAME.vmx

五、修改磁盤配置文件
磁盤相關的文件是以.vmdk結尾,大致有以下幾類

 

5.1 修改系統盤配置文件
sed -i 's#OLD_VMNAME#NEW_VMNAME#g' NEW_VMNAME.vmdk

#如果有快照則同樣需要修改快照的配置(名稱一般為VM_NAME-00000N.vmdk)
sed -i 's#OLD_VMNAME#NEW_VMNAME#g' NEW_VMNAME-000002.vmdk
sed -i 's#OLD_VMNAME#NEW_VMNAME#g' NEW_VMNAME-000003.vmdk
...
sed -i 's#OLD_VMNAME#NEW_VMNAME#g' NEW_VMNAME-00000N.vmdk


5.2 修改數據盤配置文件(如果無數據盤,此步驟可忽略)
sed -i 's#OLD_VMNAME_N#NEW_VMNAME_N#g' NEW_VMNAME_M.vmdk

#如果數據盤有快照則同樣需要修改快照的配置(名稱一般為VM_NAME_M-00000N.vmdk)
sed -i 's#OLD_VMNAME#NEW_VMNAME#g' NEW_VMNAME-000002.vmdk
sed -i 's#OLD_VMNAME#NEW_VMNAME#g' NEW_VMNAME-000003.vmdk
...
sed -i 's#OLD_VMNAME#NEW_VMNAME#g' NEW_VMNAME-00000N.vmdk


六、修改快照配置文件
VMNAME.vmsd為所有快照的概要信息,記錄了快照的目錄結構,如下:

VMNAME-SnapshotN.vmsn為每個快照詳細信息(N代表第幾個快照)。

6.1 修改vmsd配置文件
sed -i 's#OLD_VMNAME#NEW_VMNAME#g' NEW_VMNAME.vmsd

6.2 修改.vmsn配置文件
sed -i 's#OLD_VMNAME#NEW_VMNAME#g' NEW_VMNAME-Snapshot1.vmsn
sed -i 's#OLD_VMNAME#NEW_VMNAME#g' NEW_VMNAME-Snapshot3.vmsn
...
sed -i 's#OLD_VMNAME#NEW_VMNAME#g' NEW_VMNAME-SnapshotN.vmsn


注:對於有快照的虛擬機以上步驟在VSPHERE6.5的環境操后,在切換快照時任務里提示“無法訪問文件 snapshot”,查看日志(/storage/log/vmware/vpxd/vpxd.log)報如下錯誤:
-----------------------------------------------------------------------------------------------------------------------------------------------------
VpxLRO] -- ERROR task-10169 -- vm-439 -- vim.VirtualMachine.revertToCurrentSnapshot: vim.fault.CannotAccessFile:
--> Result:
--> (vim.fault.CannotAccessFile) {
--> faultCause = (vmodl.MethodFault) null,
--> faultMessage = (vmodl.LocalizableMessage) [
--> (vmodl.LocalizableMessage) {
--> key = "msg.snapshot.vigor.revert.error",
--> arg = (vmodl.KeyAnyValue) [
--> (vmodl.KeyAnyValue) {
--> key = "1",
--> value = "msg.snapshot.error-DUMPER"
--> }
--> ],
--> message = "An error occurred while reverting to a snapshot: Unable to open the snapshot file."
--> }
--> ],
--> file = "snapshot"
--> msg = "Unable to access file snapshot"
-------------------------------------------------------------------------------------------------------------------------------------------------------

由於xxx-SnapshotX.vmsn文件中有部分是亂碼,不清楚具體是什么內容,推測和亂碼內容有關。

解決方法:
1. 創建新的快照;
2. 利用新快照文件(.vmsn)替換原有的快照文件(cp new.vmsn old.vmsn);(替換去需要記錄scsi0:0.fileName信息)
3. 替換完成后,修改快照點的parent磁盤;
scsi0:0.fileName = "VMNAME-00000X.vmdk"


順便說下快照恢復的過程:
1. 當恢復某個快照時,vmware首先會讀取該快照配置文件(VMNAME-SnapshotN.vmsn)中scsi0:0.fileName(disk1)
2. vmware會修改虛擬機配置文件(VMNAME.vmx),生成新的磁盤disk2,磁盤名稱為VMNAME-00000N.vmdk,並修改相應的配置(scsi0:0.fileName = "VMNAME-00000N.vmdk")

disk2的parent磁盤為disk1(通過disk2磁盤描述文件可以查看),新的數據會落在disk2上。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM