虚拟机蓝屏知识学习储备
  

zj樊迪 76801人觉得有帮助

{{ttag.title}}
一、windows系统蓝屏又称蓝屏死机(Blue Screen of Death,简称BSOD),是微软的 Windows 系列操作系统在无法从一个系统错误中恢复过来时,为保护电脑数据文件不被破坏而强制显示的屏幕图像。
伴着云桌面的普及,许多物理PC场景下的系统问题也随之迁移到云桌面运维层面,windows蓝屏就是其中的一大运维阻碍。因云桌面的运维与传统运维有所差异,一些技术能力较弱的IT客户频繁转向桌面云提供商寻求帮助,为提升客户满意度,需云桌面技服同事掌握相应的windows蓝屏排查方法,协助客户解决windows自身蓝屏问题。
二、
1. 掌握核心内存转储Dump日志无法生成的处理方法;
2. 掌握在虚拟机无法恢复场景下,winPE获取dump日志的方法;
3. 掌握获取虚拟机QEMU日志的方法。
三、蓝屏的全称是Blue Screen Of Death,简称BSOD。是windows系统检测到无法恢复的错误,为保护电脑数据文件不被破坏强制终止系统,并且提示如下错误信息。
一般是系统模块或者第三方驱动调用函数KeBugCheckEx()来发起蓝屏。也可以用函数KeRegisterBugCheckCallback()注册回调函数,触发蓝屏时做一些处理。如设置硬件的状态。
四、蓝屏问题处理思路
1、观察到蓝屏现象获取蓝屏代码,一般有蓝屏代码,但也有极少数蓝屏没蓝屏代码。遇到蓝屏的问题,优先恢复虚拟机保障正常使用在查原因,可以取消Fast IO,查看已知案例等等方式优先恢复。
2、确认蓝屏前后虚拟机做了什么操作,安装了什么软件或者驱动等。
3、获取蓝屏的dump文件,确认蓝屏原因。
具体的排查思路如下图:
排查:
1. 蓝屏代码与可疑模块信息确认
系统蓝屏界面示例如下图所示,通常在这个界面会包含蓝屏代码、导致蓝屏的可疑模块名以及生成dump文件进度三样信息,这三样也是我们信息收集时所关注的信息。
a. 蓝屏代码:即停机码(stop code),在蓝屏界面一般以“***STOP”开头,是一串十六进制数,用于识别已发生错误的类型。通过它我们可以在KB库、网上搜索引擎进行检索,确认此蓝屏问题的常见原因以及是否有解决方案,为排查蓝屏问题指明方向。
b. 可疑模块:在显示蓝屏代码的下一行,一般会显示导致此次蓝屏问题的可疑模块。这个模块一般就是导致蓝屏的根因所在。通过网上检索是否有此模块导致蓝屏问题的案例,系统内找到此模块查看其属性确认模块所属厂商,基本可以帮助快速定位蓝屏原因,而如果这个可以模块是我们自己的,则可以直接找专家/研发分析确认是否是bug或与系统其他模块有兼容性冲突(此信息有时不会显示,此时就需通过dump文件进行分析确认)。
c. 生成dump文件进度:当进度为100时,表示记录此次蓝屏现场信息的dump文件已经生成完毕,可以进行重启。若在进度完成前重启则可能导致dump文件生成失败影响后续获取dump文件分析蓝屏原因。
     2. Windbg帮助文档查询蓝屏可能原因
