"VPS is locked”的报错现象

解决方案
在VPS启动、停止、备份、恢复等几个典型的操作过程中,都会先把VPS锁定
当VPS处于锁定状态的时候,VPS是不能被其他程序操作的
以免其他操作和当前操作冲突
当操作完成后,锁定就会自动解除

例如,当VPS运行中时候,可以做备份操作;当VPS停止时候,也可以做备份操作
但是,当VPS处于锁定状态下,是不能做备份等操作
VPS的锁定是在必要的情况下的一种安全保护

以启动和停止为例,如果在启动过程中,遇到一个程序卡住锁死,无法正常启动也无法正常退出
则可能造成整个VPS被卡住了
对于VPS自身而言,由于内部的某个程序卡住,VPS无法跳过这一步骤,就自身无法顺利启动
对于Virtuozzo节点而言,由于启动没完成,VPS还是锁定中的,其他程序不能对VPS进行其他操作
这时候,就发生了“VPS is locked”的报错现象

要解决这个问题,需要登录到硬件节点,找到是哪个程序卡住了VPS,将出错的进程杀掉
这样,VPS即可继续完成启动、停止等操作
如果不杀掉出错的进程,理论上,只要等待足够长的时间,让有问题的进程发生了超时(timeout)
则VPS自己就会退出锁定状态,恢复到正常状态
但是很多情况下等候几十分钟也未必能恢复正常状态,所以还是以手工中止进程为上。

例如服务器上报告VPS101被锁定,那么登录到硬件节点
用vzlist -a 命令检查当前的vps列表和进程,得到如下结果:

C:\>vzlist -a
VEID NPROC STATUS IP_ADDR HOSTNAME
1 24 running 192.168.1.1 VPS1
101 2 stopped 192.168.1.2 VPS23
102 35 running 192.168.1.3 PLESKWIN761
C:\>

可看到编号为101的VPS的“Nproc”数字为2,即“Number of processes”,当前运行的进程数为2
一般来讲,如果vps是停止状态,这个数字应该为0;如果vps是运行状态,这个数字应该是20以上
只有两个进程,则说明vps启动的过程中可能发生错误被卡住了,才导致了vps被锁定的报错。

执行vzquery v2s命令,调查有问题的vps的session id。
例如对于vps id为101的vps,执行

C:\>vzquery v2s 101
VPS ID: 101
Session ID: 2 (ROOT)
Session ID: 2
C:\>

由此可以得到,凡是Session ID(会话ID为2)的进程,都属于VPS101。
现在登录到硬件节点,打开任务管理器,把所有会话ID都是2的进程给杀掉,即可解决问题。

默认情况下,任务管理器可能无法列出会话ID这个项目,此时可以点击任务管理器上的菜单“查看”
点击“选择列”,此时会打开一个选项清单,左侧倒数第二项,即可看到“会话ID”。
选中会话ID点击确定,任务管理器中就能列出每个进程的会话ID了
用鼠标点击会话ID的标题栏,则可以按照会话ID数字的大小,进行排序
现在即可列出所有会话ID是2的进程了

在列出的会话ID是2的进程里边,有些的运行者是System,有些是非System
通常来讲,只要把所有身份非System的进程都杀掉,VPS就可以恢复到正常状态。
如果VPS是在启动过程中卡住成为锁定状态的,杀掉有问题的进程后
则使用vzlist -a命令可以看到vps内启动的进程数量(NPOC)越来越多
并变成了running状态
如果VPS是在停止过程中卡住成为锁定状态的,杀掉有问题的进程后
则使用vzlist -a命令可以看到vps应该顺利停止,进程数量(NPOC)显示为0
VPS成功的停止掉了

当VPS解除了锁定状态,就可以对其做任何一种操作了

原文地址:https://www.cnblogs.com/LCX/p/977889.html