别说爱就一个字,你数数你说过几次; 别说程序员好干,你看看你年薪几万!~ 别说你爱的太真,伤的却太深——只要真心的投入就无悔、无怨恨 别说失去的太多,那是不懂得收获;别说爱了又错过,那是你没有去收获住那么硕果!~ 请真心你现在所拥有的一切——守侯住属于你的爱情!FOR ever

VMware 虚拟机——解决VMware快照故障的方法

上一篇 / 下一篇  2008-07-23 08:51:30 / 个人分类:报子箱!~

查看( 215 ) / 评论( 0 )
虚拟化管理员能在VMware ESX上使用快照回到以前的状态及找出虚拟机哪里出错。在这一系列文章的第一次部分中,我们讨论了怎么使用VMware快照。在第二部分中,解释了在不浪费磁盘空间的情况下如何删除快照。不过,当快照出现故障时该如何解决呢?在本文中,TechTarget中国的特约虚拟化专家Eric Siebert将解决在ESX上使用快照时潜在的问题
'Mr/tfaL1]0
(N oQ D&G8s0定位有快照的虚拟机IXPUB技术博客(C,U ]!xu`2O^uk

w(n!R&PT4DNk0尝试找出哪台虚拟机有快照是个挑战。在VMware Infrastructure Client或VirtualCenter里没有一个集中的办法找到快照,因此,你应该定期地检查ESX服务器,找到那些需要删除的旧快照。下面有一些方法
Yp7J*Uj.l`"v9Ij0IXPUB技术博客)P6{ A-l?Q
方法1——使用服务器控制台的Find命令IXPUB技术博客-UE Z8kM qJ:F+\
IXPUB技术博客!f}7y[O,D3In\R
1.登录服务器控制台。
"| Pw&h+I/d0PP;F02.更改/vmfs/volumes/目录。IXPUB技术博客2T;|c!OCS
3.键入find -iname "*-delta.vmdk" -mtime +7 -ls找到在7天之内未被修改的快照文件或键入find -iname "*-delta.vmdk"找到所有的快照文件。IXPUB技术博客E Ni\8l(Lop~1jF
IXPUB技术博客-\:ir8uW\9Gei
方法2——使用Dominic Rivera的叫做Snapalert的免费脚本。这个脚本使用VI Perl工具包直接与VirtualCenter对话,并确保不需要在每台主机上安装任何组件(也适用于ESXi)。也可以选择让脚本产生一个Email报告。
%@EjB7zJ0
tkowZ5H d0方法3——使用来自Xtravirt的叫做Snaphunter的免费工具,它能从多个ESX Servers报告虚拟机的快照状态,也能发送Email报告。
)s%B$F{j0w0
)jC-_ jos6h"q0方法4——查询VirtualCenter SQL数据库。VirtualCenter一直在它的VPX_SNAPSHOT表中追踪每台主机上的所有快照。我曾经写了一个需要这个表的VBS脚本以显示运行快照的虚拟机列表。这个方法不错。不过它依赖数据库表,这可能在未来的VirtualCenter版本里有改变。
i7Q;]Y5N4NDL0^0
r-]xb8~e&|b1p0处理未正确删除的快照
+g$D9H}~'w({0IXPUB技术博客]:L#m|%vPIZ*Y
偶尔,一个快照未被正确删除,在虚拟机里仍然是活动的快照。当使用VMware Consolidated Backup或通过Snapshot Manager删除快照时,这种事情会发生。多数情况下,快照不会出现在Snapshot Manager让你删除。快照仍然存在的迹象显示在虚拟机目录的delta文件里。
s;_o7P7B'vh0
5|4E_ [l6c$^)kj0如果你有一个没在Snapshot Manager里的运行着的快照,你可以尝试用一两个方法删除它。第一种方法,使用VI Client创建一个新快照,然后删除所有来自Snapshot Manager的快照。或者登录到ESX Service控制台,切换到虚拟机总目录,键入vmware-cmd createsnapshot创建一个新快照。等待创建并键入vmware-cmd removesnapshots。完成后,查看delta文件是否已删除。如果已删除,那么就成功完成删除了。IXPUB技术博客7N&b'S/k*d&p2c