蓝屏代码有很多,导致蓝屏的原因也有成千上万种,有时通过网络直接检索蓝屏代码可能不能找到我们所需的信息,那么此时我们怎么初步确认导致XXXX蓝屏的原因呢?此时我们可以通过windbg帮助文档,查询到蓝屏的所有可能原因,辅助后续的分析排查。
Windbg帮助文档检索蓝屏代码语法格式为:bug check + [ ,如查询0x7E蓝屏原因就键入bug check 0x7E。
0x7F蓝屏问题为例检索结果如下:
Windbg对于0x7F这类常见蓝屏代码的一般解释的非常详细,列出了常见与不常见的原因,
0x00000000:表示一个DIV指令被执行,并且除数为零,可能是内存损坏、其他硬件问题或软件故障等导致的此错误。
0x00000006:表示无效的操作码,指示处理器试图执行无效的指令。当指令指针被损坏,指向错误的位置时,通常会发生此错误,造成此错误的最常见原因是硬件内存损坏。
0x109蓝屏为例检索结果如下:
对于0x109这类不常见的蓝屏代码,我们通过检索windbg帮助文档可以查看导致这个蓝屏的可能原因。对于0x109的检索结果,其中1/2/3参数保留没有使用,参数4表示:区域损坏的类型,下面罗列了一些区域损坏的可能原因:
0 x0:一个通用的数据区域可能损坏了。
0 x1一个函数被修改或基于itanim的函数位置被修改了。
0 x6:一个调试程序被修改了。
0 x7:一个关键的MSR寄存器被修改了。
3. 配置及获取Dump文件
dump文件就能知道是哪个模块中的哪个函数中的那条指令引发了蓝屏。系统蓝屏后就会自动生成dump文件,所以获取dump文件很关键,没有dump文件意味着对蓝屏问题一无所知。是不是已知问题也不好确定。那么我们虚拟机怎么生成dump呢?
4.虚拟机设置生成dump
一般虚拟机在如下所示的目录下设置和获取dump文件。我们虚拟机默认将完全内存转储取消了,若是需要开可以联系研发修改,一般情况下核心内存转储即可分析出蓝屏的原因。
         5.拟机获取dump
当虚拟机蓝屏了,我们一般在C:\Windows\目录下获取dump日志,但有时候没有生成MEMORY.DMP怎么办?一般dump没有生成我们可以通过两种方式进行设置,若都设置之后还是无法生成dump,就建议获取nimidump进行分析,但是minidump记录的信息不太详细可能无法分析出具体原因。
1、在VMP上取消虚拟机异常是重启的选项,如下图所示配置。蓝屏发生的时候,可能会出现系统的dump日志还没有转储完成,这个时候触发了异常重启机制,导致dump生成失败。
2、VDI5.0开始viostor驱动添加了一个注册表项可能导致驱动无法生成dump文件,修改虚拟机注册表以生成dump,如果存在下面注册表值,则将IDESNCompat的值改为0。
注册表路径如下:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\viostor\Parameters\IDESNCompat
  6. 使用PE工具
在开机蓝屏的场景下,常常会直接进不了系统,如果安全模式也无法进入的话,在需要获取dump文件以及对系统内文件做修改时, 就要通过WinPE精简操作系统启动实现。
VMP平台自带了WinPE镜像,VMP平台上的虚拟机通过WinPE启动操作方法如下:
A. 通过pshell/xshell等工具登录虚拟机所在主机。
B. 如果ISO目录下没有WinPE镜像,则将主机自带的WinPE拷贝过去。
1虚拟机镜像在本地上,则执行命令:
cp  /sf/data/local/iso/vmtools/tftproot/WinPE  /sf/data/local/iso/WinPE.iso
2虚拟机镜像在虚拟存储上,则执行命令:
cp  /sf/data/local/iso/vmtools/tftproot/WinPE  /sf/data/vs_rep2/WinPE.iso

注:对于记不住vmpWinPE镜像存放位置的,可使用find / -iname winpe命令进行检索其存放路径。
C. 先将虚拟机关机,然后编辑,点击添加硬件添加CD/DVD
D. 编辑虚拟机启动顺序,从光驱启动,从而启动WinPE系统。
7. 获取虚拟机qemu日志
蓝屏可能由于虚拟机内部某个模块引起,也可能由硬件问题引起。在VMP平台上虚拟机硬件是由qemu虚拟仿真的,所以排查硬件问题,可以查看虚拟机qemu日志是否有报错或告警。

Qemu日志查看方法:
A. 使用xshell/pshell登陆虚拟机运行位置所在主机。
B. cat /sf/log/today/sfvt_qemu_vmid.log。其中vmid可通过VMP平台上虚拟机管理页面的URL获取。如果查看的日志不再今天today替换成对应日期即可。最多可查看一个月的日志。
常见的蓝屏代码和处理方法
虚拟机蓝屏代码7B
去掉fastio就可以了
[size=12.0000pt]
Windows的注册表丢失了导致蓝屏,目前研发同事已经恢复,注册表丢失可能是的由于Windows的断电引起的,跟客户这边沟通,客户这边确实也存在断电过,经常有电源重启的情况
蓝屏代码0xc000007F
360驱动导致蓝屏
蓝屏代码0xc000007F
注册表坏了1:ConfigFlags值被改了
蓝屏代码0x0000003B
内存错误蓝屏,重新部署VM。
蓝屏代码是0x00000050 0x0000005E
中勒索病毒
一些虚拟机蓝屏,反复重启蓝屏中
把虚拟机网线拔掉之后就不蓝屏了,说明就是中毒了。
蓝屏代码0c21
在VMP上配置VM,重启后自动还原解决。
[size=12.0000pt]
usguard.sys导致的蓝屏,百度查知是UC浏览器
蓝屏代码0X8E
定位是UniAccessAgent 这个软件导致的蓝屏。
[size=12.0000pt]
研发建议卸载软件,打上windows的补丁
虚拟机蓝屏了,0x00000050,srv.sys
中毒了,打勒索病毒补丁包或者开启Windows更新
蓝屏代码0X7B
根据文档排查,,到vmp后台把自带的PE镜像拷贝到ISO目录下加载PE镜像进入虚拟机,根据文档操作,之后修改后台配置文件,把fastio磁盘和网络改为非fastio, 选择最近一次正确配置,正常进入后,再开启FASTIO,正常。
XP电脑蓝屏
是NTFS驱动损坏了,建议直接还原
打开excel或者浏览器多就会蓝屏(0x00000050,pqk qqm.sys)
win7虚拟机2[size=12.0000pt]核4G内存,修改成4核8G没有再蓝屏
虚拟机一打开java组件虚拟机就蓝屏
a. 卸载JRE(jave 2 Runtime Environment SE v1.4.1_07),重启VM,然后重新安装此组件。
[size=12.0000pt]
b. 关闭平台的ddraw渲染功能(关闭办法: 向c:\\windows\system32\sangfor_disable_directdraw.dat文件中写入数字1,然后重启VM)。
VM蓝屏
可能趋势驱动导致

474465fb20e427308f.png (237.15 KB, 下载次数: 55)

474465fb20e427308f.png

打赏鼓励作者,期待更多好文!

打赏
24人已打赏

南小卒 发表于 2020-11-30 01:11
  
楼主分享的资料详尽详实,对于问题的处理基本方法和思路都分享了,值得大家日常知识巩固,涉及到蓝屏的问题,按照楼主分享的办法99%都可以解决和定位问题,感谢楼主,期待更多分享
drogba 发表于 2020-11-18 09:43
  

评论是对作者最大的鼓励! +8 S豆 详情>

虚拟机蓝屏问题还是挺容易遇到的,此文提供了很好的解决方案!
似火流年 发表于 2020-11-18 09:50
  
蓝屏问题普遍存在谢谢楼主分享的这么好的解决方案。
ie5000 发表于 2020-11-18 10:00
  

回帖奖励 +8

蓝屏常见常挠头,感谢楼主分享
yim 发表于 2020-11-18 10:19
  

回帖奖励 +8

感谢分享。实用性很强,能够解决实际问题。
秋水伊人 发表于 2020-11-18 15:24
  

回帖奖励 +8

楼主将蓝屏问题总结得很全面,并且提供了相应的解决方案,非常值得参考!
蓝海 发表于 2020-11-18 15:54
  

回帖奖励 +8

windows系统蓝屏现象非常见,而且产生的原因也涉及到很多方面,硬件、软件原因都有。楼主能把虚拟机windows系统的蓝屏故障总结的如此全面,并提供了很好的解决方案,真是有心了!
小魚兒 发表于 2020-11-23 21:41
  

回帖奖励 +8

评论是对作者最大的鼓励! +8 S豆 详情>

蓝屏问题是常见问题,这个帖子可以很好解决 谢谢!
暗夜星空 发表于 2020-11-25 09:35
  
windows太容易蓝屏了,现在是尽量少用windows,多用linux和unix系统
似火流年 发表于 2020-11-25 09:56
  

回帖奖励 +8

蓝屏问题普遍存在谢谢楼主分享的这么好的解决方案。
发表新帖
热门标签
全部标签>
每日一问
技术盲盒
干货满满
技术笔记
新版本体验
产品连连看
GIF动图学习
技术咨询
标准化排查
2023技术争霸赛专题
功能体验
秒懂零信任
自助服务平台操作指引
信服课堂视频
通用技术
社区帮助指南
答题自测
安装部署配置
上网策略
运维工具
SANGFOR资讯
技术晨报
项目案例
玩转零信任
深信服技术支持平台
畅聊IT
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
安全攻防
测试报告
日志审计
问题分析处理
流量管理
每日一记
云计算知识
用户认证
原创分享
解决方案
sangfor周刊
VPN 对接
专家分享
技术顾问
信服故事
SDP百科
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
加速技术
排障笔记本
产品预警公告
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
答题榜单公布
纪元平台
卧龙计划
华北区拉练
天逸直播
以战代练
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
每周精选

本版版主

468
220
32

发帖

粉丝

关注

本版达人

新手89785...

本周建议达人

YangZhe...

本周分享达人

runner

本周提问达人