Exsi主机判断UPS状态自动进行关机
原文地址:https://blog.csdn.net/PhoenixNzd/article/details/79286887?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param
小公司很少有能力購買大型的UPS,但是絕大多數的小品牌UPS,都只有自己的監控程序,一般都是運行在xp系統上的,很少有能直接支持exsi的,這就有個問題,如何才能讓exsi主機在斷電的時候自動的進行判斷,然后按照設定的順序依次關閉虛擬機然后自己關機以保護硬盤數據,這就成了一個問題
解決思路
1. 在exsi上運行一個xp虛擬機,然后將ups的usb連接至exsi主機,并映射此usb設備至這臺xp虛擬機
2. 在這臺xp虛擬機上安裝ups自帶的監控軟件,并設置如果市電斷電超過2分鐘,這臺虛擬機就自動關機
3. 在exsi上運營一個腳本,每隔3分鐘就ping一次這個xp虛擬機,如果發現失敗了,就說明這個虛擬機關機了,說明市電斷電,那么開始依次的執行其他虛擬機的關閉命令,并且關閉此Exsi主機
?
實際操作流程(參考)
1. 在Exsi上安裝xp虛擬機(最小配置即可)和UPS監控程序,這里跳過,每個人購買的UPS品牌不同,按照說明書設置即可。
2. 用vSphere登錄Exsi主機,打開SSH功能
?
打開之后,用PuTTY登錄, (可以在很多地方找到下載)
使用root賬戶登錄
登錄之后,會用到下面的命令
ls? ?//這個是列出當前目錄下的文件
cd 目錄名? ?//進入某一個目錄
現在就利用上面兩個命令,進入磁盤目錄
cd vmfs/volumes進入這個目錄之后,后面的每個人應該就不一樣了,這個時候需要使用 ls 命令
我這個機器,可以看到下面這些內容,其中這個比較亮的字,就是存儲,再次使用cd命令進入這個目錄
cd datastore1/可以看到進入之后,目錄顯示的是上面那個字符串,這個不用管他,進來了就行。然后再次使用 ls 命令,看看這個目錄下面都有啥
可以看到,這個存儲下面,是我們在這臺Exsi主機上運行的一些虛擬機,(忽略其他的幾個,關注ups目錄)
這個“ups”目錄是我們目前需要建立的,我這個是因為已經弄好了,所以會有這個目錄,一般情況下是沒有的。
使用??
mkdir ups”這個命令來建立一個ups文件夾,然后用? cd ups 進入此文件夾
進入之后,我們需要建立3個文件,我分別說明一下他們三個都是什么
apc.sh? ?//這個是一個可以執行的腳本,作用是判斷xp虛擬機是否可以ping通,如果不行,就按照這個腳本里面的內容執行exsi的關機操作
ups.log? //這個是日志文件,記錄apc.sh這個腳本的執行的情況,方便日后查看到底是什么時間斷電的
ups_shouhu.sh? //這是一個守護,目的是判斷apc.sh是否在運行,如果沒有,就執行它
在建立這些文件之前,我們需要先獲取一些信息,需要知道當前主機都運行了哪些虛擬機,以及他們的編號都是多少
?
vim-cmd vmsvc/getallvms //列出當前主機所有的虛擬機看到類似于上面這個結果,這里面是你當前所有這個主機上的虛擬機,前面的Vmid就是他們的編號,記下來這個編號,后面會用到
?
好了,下面開始依次建立這三個文件
在exsi下建立文件,需要用到 vi 這個命令(這是個linux下的文本編輯器,不展開說了,想要詳細了解的話自己去百度即可,這里僅僅介紹用得到的功能)
用vi建立文件,命令是下面這個
?
vi apc.sh?
輸入上面這個之后,就會啟動一個vi編輯器,這個時候千萬別蒙,因為從現在開始,你的鍵盤的反饋和之前是完全不一樣了,所以別隨便按任何鍵。
我下面這個文件已經編輯完了,看上去有內容,如果是第一次建立這個文件,實際上應該是空的,會在屏幕一側看到全是那個“~”符號
這個時候你需要首先按鍵盤上的“Insert”按鍵一次,注意看這里,現在是“-”,當你按了“Insert”他就變成“I”了。當變成“I”的時候,意思就是可以開始編輯了。這個時候鼠標是不管用的,需要完全使用鍵盤的上下左右來操作
拷貝下面的這段代碼,到記事本,然后需要根據你自己的實際情況進行一些編輯,我盡量在每一行代碼下面都做了詳細的說明, 在exsi的shell腳本中, #后面的就是注釋,所以下面的代碼中,所有#開頭的,就是注釋了。
?
??
將上面這些代碼,拷貝到記事本,根據自己的實際需求進行編輯修改之后,再拷貝,然后到剛剛的PuTTY窗口,那個窗口現在應該是vi編輯器,這個時候在窗口中按鼠標的右鍵,就應該直接將代碼黏貼上了。黏貼之后,應該是類似于下面這樣的
這個時候需要保存這個文件,首先按一下esc, 然后按一下“:”這個時候光標會跑到最下面,等待你輸入,輸入“w”然后回車,是保存這個文件, 然后再按“:”輸入“q”回車,退出vi編輯器
這個時候你再用“ls”命令,應該可以看到一個apc.sh文件,但是你的這個文件可能和我的不太一樣,不是綠色的,因為他現在還不是可執行文件,沒有權限,需要用下面的這個命令來給它一個執行權限,
?
chmod 777 apc.sh?
執行完上面的命令之后,再用“ls”命令看,應該就是綠色的了。
然后用相同的方法,建立ups.log文件,只不過這是一個空文件,不容寫內容
下面一步是建立一個守護,來判斷apc.sh是否正在執行中,如果沒有執行,就執行它。
?
?NUM=`ps -c | grep apc.sh | grep -v grep |wc -l`
echo ${NUM}
#
if [ "${NUM}" -lt "1" ];then
/vmfs/volumes/datastore1/ups/apc.sh &
echo ' UPS shouhu start' >> /vmfs/volumes/datastore1/ups/ups.log;date >> /vmfs/volumes/datastore1/ups/ups.log
fi
exit 0
?
同樣的原理,將這段代碼中, 路徑的 “datastore1”換成你自己的路徑,其他不用變
下面我們建立一個計劃任務,每3分鐘執行這個守護程序一次,這個時候需要用到exsi下面的計劃任務程序,叫“cron”(別問這是啥,如果你不知道沒關系,只要按照下面的步驟做就可以了,這個就是一個類似于win的計劃任務的東西)
首先用下面的命令打開這個計劃任務的列表文件
?
vi /var/spool/cron/crontabs/root?
這個時候vi編輯器就打開了一個文件
你看到的和我看到的應該差不多,但是沒有最下面這一行,用上面說的編輯方法,將這一行內容添加進去,注意“datastore1”要改成你自己的路徑,然后保存、退出
這個時候已經完成了99%了,唯一的問題是,當exsi重啟之后,它會重置這個計劃任務,這個文件里面的內容又擦除掉了,所以我們需要讓它每次啟動的時候,都將這句話自動的寫在這個文件里面,下面介紹
首先用下面的命令進入 ect目錄
?
cd /etc?
因為rc.local 是只讀文件,現要修改一下權限
?
chmod 777 rc.local?
然后用vi編輯器打開rc.local文件
?
vi rc.local在打開的文件的最下面加上下面三行代碼(將datastore1路徑改為你自己的)
如果 你是 6.7.0 版本的 用?
/etc/rc.local.d/local.sh?
?/bin/kill $(cat /var/run/crond.pid)
/bin/echo '*/3 * * * * /vmfs/volumes/datastore1/ups/ups_shouhu.sh' > /var/spool/cron/crontabs/root
/bin/busybox crond
然后保存退出
驗證一下 apc.sh是否在執行。使用下面這行,如果結果是“1”,就說明正在運行中
?
ps -c | grep apc.sh | grep -v grep |wc -l?
看看日志文件是否正常記錄了。(先要進入到ups.log所在的目錄,方法看前面)
?
cat ups.log?
?
?
?
總結
以上是生活随笔為你收集整理的Exsi主机判断UPS状态自动进行关机的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 保护计算机数据库,保护Access200
- 下一篇: 典型计算机控制系统的基本框图6,计算机控