8kv+Zb z(b0如果这个delta文件没被删除,检查虚拟机vmx文件,如果这台虚拟机仅配置了一个虚拟磁盘并找到由SCSI开始的行,它通常是scsi0:0。.fileName应该使用的是与虚拟机一起创建的原始磁盘文件名,通常与虚拟机名一样。如果是这样,那么你的虚拟机没有使用快照文件。如果文件名里有-00000#表示目前在使用一个快照文件。
o7q!Zq)I)jE&^0
*I/X+r5m M&Wezs0下面这个例子能清楚说明这个道理:IXPUB技术博客 GXr9J&T~
VM with no snapshots: scsi0:0.present = "true" scsi0:0.fileName = "myvmname.vmdk" VM with snapshots: scsi0:0.present = "true" scsi0:0.fileName = "myvmname-000001.vmdk" 。
t8B0w_RL e7M0IXPUB技术博客'r#?/e,\Z8X@ as h3]
如果上面的操作失败了,你只能选择复制虚拟机或复制虚拟机磁盘文件。可以使用VMware Converter创建一个现有虚拟机的副本,当创建完成,关闭并删除旧虚拟机。IXPUB技术博客M#k8G3H*Om\(hN P
IXPUB技术博客$q }y9d$Hxc!T
另一个方法是关闭虚拟机,登录服务器控制台,切换到虚拟机目录,通过使用vmkfstools和指定快照文件作为资源磁盘来复制虚拟机磁盘文件,例如,"vmkfstools –i myvmname-000001.vmdk myvmnamenew.vmdk" ,一旦完成了这个设定,移除硬盘(不是删除)、添加新硬盘及浏览器到最新创建的磁盘文件。启动虚拟机,在你删除旧磁盘和delta文件之前,每样事都在工作。IXPUB技术博客y;L;Hh7vzbh-Ua

M |`SX0更改快照文件位置
x e6g v6i0
B DVAu"q;rh0默认状态下,快照被写入每台虚拟机的主目录里。有时你需要改变它的位置,不占用属于虚拟机的卷上的空间。为每台虚拟机上的快照指定一个新的目录是可能的。当你这么做后,快照和vswp文件都被写入到这个目录里。IXPUB技术博客k0[ _Ef
IXPUB技术博客S%{MIU;YC i
不过要注意,如果你的虚拟机在共享存储上,你指定本地存储作为地址将不能使用像VMotion/HA/DRS这样的功能。更改方法步骤如下:
8kF)a m)k"E|Qr0IXPUB技术博客4?.y@6V+?gX I+u
1.关闭虚拟机,登录到服务器控制台。
5KG`&q6`b*f@0v3b02.使用Nano或Vi编辑虚拟机VMX文件。
E viz+J7P8q r8r8c.j03.使用下面的语句新添一行:workingDir = "/vmfs/volumes/SnapVolume/Snapshots/" 。IXPUB技术博客 NgVCjIxAbYq
4.如果你想使vswp文件留在虚拟机目录里,添加下面的到VMX文件:sched.swap.dir = "/vmfs/volumes/VM-Volume1/MyVM/"。这步是可选的。此外,你不需要担心更新现有的“sched.swap.derivedName”参数,因为它由虚拟机生成,每次虚拟机开启时,就被写入config文件。IXPUB技术博客uv-AnB1?d Coy"G
5.启动虚拟机,vswp、vmsn以及快照(delta-vmdk)文件现在位于这个目录里。IXPUB技术博客o_/uAU)s(v{ [6l
IXPUB技术博客IU"^1?E ^pG
和快照一起使用VMotion
&D%JdQcWA9}a0IXPUB技术博客9X |,AYc ]
如果你要从一台主机移动一台运行快照的虚拟机到另一台主机,你将收到下面的警告:“在目的主机恢复到快照可能产生错误(警告)”。如果你更改了虚拟机任何文件的默认位置(像上面提到的快照或vswp文件),就会出现这个警告,当迁移完成时,这台虚拟机将崩溃。如果目的主机不能访问在资源主机上的文件里的存储,这种情况会发生。IXPUB技术博客4Kf@;ty
IXPUB技术博客l]\(h3@
因此,如果虚拟机在共享存储上并被配置,快照文件是在本地存储上,那么,如果你移动虚拟机到另一台主机,将会有问题。如果虚拟机所有文件都在共享存储上,并且在所有ESX主机上可访问,那么虚拟机就是正常工作的。VMware建议在移动虚拟机之前,委托(commit)所有的快照。不过如果你不这样做,也能工作。

TAG:

我来说两句

(可选)

Open Toolbar