Windows Server 2008 R2 Hyper-V和Windows 8/2012虚拟机的兼容性

楼下组的同事报告了一个问题,他们组发现一些Lab里装有Windows 8的虚拟机运行非常慢,甚至鼠标无法移动,屏幕完全卡住,所有有问题的机器都跑在装有Windows Server 2008 R2 SP1的Hyper-V服务器上。刚开始blchen还不太相信,因为自己在Lab有台DELL 710,上面跑了N台Win8企业版的虚拟机,从去年9月份开发者预览版,到后面升级至beta 8250,RC8400以及正式版9200,至今没遇到任何问题。后来爬文一看,发现Windows 8和Windows Server 2008 R2的Hyper-V确实有兼容性问题,具体表现为

  • WIN8虚拟机停止响应或者响应非常慢。
  • Hyper-V服务器出现自动重启。

幸运的是微软已经发布了一个补丁解决这个问题,详见http://support.microsoft.com/kb/2744129,并且把这个补丁加到自动更新里了。blchen果断下载这个KB2744129补丁,安装在所有受影响的Hyper-V服务器上。果然,同事随后反应虚机响应慢的问题立马消失。

[C#]让String.Contains忽略大小写

在C#里,String.Contains是大小写敏感的,所以如果要在C#里用String.Contains来判断一个string里是否包含一个某个关键字keyword,需要把这个string和这个keyword都转成小写再调用contains,效率较低。

比较好的一个方法是用String.Index()方法,然后通过StringComparison.OrdinalIgnoreCase指定查找过程忽略大小写,代码示例如下: Continue reading [C#]让String.Contains忽略大小写

MSDN错误一则

今天在写脚本创建给SCVMM用的WIN8 VHD镜像文件。基本流程是先用diskpart创建好固定大小的vhd文件,然后用imagex.exe把Windows安装包里的WIM文件解压到这个vhd文件里,最后通过bcdboot来添加一个启动方式。

脚本写好后测试一下发现,生成的vhd大小不对,生成出来的vhd是动态扩展的,不是固定大小的。最后发现原来这是MSDN文档的一个bug,在http://technet.microsoft.com/en-us/library/gg318052(v=ws.10).aspx里的To create and configure a VHD这一段写着If you do not specify the type=expandable parameter, DiskPart will create a fixed VHD。这里的文档其实是错误的,如果你不指定type=expandable的话,diskpart会默认创建动态扩展的vhd文件。要创建固定大小的vhd,必须显示的指明type=fixed。