Mini Howto Subject: การติดตั้งโปรแกรมควบคุมการทำงานของ UPS APC By: Pruet Boonma Date: Apr 10, 1998 Update from: - License: สงวนลิขสิทธิ์เอกสารนี้ โดย พฤษภ์ บุญมา การเผยแพร่เอกสารนี้จะต้องอยู่ภายไต้ เงื่อนไขของ GNU General Public License เวอร์ชั่น 2.0 ที่ออกโดย Free Sofware Foundation กรุฒาอ่านรายละเอียดของ GPL ที่ Introduction: โดยทั่วไปมักจะมีการนำ UPS เข้ามาสำรองไฟฟ้าสำหรับในกรณีที่ไฟฟ้าดับ แต่ว่าถ้าไฟฟ้าดับในวันที่ไม่มีใครอยู่ หรือว่าเป็นวันหยุด ก็จะไม่มีคนมา Shutdown เครื่อง Server ทำให้เมื่อไฟฟ้าใน battery หมด ก็ทำให้ไฟฟ้าดับโดยที่ Linux ก็ยังไม่ได้ Shutdown ตัวเอง ซึ่งเมื่อเวลา Boot เครื่องขึ้นมาอีกครั้ง อาจจะเกิดปัญหากับ File system ได้ แต่ก็มี UPS บางยี่ห้อ บางรุ่น สามารถควบคุมผ่าน Linux ได้ กล่าวคือ เมื่อไฟฟ้าดับ UPS ก็จะส่งสัญญาณมาบอก โปรแกรมที่ run เป็น daemon บน Linux ว่าไฟฟ้าดับ และเมื่อถึงเวลาที่กำหนด โปรแกรมบน Linux ก็จะสั่ง Shutdown เครื่องคอมพิวเตอร์ แล้วสั่งให้ UPS ปิดตัวเองตาม เพื่อป้องกันมิให้ battery ของ UPS หมดอายุเร็ว นอกจากนี้ โปรแกรมนี้ยังสามารถทำงานแบบ Master/Slave ได้ กล่าวคือ เครื่องที่ต่อกับ UPS อยู่จะเป็นเครื่อง Master ส่วนเครื่องที่เป็น Slave (โดยทั้งเครื่องที่เป็น Master และ Slave จะต้องต่อ Prerequirement: 1. UPS APC (American Power Conversion) แบบ smartUPS 2. สาย Serial แบบ 9 pin - 9 pin โดยจะ Map สายดังนี้ PC (9 pin) APC (9 pin) 2 RxD 2 3 TxD 1 5 GND 9 3. APCD daemon program package ซึ่งได้ทำการ compile เรียบร้อยแล้ว วิธีการติดตั้ง และแก้ไข Configuration file ทำการต่อสายจาก Serial port (Com port) ไปยังด้านหลัง UPS โดยถ้าต่อเข้าไปยัง COM 1 ให้ทำการ link file ดังนี้ # ln -s /dev/ttyS0 /dev/ups โดย ttyS0 จะหมายถึง COM 1 นั่นเอง ดังนั้นถ้าต่อเข้ากับ COM 2 ก็ให้ทำการ link file ดังนี้ # ln -s /dev/ttyS1 /dev/ups เสร็จแล้ว ให้ทำการ unzip และ untar ตัว program package ที่ root ดังนี้ # mv apcd.tgz / # cd / # gzip -d apcd.tgz # tar -xf apcd.tar # ก็จะทำการลงโปรแกรมให้อย่างเรียบร้อย ก็ไปทำการแก้ไข configuration file คือ /etc/apcd.conf ดังตัวอย่าง #cat /etc/apcd # Master section - should be uncommented on the master machine # PORT /dev/ups # The timeout before system shutdown TIMEOUT 10 # The name of the logging file LOGFILENAME /var/adm/upsstat.log # The addresses of the slave machines SLAVE ds90.intanon.nectec.or.th SLAVE dg52.doc.eng.cmu.ac.th # # Slave section - should be uncommented on the slave machines # #MASTER chaos.dator3.anet.cz #MASTER dg52.doc.eng.cmu.ac.th จากตัวอย่างเป็นการสร้าง configuration file สำหรับเครื่องที่เป็น Master โดย จะเริ่มจากการ set port ที่ต่อกับ UPS ซึ่งในกรณีนี้ ก็คือ /dev/port ซึ่งได้ link เข้ากับ Serial port ที่ถูกต้องไปแล้ว ต่อมาก็ต้อง set ค่า time out ซึ่งมีหน่วยเป็นนาที โดยค่านี้เป็นค่าที่บอกว่า จะให้โปรแกรมนี้ รอเป็นแวลานานแค่ไหน หลังจากไฟฟ้าดับ ก่อนที่จะทำการ Shutdown เครื่องคอมพิวเตอร์ ซึ่งค่าเวลานี้ก็ขึ้นอยู่กับขนาดของ UPS ที่จะสำรองไฟฟ้าได้นานแค่ไหน ก่อนที่ไฟฟ้าจะหมด ถัดมา คือการกำหนด file ที่จะเก็บ log file โดยจะทำการเก็บรายละเอียดต่าง ๆ เช่น ปริมาณไฟฟ้าที่เก็บได้ ปริมาณ load ที่กำลังจ่ายอยู่เป็นต้น ซึ่งจะมีประโยชน์เวลาพิจารณาว่า UPS มีขนาดเล็กเกินไปหรือไม่สำหรับเครื่องคอมพิวเตอร์ที่ใช้อยู่ ส่วนสุดท้ายคือชื่อเครื่องที่เป็น Slave ของเครื่องที่เป็น Master นี้ สำหรับเครื่องที่เป็น Slave นั้น จะกำหนด configuration file ดังนี้คือ #cat /etc/apcd # Master section - should be uncommented on the master machine # #PORT /dev/ups # The timeout before system shutdown #TIMEOUT 10 # The name of the logging file #LOGFILENAME /var/adm/upsstat.log # The addresses of the slave machines #SLAVE ds90.intanon.nectec.or.th #SLAVE dg52.doc.eng.cmu.ac.th # # Slave section - should be uncommented on the slave machines # MASTER proxy.intanon.nectec.ac.th ซึ่งก็คือการกำหนดว่า Master คือเครื่องไหนนั่นเอง เมื่อทำการแก้ไข configuration file เสร็จเรียบร้อยแล้ว ก็ให้ลอง run โปรแกรม ดังนี้คือ # /usr/sbin/apcd ถ้าโปรแกรมไม่แสดงข้อผิดผลาดก็ให้ออกจากโปรแกรม โดยกด Ctrl-C แล้วให้ run เป็น background process ทิ้งไว้ดังนี้ # /usr/sbin/apcd & เสร็จแล้วให้ไปแก้ไข Boot script เพื่อให้ run โปรแกรมทุกครั้งที่ทำการ boot เครื่อง โดยทำการเพิ่มข้อความต่อไปนี้ลงใน file /etc/rc.d/rc.local ดังนี้คือ APCD=/usr/sbin if [ -f $APCD/apcd ] then echo "Start APC UPS daemon" $APCD/apcd & fi อย่าลืมใส่ "&" มิฉนั้นเครื่องจะ Boot ไม่ขึ้น หลังจากนั้น อาจจะทำการทดสอบโปรแกรมโดยการดึงปลั๊กของ UPS ออก (มิใช่การปิดสวิทช์ UPS ) แล้วลองดูว่าเมื่อครบเวลาที่กำหนดไว้ เครื่องจะ Shutdown เองหรือไม่