如何有效防止服务器因消耗完UPS电量后非正常关机
2011-12-29蔡源斌
考试周刊 2011年13期
摘 要: 市电停电后,当服务器消耗完UPS电量时,就会非正常关机,可能导致丢失数据或者产生故障。本文介绍了由服务器自动判断停电和自动关机的方法。
关键词: 服务器 UPS 停电 自动关机
虽然接UPS电源能防止服务器突然因停电而带来数据丢失或者导致服务器故障,但是小型UPS电源不能像银行系统一样持续给服务器供电,一般只能持续几十分钟或者1个多小时(取决于电池容量)。当UPS电量用完而市电还没有来时,服务器依然会非正常关机,可能导致数据丢失或者服务器故障。我院实验室中有若干台服务器,配有一台UPS电源,停电时能支撑服务器正常工作约1小时。为了防止停电时,服务器因UPS电量消耗完而非正常关机,现介绍Windows 2003服务器和Linux服务器的解决方法。
一、程序设计大致思路
服务器用ping命令去ping本栋教学楼的网关(202.201.165.254),若ping通,服务器不关机;若ping不通时,接着转向ping一台本实验室的一台一直开的计算机(工作需要,但是此计算机没有接到UPS电源,地址是局域网172.16.1.8),若ping通,服务器不关机;若仍然ping不通则表示停电,服务器定时关机,但依然接着ping本栋教学楼的网关和计算机,若ping通了任意一个,则服务器取消关机,否则接着ping,直到服务器自动关机。
二、具体方案
1. Windows2003服务器
在服务器桌面建立一个文本文件,取名为“tingdian.bat”,内容如下:
@echo off
:myping
@ping 202.201.165.254 |find "timed out">nul 2>nul && @echo楼网关不通ping计算机A && goto:myping1
@echo网络正常ping网关
goto myping
:myping1
@ping 172.16.1.8 |find "timed out">nul 2>nul && @echo计算机A也不通开始关机&& goto:guanji
@echo网络正常ping计算机A
goto myping1
:guanji
shutdown -s -t 300
:myping888
@ping 202.201.165.254 |find"timed out">nul 2>nul && @echo楼网关还是不通ping计算机A && goto:myping111
@echo又来电了网络正常ping网关取消关机
shutdown -a
goto myping
:myping111
@ping 172.16.1.8 |find "timed out">nul 2>nul && @echo都不通再ping一次&& goto:myping888
@echo又来电了网络正常ping计算机A取消关机
shutdown -a
goto myping1
然后双击运行此脚本即可。
2. linux服务器
用root用户在服务器中先建立一个文件“tingdian.sh”,内容如下:
#!/bin/sh
while true
do
ping -W 5 -c 1 202.201.165.254 >/dev/null
ret=$?
if[$ret -eq 0]
then sleep 600
else
ping -W 5 -c 1 172.16.1.8>/dev/null
ret=$?
if[$ret -eq 0]
then sleep 600
else
shutdown -h 5
fi
fi
done
再建立一个文件“quxiao.sh”,内容如下:
#!/bin/sh
while true
do
ping -W 5 -c 1 202.201.165.254 >/dev/null
ret=$?
if[$ret -eq 0]
then shutdown -c
else
ping -W 5 -c 1 172.16.1.8 >/dev/null
ret=$?
if[$ret -eq 0]
then shutdown -c
else
sleep 300
fi
fi
done
然后把该文件添加执行权限,执行chmod u+x tingdian.sh quxiao.sh,然后开两个终端,一个终端中执行tingdian.sh脚本,另一个终端中执行quxiao.sh脚本即可。由于linux服务器关机命令shutdown必须由root用户执行,因此此脚本tingdian.sh用root执行。
三、结语
尽管市场有带自动关机功能的UPS或者相关硬件,但本文介绍的方案完全由脚本执行,避免了因缺乏硬件和资金等问题而带来的困扰,是一种不错的保护服务器的方法。虽然一个学期也不见得停一两次电,但是一旦因停电非正常关机而导致不良后果可就晚了,所以还是多一些防范措施为好。
参考文献:
[1]郭阳.Windows XP的自动关机.电脑知识与技术,2005-29.