1. Kdump工具

本篇文章主要介绍Windows2012的故障转移集群一个新功能“动态仲裁”,默认该功能是开启的;
动态仲裁能在当前群集投票出现分歧的情况下取消某些节点的投票权限,比如偶数个节点的群集环境。仲裁见证和动态仲裁有点相似也可以解决群集投票分歧的问题,但是它不能取消节点的投票权,它能保持群集的投票个数保持奇数个数。

win10锁屏或睡眠一段时间后弹不出登录框

文:铁乐与猫

通常发生在win10更新到10周年版后发生,也就是会卡在登录状态,但不见输入登录框。
我出现这种情况的时候不是很严重,一般等久些也能出现,但问题是这很闹心。
如果碰巧遇上重要或紧急事务要处理那更是遭心。
人无远虑,必有近忧。
总不能等到某天发生紧急事故,老板都站在你身后看你操作的时候而你在这个时候被win10的这个bug给挡在系统之外,
什么操作都不行,会给人一种什么感觉,那就是你到底行不行?
所以这个bug是一个很严重的炸弹,必需马上排除!

  Kdump的工作机制是在内核崩溃时, 通过kexec 工具由BIOS启动一个备用内核,
由备用内核执行一系列任务,保存内存中崩溃内核的状态, 供后续故障分析用.

 

故障:win10锁屏或睡眠一段时间后弹不出登录框,卡在登录状态不见输入登录框;

  本文默认AMD或INTEL X86_64架构, RHEL7系统环境. 

 

原因:Windows10自带的微软拼音输入法chsime导致,故障发生时假如能进入到系统了,查看进程管理器可发现有两个Microsoft IME 进程;

1.1 内核管理工具Kdump安装

SQLServer版本: SQL Server 2016 SP1

深层原因:微软中文输入法进程以system账户权限运行导致的UAC出错。

  Kdump是RHEL7中自带的内核管理工具.在RHEL7.1之前的版本,kdump作为安装完成之后的可选组件自动安装,从RHEL7.1开始kdump被植入安装界面,作为系统基础工具供安装选择.

Windows版本:Windows Server 2012 DataCenter

解决方法:使 Microsoft IME 进程以当前账户身份运行,自然就解决了卡UAC的问题,UAC就可以正常使用了。也就是拒绝system对chsime读取,读取和执行两个权限。

以管理员模式运行命令提示符,一次性粘贴下面这几行命令后按回车,提示成功后再重启win10生效:

if exist “%SystemRoot%System32InputMethodCHSChsIME.exe” (
TAKEOWN /F “%SystemRoot%System32InputMethodCHSChsIME.exe”
icacls “%SystemRoot%System32InputMethodCHSChsIME.exe” /deny “NT
AUTHORITYSYSTEM:RX”)

这个 ChsIME.exe 就是微软拼音输入法的程序,在任务管理器里你看到的
Microsoft IME 进程就是它。
上述命令的作用是禁止系统读取和执行 ChsIME.exe 这个程序

为方便大家理解,特意截图说明流程:
1、搜索cmd,再选中cmd右键“以管理员身份运行”;
图片 1

2、复制前面说的那几行命令(其实就只是一行长命令),返回以管理员身份运行的刚刚打开的cmd窗口,右键会出现菜单,点击“粘贴”可将此前复制的命令粘贴上来,不用敲这么一大段命令。另外窗口出现的换行处的More?字样可以不用管它,照样敲回车执行是了。
图片 2

3、重启win10系统生效。
亲测有效。

(2018-2-2 周五)
end

可以通过下面命令直接RPM包安装.

群集节点:HD21DB03,HD21DB04,HD21DB05,HD21DB06

yum -y install kexec-tools
rpm -q kexec-tools

 一、动态仲裁

当前群集是4个节点的偶数个群集,采用的是多数节点的仲裁投票方式。

同时,Kdump还配备了图形化管理工具,可以通过下面命令安装.

1.全部节点正常

 图片 3

图片 4

当前集群WSFC26的动态仲裁是开启的,见证动态投票当前是0;开启动态仲裁后,由于当前是4个节点的偶数个节点默认把主节点的当前投票给取消了。

yum -y install system-config-kdump

2.模拟1个节点故障

图片 5

