У мене є домашній сервер (HP Proliant ML310 G4), який я придбав у свого роботодавця місяць або близько того. Сервер працює під управлінням Debian Linux, і я використовую його практично для всього. Я можу піти з цього, тому що мої потреби не настільки вимогливі, тому сервер рідко піддається великим навантаженням у будь-який момент часу. Цей сервер має масив RAID1 на 2 ТБ (з однією гарячою запасною), керований mdadm, який я використовую для обміну файлами через свою мережу через Samba. Я запускаю ОС на меншому жорсткому диску, який не є частиною масиву.
У мене сервер працює через невеликий 255-ватний ДБЖ, тому що мені це потрібно, щоб витримувати незначні коливання потужності, не знижуючись. Це дуже важливо, тому що раптове нечисте вимкнення (спричинене падінням електроенергії або відключенням) може викрутити масив RAID, що вже відбулося одного разу.
У разі відключення електроживлення, я вважаю, що джерело живлення має лише 10-15 хвилин живлення. Може бути більше, але я не хочу автоматично припускати, що є. Цього достатньо, щоб пройти через відключення, які тривають кілька хвилин або менше. Однак, якщо живлення відключається протягом декількох годин, мені потрібен сервер, щоб він автоматично автоматично відключився до виходу з ладу ДБЖ. Це, сподіваємось, убереже цілісність RAID від замикання в таких ситуаціях.
На ноутбуці з к / с подібними речами легко вбудувати вбудовані датчики, щоб визначити, коли він працює від акумулятора, але цей сервер цього не робить (наскільки я знаю). У мене незвичайні налаштування мережі, де мій DSL-модем відокремлений від мого маршрутизатора. Маршрутизатор також знаходиться на ДБЖ, що дозволяє мені пройти SSH через ноутбук і вимкнути сервер у разі відключення живлення. На жаль, це працює лише в тому випадку, якщо я там в той час, щоб це зробити. Мені потрібно рішення, яке завжди спрацьовує, втручаюся я чи ні.
Оскільки мій DSL-модем не знаходиться на ДБЖ, він би впав з усіма іншими, якщо живлення вийде з ладу. Я налаштував це навмисно, тому що маю уявлення про те, як вирішити цю проблему: я думав написати сценарій, який би ping google.com чи інший сайт з високим трафіком / високою доступністю. Якщо ping завершиться успішно, сервер продовжуватиме працювати. Якщо ping не вдасться (оскільки модем вимкнено), сценарій вважає, що живлення вимкнено, і попросить сервер закритись. Я додав би сценарій до Cron і мав би його виконувати кожні 5 хвилин. Це, сподіваємось, дасть серверу достатньо часу для вимкнення, перш ніж у ІБП не закінчиться живлення.
Перш ніж перейти до проблеми написання сценарію, я хотів би знати, чи є кращий спосіб зробити те, що мені потрібно. Заздалегідь дякую за будь-яку допомогу.