ฉันมีเซิร์ฟเวอร์ที่บ้าน (HP Proliant ML310 G4) ที่ฉันซื้อจากนายจ้างเมื่อเดือนก่อน เซิร์ฟเวอร์รัน Debian Linux และฉันใช้เพื่อทุกสิ่ง ฉันสามารถหลีกเลี่ยงการทำสิ่งนี้ได้เพราะความต้องการของฉันไม่ได้เป็นที่ต้องการอย่างมากดังนั้นเซิร์ฟเวอร์จึงไม่ค่อยมีภาระมากในเวลาใดก็ตาม เซิร์ฟเวอร์นี้มีอาร์เรย์ RAID1 2 TB (พร้อมหนึ่ง hot spare) ที่จัดการโดย mdadm ที่ฉันใช้สำหรับการแชร์ไฟล์ผ่านเครือข่ายของฉันผ่าน Samba ฉันใช้ระบบปฏิบัติการกับฮาร์ดไดรฟ์ขนาดเล็กที่ไม่ได้เป็นส่วนหนึ่งของอาร์เรย์
ฉันมีเซิร์ฟเวอร์ที่ขับเคลื่อนด้วย UPS ขนาด 255 วัตต์เล็ก ๆ น้อย ๆ เพราะฉันต้องการให้มันทนต่อความผันผวนของพลังงานเพียงเล็กน้อยโดยไม่ต้องลงมา สิ่งนี้สำคัญมากเพราะการปิดระบบที่ไม่สะอาดอย่างกะทันหัน (เกิดจากพลังงานตกหรือมืดมน) สามารถทำให้อาร์เรย์ RAID ซึ่งเกิดขึ้นได้ในครั้งเดียว
ในกรณีที่ไฟฟ้าขัดข้องฉันประเมินว่า UPS มีพลังงานอยู่เพียง 10-15 นาทีเท่านั้น อาจมีมากกว่านี้ แต่ฉันไม่ต้องการคิดโดยอัตโนมัติว่ามี แค่นี้ก็เพียงพอแล้วที่จะผ่านหน้ามืดไปได้ไม่กี่นาที อย่างไรก็ตามหากไฟฟ้าดับเป็นเวลาหลายชั่วโมงฉันต้องการเซิร์ฟเวอร์เพื่อปิดตัวเองอย่างถูกต้องโดยอัตโนมัติก่อนที่ไฟของ UPS จะล้มเหลว หวังว่านี่จะช่วยป้องกันความสมบูรณ์ของ RAID ในการหลบซ่อนตัวอยู่ในสถานการณ์เหล่านั้น
สิ่งนี้เป็นเรื่องง่ายในแล็ปท็อป b / c มันมีเซ็นเซอร์ในตัวเพื่อตรวจสอบว่ากำลังทำงานเมื่อใช้พลังงานแบตเตอรี่ แต่เซิร์ฟเวอร์นี้ไม่ (เท่าที่ฉันรู้) ฉันมีการตั้งค่าเครือข่ายที่ผิดปกติที่โมเด็ม DSL แยกจากเราเตอร์ของฉัน เราเตอร์ยังอยู่ใน UPS ซึ่งช่วยให้ฉันสามารถ SSH ผ่านแล็ปท็อปของฉันและปิดเซิร์ฟเวอร์ในกรณีที่ไฟฟ้าขัดข้อง น่าเสียดายที่มันใช้งานได้ก็ต่อเมื่อฉันมีเวลาทำ ฉันต้องการวิธีแก้ปัญหาที่ใช้งานได้เสมอไม่ว่าฉันจะอยู่ที่นั่นเพื่อแทรกแซงหรือไม่
เนื่องจากโมเด็ม DSL ของฉันไม่ได้อยู่ใน UPS มันจะลงไปด้วยทุกอย่างถ้าไฟดับ ฉันตั้งค่าแบบนั้นโดยเจตนาเพราะฉันมีความคิดเกี่ยวกับวิธีแก้ปัญหานี้: ฉันกำลังคิดว่าจะเขียนสคริปต์ที่จะ ping google.com หรือเว็บไซต์ที่มีอัตราการเข้าชมสูง / อื่น ๆ หากการ ping เสร็จสมบูรณ์เซิร์ฟเวอร์จะยังคงทำงานต่อไป หากการ ping ล้มเหลว (เนื่องจากโมเด็มปิดอยู่) สคริปต์จะคิดว่ากำลังปิดอยู่และจะบอกให้เซิร์ฟเวอร์ปิดการทำงาน ฉันจะเพิ่มสคริปต์ใน Cron และให้มันทำงานทุก 5 นาที หวังว่าจะทำให้เซิร์ฟเวอร์มีเวลามากพอที่จะปิดตัวลงก่อนที่ UPS จะหมดพลังงาน
ก่อนที่ฉันจะไปพบปัญหาในการเขียนสคริปต์ฉันต้องการทราบว่ามีวิธีที่ดีกว่าในการทำสิ่งที่ฉันต้องการหรือไม่ ขอบคุณล่วงหน้าสำหรับความช่วยเหลือใด ๆ