当一个节点故障后,动态仲裁把之前的DB03的投票给启用了,还是保证了有3个节点的投票。

  对于RHEL7.4及之后的版本,kdump支持INTEL IOMMU.
而不支持RHEL7.3及之前的版本.

3.模拟2个节点故障

图片 6

当2个节点故障后,动态仲裁把剩下的DB04节点的投票也取消了,由于当前是2个节点所以只能保证一个节点有投票权,否则会出现投票分歧的情况。

1.2 通过命令行配置kdump内存容量

4.模拟3个节点故障

图片 7

当把3个节点故障后,集群还是保证正常,同时AlwaysOn也是正常的。

注意:第三个故障节点不能是当前有投票权的节点DB05,否则群集就无法保持正常了,因为当前只有DB05有投票权。

图片 8

AlwaysOn也正常

  kdump能监控系统内核运行状态,其地位比较特殊.
kdump的内存空间是在系统启动时,由引导程序分配的,相对于系统内核,kdump内存是一个独立的空间.

二、仲裁见证

再看一下当同时启用动态仲裁和见证仲裁的情景。

 图片 9

可以通过如下命令指定kdump的内存空间大小.

 1.全部节点

图片 10

 图片 11

当前4个节点都有投票,而且见证动态投票也变成了1,当前群集就有5个投票。

crashkernel=128M     #为kdump保留128M的内存空间.

 2.模拟1个节点故障

图片 12

图片 13

当有一个节点故障后,这时见证动态投票也变成了0,保证了当前奇数个投票。当前有3个投票。所以当两个节点故障后见证动态投票会变成了1

   crashkernel的值可以设置成“auto”,在一些拥有较大内存的系统中,利于实现Kdump的自动化管理.

3.模拟2个节点故障

图片 14

图片 15

模拟两个节点故障后,见证动态投票变成
了1,当前还是保证了3个投票。而且这时DB04、DB05都可以故障,不影响整个集群,而且如果这个两个节点都是同步提交的话AlwaysOn也能正常切换。比没有加入见证的动态仲裁集群存活几率更大。

crashkernel=auto

4.模拟3个节点故障

 

图片 16

注意:这里DB05已经故障了,但是它的当前投票还是为1,而且见证投票也是1,总投票数还是3,可能是个bug;最后的投票数应该只有DB04有且见证投票也应该为0总投票数应该为1。当时整个集群还是正常的。

图片 17

图片 18

这里故意把DB05节点故障测试AlwaysOn群集转移情况,事实证明只要群集正常转移也是没问题,前提节点得是同步提交支持自动故障转移。

 

注意:最后保证只有一个节点群集也正常也是动态仲裁的作用,否则当前群集只能运行2个节点故障。见证投票只是增加了群集的投票几率。

  当然,crashkernel的值还可以通过如下形式实现更灵活的配置.

三、关闭动态仲裁

接下来看4个节点且关闭了文件共享见证的场景。 

  crashkernel=<范围1>:<大小1>, <范围2>:<大小2>

1.全部节点正常

图片 19

crashkernel=512M-2G:64M,2G-:128M    #当系统内存在512M-2G之间时,为Kdump保留64M的内存空间;当系统内存大于2G时,为Kdump保留128M的内存空间.

2.模拟1个节点故障

图片 20

图片 21

当前群集和AlwaysOn都正常

  还可以这样:

3.模拟2个节点故障

整个群集群集故障无法访问。

注意:不要存在这种误区以为偶数个节点就无法投票选举,如果4个节点都正常或者两两处于不同的数据库中心的情况下有可能会导致投票无法选举成功。但是当某个节点故障剩下的3个节点还是能选出一个新的主节点,因为剩下的节点可以满足节点多数。

crashkernel=128M@16M    #为Kdump保留128M的内存空间,内存地址从16M(physical address 0x01000000)开始.

四、命令

1.查看动态仲裁和见证投票

Get-Cluster | ft name,DynamicQuorum,WitnessDynamicWeight

2.开启关闭动态仲裁

--关闭
(Get-Cluster).DynamicQuorum=0
--开启
(Get-Cluster).DynamicQuorum=1

 备注:在其中一个群集节点上执行即可

发表评论

电子邮件地址不会被公开。 必填项已用*标注