Удаленное управление питанием внешнего жесткого диска

Может быть вам нужно удаленно управлять питанием внешнего кармана с жестким диском, например, для бекапов с NAS? У вас есть полуумный дом?
В моей локальной сети работает сетевое хранилище Synology, а для сохранения бекапов использую внешний карман с eSATA.
Управление питанием этого кармана довольно быстро прошло эволюционный путь, как говорил Остап Ибрагимович Бендер
Согласитесь, довольно архаично…
Специально обученный человек освобожден, и ты сам себе сисадмин — включаешь удаленно карман, бекапишь, выключаешь карман. Казалось бы, живи и радуйся.
Но, при всех усилиях команды Яндекса, эта розетка-реле слегка глючная. Нечасто, но все же она становилась недоступной для управления, и помогала только ее физическая перезагрузка (и да, приходилось звонить тому самому спецобученному человеку).
Ладно, заменил ее на встраиваемое реле Sonoff Basic R4mini с Matter. Стало надежней и веселей. Но тут прилетел другой лебедь (хорошо, что не черный) — мощность встроенного в карман БП оказалась впритык для запуска HDD и изредка он отказывался стартовать. Да и лениво мне стало играть в сисадмина. Руки зачесались сделать что-то иное.
Да будет
В Home Assistant у меня проброшено с десяток реле и сенсоров на базе ESP8266 и ESP32, самодельных и перешитых фабричных. В большинстве своем эти устройства находятся вне локальной сети. Это очень незамысловатые штуки, которые замечательно работают через протокол MQTT на прошивке Tasmota.
Наша идея проста, берем «кубики» и складываем из них «домик»:
— двухканальное реле
— плата для разработчика ESP32C3
— понижающий модуль 12В -> 5В (при наличии блока питания +5/+12 можно было бы обойтись без него)
— токоограничивающий резистор 220 Ом
— светодиод для моргания (а как же без него).

Установка и настройка микропрограммы Tasmota на ESP32C3:
Эта статья не про умные дома, но все же скажу пару слов про настройку Tasmota
1. Идем прямиком на их сайт и загружаем файлы tasmota32.factory.bin и tasmota32c3.bin
2. Подключаем ESP32C3 к компьютеру, запускаем webinstaller
3. Сначала заливаем файл tasmota32.factory.bin. После успешной прошивки ESP создаст wifi точку доступа без пароля с именем вида Tasmota-##########. Нужно к ней подключиться, выбрать в интерфейсе свою домашнюю сеть WiFi и ввести пароль. После этого ESP будет доступна в домашней сети по IP адресу. Запомните адрес, это потребуется для дальнейшей настройки
4. Заходим по уже известному нам IP в интерфейс Tasmota, и обновляем прошивку файлом tasmota32c3.bin
5. Устанавливаем часовой пояс устройства командой в Tools->Console. Команду можно взять тут
6. Настраиваем конфигурацию модуля (Configuration->Module) и MQTT (Configuration->MQTT) и другие (Configuration->Other).

Дорабатываем реле:
1. Удаляем желтую перемычку, и аккуратно выпаиваем контактные клеммы возле реле
2. Запаиваем понижающий модуль (разумеется, заранее установив потенциометром на выходе +5В). Тут же изображено, как мы питаем модуль от источника 12В и куда подключаем питание HDD.
3. На нижней стороне платы разводим питание с понижайки на модуль реле
Дорабатываем модуль ESP32C3:
1. Запаиваем гребенку-мама, предварительно удалив из нее два контакта на пинах 0 и 3
2. Запаиваем резистор 220 Ом на пин 6, и два проводочка на светодиод.
3. Нахлобучиваем ESP32C3 на контакты модуля реле.

Мои хотелки и их реализация
Раз уж взяли в работу могучую ESP32C3, то почему бы не добавить немного перца. Вот таким был список пожеланий:
— при включении реле сначала подать на HDD напряжение 5В, а через 0,5-1 сек подать 12В
— при выключении реле сначала снять с HDD 12В, а через 0,5-1 сек снять 5В
— Для исключения повреждения диска при случайной подаче команды выключения питания, сделать защитный интервал 30 сек между обработкой команд на включение и выключение реле
— При выключенном реле светодиод отображает статус подключения к Wi-Fi (мигает редко при подключении, светится постоянно когда подключен к сети)
— при включенном реле светодиод моргает часто, показывая состояние записи на диск
Интересно, что для воплощения подобных извращений в Tasmota имеется система команд Berry scripting. При этом готовый скрипт можно поставить в автозагрузку, записав файл autoexec.be в Tools->Manage File System->Uplоad.
Я совсем не программист, и без ChatGPT эту задачу не решил бы. Да и с ним не сразу получилось, но мы все же смогли.
Чтобы вся логика заработала в Home Assistant, добавляем там немного кода в configuration.yaml. После этого можно добавить новую карточку (выключатель) в ваше пространство.
Теперь давайте проверим, как работает этот колхоз Имени 50-летия без урожая.
Для этого в Планировщике задач создана задача с запуском еженедельно. Она запускает довольно большой скрипт (низкий поклон ChatGPT).
В нескольких словах схема такая — Планировщик включает реле через Home Assistant, ожидает появление нового подключенного тома, запускает нужную задачу в Hyper Backup (там стоит галочка размонтировать том после выполнения), проверяет наличие подключенного тома каждые 30сек, при пропадании тома выключает реле.
Вроде бы и несложно, но пришлось решать некоторые неочевидные задачи, например, запуск конкретной задачи Hyper Backup из скрипта.
2. Не стоит умалять достоинств реле. Знаю, как можно управлять нагрузкой с помощью мосфетов. Главный недостаток реле становится достоинством, так как большое время срабатывания реле позволяет избежать коротких импульсов тока в цепях питания HDD при переходных процессах при запуске ESP. К тому же реле мало нагружено, обгорание контактов маловероятно. Скорее всего, короткие выбросы тока при использовании мосфет как переключателя — решаемая проблема, но для данной реализации был выбран самый простой путь.
3. На GPIO9 можно поставить нормально разомкнутую кнопку на землю, она будет работать идентично выключателю в Home Assistant. В моем случае она не востребована.
4. Штатными средствами Tasmota можно легко подключить датчик температуры (например, DS18B20), но считаю это избыточным для HDD, который включается на 15 минут в неделю.
5. Не забывайте делать бекапы всего и вся. Возможно, когда-то это сохранит вам нервы и время.
В моей локальной сети работает сетевое хранилище Synology, а для сохранения бекапов использую внешний карман с eSATA.
Управление питанием этого кармана довольно быстро прошло эволюционный путь, как говорил Остап Ибрагимович Бендер
от крестьянской лошадки до железного коняВозможно, вы найдете здесь что-то полезное для себя.
Сначала была клавиша
Это была обычная клавиша выключения блока питания на корпусе кармана. Держать постоянно включенным шумный и прожорливый жесткий диск — затея непродуктивная, поэтому специально обученный человек по моему звонку делал ВКЛ, а после завершения бекапа по моей команде делал ВЫКЛ.Согласитесь, довольно архаично…
Потом был Matter
Нужно пояснить, что на моем НАС крутится Home Assistant OS, имеющая интеграции со множеством протоколов. Под рукой оказалось готовое внешнее реле «Умная розетка Яндекс с Matter». Все очень просто, поставил его в разрыв питания кармана, добавил интеграцию в Home Assistant, настроил карточку устройства, и все.Специально обученный человек освобожден, и ты сам себе сисадмин — включаешь удаленно карман, бекапишь, выключаешь карман. Казалось бы, живи и радуйся.
Но, при всех усилиях команды Яндекса, эта розетка-реле слегка глючная. Нечасто, но все же она становилась недоступной для управления, и помогала только ее физическая перезагрузка (и да, приходилось звонить тому самому спецобученному человеку).
Ладно, заменил ее на встраиваемое реле Sonoff Basic R4mini с Matter. Стало надежней и веселей. Но тут прилетел другой лебедь (хорошо, что не черный) — мощность встроенного в карман БП оказалась впритык для запуска HDD и изредка он отказывался стартовать. Да и лениво мне стало играть в сисадмина. Руки зачесались сделать что-то иное.
Да будет свет Tasmota
В Home Assistant у меня проброшено с десяток реле и сенсоров на базе ESP8266 и ESP32, самодельных и перешитых фабричных. В большинстве своем эти устройства находятся вне локальной сети. Это очень незамысловатые штуки, которые замечательно работают через протокол MQTT на прошивке Tasmota.Наша идея проста, берем «кубики» и складываем из них «домик»:
— двухканальное реле
— плата для разработчика ESP32C3
— понижающий модуль 12В -> 5В (при наличии блока питания +5/+12 можно было бы обойтись без него)
— токоограничивающий резистор 220 Ом
— светодиод для моргания (а как же без него).

Установка и настройка микропрограммы Tasmota на ESP32C3:
Эта статья не про умные дома, но все же скажу пару слов про настройку Tasmota
1. Идем прямиком на их сайт и загружаем файлы tasmota32.factory.bin и tasmota32c3.bin
2. Подключаем ESP32C3 к компьютеру, запускаем webinstaller
3. Сначала заливаем файл tasmota32.factory.bin. После успешной прошивки ESP создаст wifi точку доступа без пароля с именем вида Tasmota-##########. Нужно к ней подключиться, выбрать в интерфейсе свою домашнюю сеть WiFi и ввести пароль. После этого ESP будет доступна в домашней сети по IP адресу. Запомните адрес, это потребуется для дальнейшей настройки
4. Заходим по уже известному нам IP в интерфейс Tasmota, и обновляем прошивку файлом tasmota32c3.bin
5. Устанавливаем часовой пояс устройства командой в Tools->Console. Команду можно взять тут
6. Настраиваем конфигурацию модуля (Configuration->Module) и MQTT (Configuration->MQTT) и другие (Configuration->Other).
Настройки Tasmota в картинках

Дорабатываем реле:
1. Удаляем желтую перемычку, и аккуратно выпаиваем контактные клеммы возле реле
2. Запаиваем понижающий модуль (разумеется, заранее установив потенциометром на выходе +5В). Тут же изображено, как мы питаем модуль от источника 12В и куда подключаем питание HDD.
3. На нижней стороне платы разводим питание с понижайки на модуль реле

1. Запаиваем гребенку-мама, предварительно удалив из нее два контакта на пинах 0 и 3
2. Запаиваем резистор 220 Ом на пин 6, и два проводочка на светодиод.
3. Нахлобучиваем ESP32C3 на контакты модуля реле.

Мои хотелки и их реализация
Раз уж взяли в работу могучую ESP32C3, то почему бы не добавить немного перца. Вот таким был список пожеланий:
— при включении реле сначала подать на HDD напряжение 5В, а через 0,5-1 сек подать 12В
— при выключении реле сначала снять с HDD 12В, а через 0,5-1 сек снять 5В
— Для исключения повреждения диска при случайной подаче команды выключения питания, сделать защитный интервал 30 сек между обработкой команд на включение и выключение реле
— При выключенном реле светодиод отображает статус подключения к Wi-Fi (мигает редко при подключении, светится постоянно когда подключен к сети)
— при включенном реле светодиод моргает часто, показывая состояние записи на диск
Интересно, что для воплощения подобных извращений в Tasmota имеется система команд Berry scripting. При этом готовый скрипт можно поставить в автозагрузку, записав файл autoexec.be в Tools->Manage File System->Uplоad.
Я совсем не программист, и без ChatGPT эту задачу не решил бы. Да и с ним не сразу получилось, но мы все же смогли.
Содержимое autoexec.be
import mqtt
import string
import gpio
# Глобальная ссылка на экземпляр для колбэков
var g_HDD = nil
class HDDCtrl
# --- поля ---
var TOPIC
var REL1_IDX
var REL2_IDX
var BLOCK_MS
var DELAY_MS
var WAVE_PIN
var HIGH_MS
var LOW_MS
var blocked
var wave_active
var wave_level
var ledlink_taken
var log_level
# публикация/кэш
var _last_payload # последний УСПЕШНО опубликованный payload
var _pending_payload # то, что нужно доставить при первой возможности
# цикл стартовой/отложенной синхронизации MQTT
var SYNC_PERIOD_MS
var SYNC_MAX_TRIES
var _sync_active
var _sync_tries
def init()
# --- настройки ---
self.TOPIC = "hdd_switch"
self.REL1_IDX = 0
self.REL2_IDX = 1
self.BLOCK_MS = 30000 # Задержка между переключением статуса реле (мс)
self.DELAY_MS = 1000 # Задержка между подачей и снятием 5В и 12В (мс)
self.WAVE_PIN = 6 # Пин для индикации
self.HIGH_MS = 250 # Период вкл индикатора при записи (мс)
self.LOW_MS = 250 # Период выкл индикатора при записи (мс)
self.blocked = false
self.wave_active = false
self.wave_level = 0
self.ledlink_taken = false
self.log_level = 0
self._last_payload = ""
self._pending_payload = ""
self.SYNC_PERIOD_MS = 2000 # раз в 2 секунды
self.SYNC_MAX_TRIES = 15 # до 30 сек макс
self._sync_active = false
self._sync_tries = 0
tasmota.add_driver(self)
g_HDD = self
# безопасный старт реле
tasmota.cmd("PowerOnState 0", true)
self.set_power_safe(self.REL1_IDX, false)
self.set_power_safe(self.REL2_IDX, false)
# вернуть GPIO6 системе (LedLink_i)
tasmota.cmd("LedLink 1")
# Команда HDD и подписки MQTT
tasmota.remove_cmd("HDD")
tasmota.add_cmd("HDD", /cmd, idx, payload -> g_HDD.cmd_hdd(cmd, idx, payload))
mqtt.subscribe("cmnd/"+self.TOPIC+"/POWER1",
/topic, idx, data, databytes -> g_HDD.on_cmnd_p1(topic, idx, data, databytes))
mqtt.subscribe("cmnd/"+self.TOPIC+"/POWER2",
/topic, idx, data, databytes -> g_HDD.on_cmnd_p2(topic, idx, data, databytes))
# --- НОВОЕ: стартовая синхронизация до успешной публикации ---
self.request_state_delivery(self.build_state_payload())
end
# ===== утилиты =====
def log(msg, lvl)
if self.log_level >= lvl tasmota.log(msg, lvl) end
end
def set_power_safe(idx, on)
var s = tasmota.get_power()
if s[idx] != on tasmota.set_power(idx, on) end
end
def build_state_payload()
var p = tasmota.get_power()
var overall = p[self.REL1_IDX] && p[self.REL2_IDX]
return "{\"state\":\"" + (overall ? "ON" : "OFF") +
"\",\"r1\":" + (p[self.REL1_IDX] ? "true":"false") +
",\"r2\":" + (p[self.REL2_IDX] ? "true":"false") +
",\"blocked\":" + (self.blocked ? "true":"false") + "}"
end
# ===== надёжная доставка состояния =====
def try_publish(payload)
# Пытаемся отправить. Возвращает true при успехе.
return mqtt.publish("stat/"+self.TOPIC+"/HDDSTATE", payload, true)
end
def request_state_delivery(payload)
# Если новое состояние такое же, как уже успешно опубликованное — ничего не делаем
if payload == self._last_payload
return
end
# Сразу пробуем отправить
if self.try_publish(payload)
self._last_payload = payload
self._pending_payload = ""
self._sync_active = false
self._sync_tries = 0
self.log("HDDCtrl: state published immediately", 4)
else
# MQTT не готов → запомним и запустим цикл синхронизации
self._pending_payload = payload
if !self._sync_active
self._sync_active = true
self._sync_tries = 0
tasmota.set_timer(self.SYNC_PERIOD_MS, /-> g_HDD.sync_tick())
end
end
end
def sync_tick()
if !self._sync_active return end
# Нечего отправлять — выключаемся
if self._pending_payload == ""
self._sync_active = false
self._sync_tries = 0
return
end
# Пытаемся ещё раз
var ok = self.try_publish(self._pending_payload)
if ok
self._last_payload = self._pending_payload
self._pending_payload = ""
self._sync_active = false
self._sync_tries = 0
self.log("HDDCtrl: state published after wait", 2)
else
self._sync_tries += 1
if self._sync_tries < self.SYNC_MAX_TRIES
tasmota.set_timer(self.SYNC_PERIOD_MS, /-> g_HDD.sync_tick())
else
# Дальше не мучаем устройство, но цикл можно будет перезапустить новой request_state_delivery()
self._sync_active = false
self.log("HDDCtrl: giving up MQTT sync for now", 2)
end
end
end
# Публичные интерфейсы публикации
def publish_state_if_changed()
self.request_state_delivery(self.build_state_payload())
end
def publish_state_force()
# Принудительно шлём вне зависимости от кэша
var payload = self.build_state_payload()
# Сбрасываем кэш, чтобы гарантированно ушло при первой возможности
self._last_payload = ""
self.request_state_delivery(payload)
end
def publish_state()
self.publish_state_if_changed()
end
# ===== блокировка =====
def block_start()
self.blocked = true
self.publish_state_if_changed()
tasmota.set_timer(self.BLOCK_MS, /-> g_HDD.block_end())
end
def block_end()
self.blocked = false
self.publish_state_if_changed()
end
# ===== программный меандр на GPIO6 =====
def wave_tick()
if !self.wave_active return end
self.wave_level = 1 - self.wave_level
gpio.digital_write(self.WAVE_PIN, self.wave_level)
self.log(string.format("HDDCtrl: GPIO%d=%d", self.WAVE_PIN, self.wave_level), 4)
var next_ms = (self.wave_level == 1) ? self.HIGH_MS : self.LOW_MS
tasmota.set_timer(next_ms, /-> g_HDD.wave_tick())
end
def ledlink_take()
if !self.ledlink_taken
tasmota.cmd("LedLink 0")
self.ledlink_taken = true
end
end
def ledlink_release()
if self.ledlink_taken
tasmota.cmd("LedLink 1")
self.ledlink_taken = false
end
end
def wave_start()
if self.wave_active return end
self.wave_active = true
self.ledlink_take()
gpio.pin_mode(self.WAVE_PIN, gpio.OUTPUT)
self.wave_level = 0
gpio.digital_write(self.WAVE_PIN, 0)
self.log(string.format("HDDCtrl: start blink 1Hz on GPIO%d", self.WAVE_PIN), 2)
self.wave_tick()
end
def wave_stop()
if !self.wave_active
self.ledlink_release()
return
end
self.wave_active = false
self.wave_level = 0
gpio.digital_write(self.WAVE_PIN, 0)
self.ledlink_release()
self.log(string.format("HDDCtrl: stop blink on GPIO%d", self.WAVE_PIN), 2)
end
# ===== последовательности HDD =====
def start_on_seq()
if self.blocked return end
self.set_power_safe(self.REL1_IDX, true)
self.wave_start()
self.block_start()
tasmota.set_timer(self.DELAY_MS, /-> g_HDD.set_power_safe(self.REL2_IDX, true))
self.publish_state_if_changed()
end
def start_off_seq()
if self.blocked return end
self.set_power_safe(self.REL2_IDX, false)
self.block_start()
tasmota.set_timer(self.DELAY_MS, /-> g_HDD.finish_off_seq())
self.publish_state_if_changed()
end
def finish_off_seq()
self.set_power_safe(self.REL1_IDX, false)
self.wave_stop()
self.publish_state_if_changed()
end
# ===== команда HDD =====
def cmd_hdd(cmd, idx, payload)
var p = payload
if p == nil p = "" end
if self.blocked
self.publish_state_if_changed()
tasmota.resp_cmnd_error()
return
end
if p == "ON" || p == "1" || p == "on"
self.start_on_seq()
tasmota.resp_cmnd_done()
elif p == "OFF" || p == "0" || p == "off"
self.start_off_seq()
tasmota.resp_cmnd_done()
elif p == "TOGGLE" || p == "toggle"
var s = tasmota.get_power()
if !s[self.REL1_IDX] && !s[self.REL2_IDX] self.start_on_seq() else self.start_off_seq() end
tasmota.resp_cmnd_done()
else
tasmota.resp_cmnd_error()
end
end
# ===== перехваты POWER1/2 =====
def on_cmnd_p1(topic, idx, data, databytes)
if self.blocked return true end
var p = (data == nil) ? "" : data
if p == "ON" || p == "1" || p == "on" || p == "TOGGLE" || p == "toggle"
self.start_on_seq()
elif p == "OFF" || p == "0" || p == "off"
self.start_off_seq()
end
return true
end
def on_cmnd_p2(topic, idx, data, databytes)
if self.blocked return true end
var p = (data == nil) ? "" : data
if p == "OFF" || p == "0" || p == "off" || p == "TOGGLE" || p == "toggle"
self.start_off_seq()
end
return true
end
# ===== кнопка =====
def any_key(cmd, idx)
var state = (idx >> 8) & 0xFF # 10 = SINGLE (SetOption73 1)
var device = idx & 0xFF # 1 = Button1
if device == 1 && state == 10
if self.blocked return true end
var s = tasmota.get_power()
if !s[self.REL1_IDX] && !s[self.REL2_IDX] self.start_on_seq() else self.start_off_seq() end
return true
end
return nil
end
# ===== синхронизация питания (внешние изменения) =====
def set_power_handler(cmd, idx)
self.publish_state_if_changed()
var p = tasmota.get_power()
if p[self.REL1_IDX] self.wave_start() else self.wave_stop() end
return nil
end
end
HDDCtrl()
Чтобы вся логика заработала в Home Assistant, добавляем там немного кода в configuration.yaml. После этого можно добавить новую карточку (выключатель) в ваше пространство.
configuration.yaml
mqtt:
switch:
- name: "HDD Switch"
unique_id: hdd_switch_main
command_topic: "cmnd/hdd_switch/HDD"
state_topic: "stat/hdd_switch/HDDSTATE"
value_template: "{{ value_json.state }}"
payload_on: "ON"
payload_off: "OFF"
availability_topic: "tele/hdd_switch/LWT"
payload_available: "Online"
payload_not_available: "Offline"
qos: 1
retain: false
optimistic: false
icon: mdi:harddisk
device:
identifiers: ["hdd_switch_device"] # общий ID устройства
name: "HDD Switch Controller"
manufacturer: "Tasmota"
model: "ESP32-C3 (Tasmota 15.01)"
# suggested_area: "Название вашей области" # опционально
binary_sensor:
- name: "HDD Switch Locked"
unique_id: hdd_switch_locked
state_topic: "stat/hdd_switch/HDDSTATE"
value_template: "{{ 'ON' if value_json.blocked else 'OFF' }}"
device_class: lock
device:
identifiers: ["hdd_switch_device"] # тот же идентификатор
Теперь давайте проверим, как работает этот колхоз Имени 50-летия без урожая.
Доказательство работоспособности
До чего дошёл прогресс — труд физический исчез,
Да и умственный заменит механический процесс.
Позабыты хлопоты, остановлен бег,
Вкалывают роботы, а не человек.
Что осталось недосказанным
Все знают, что является двигателем прогресса. Поэтому приложив еще немного усилий, задачу бекапов удалось полностью автоматизировать.Для этого в Планировщике задач создана задача с запуском еженедельно. Она запускает довольно большой скрипт (низкий поклон ChatGPT).
В нескольких словах схема такая — Планировщик включает реле через Home Assistant, ожидает появление нового подключенного тома, запускает нужную задачу в Hyper Backup (там стоит галочка размонтировать том после выполнения), проверяет наличие подключенного тома каждые 30сек, при пропадании тома выключает реле.
Вроде бы и несложно, но пришлось решать некоторые неочевидные задачи, например, запуск конкретной задачи Hyper Backup из скрипта.
Постскриптум.
1. Электрических схем нет, потому что тут и изображать нечего. Основная задача — показать конструкцию как реализацию концепции.2. Не стоит умалять достоинств реле. Знаю, как можно управлять нагрузкой с помощью мосфетов. Главный недостаток реле становится достоинством, так как большое время срабатывания реле позволяет избежать коротких импульсов тока в цепях питания HDD при переходных процессах при запуске ESP. К тому же реле мало нагружено, обгорание контактов маловероятно. Скорее всего, короткие выбросы тока при использовании мосфет как переключателя — решаемая проблема, но для данной реализации был выбран самый простой путь.
3. На GPIO9 можно поставить нормально разомкнутую кнопку на землю, она будет работать идентично выключателю в Home Assistant. В моем случае она не востребована.
4. Штатными средствами Tasmota можно легко подключить датчик температуры (например, DS18B20), но считаю это избыточным для HDD, который включается на 15 минут в неделю.
5. Не забывайте делать бекапы всего и вся. Возможно, когда-то это сохранит вам нервы и время.
Самые обсуждаемые обзоры
+70 |
3272
121
|
— при выключении реле сначала снять с HDD 12В, а через 0,5-1 сек снять 5В
а эта самодеятельность зачем?
да и тут про контроль наличия ничего не сказано, только про дополнительную задержку.
2) это убивает бэкап по расписанию
Засыпать диски в вашей вселенной всё еще не научились?
standby immediately или sleep immediately. Разумеется, лишь после того, как отмонтируете тома, сделаете sync и сбросите кэши. А то у Вас
«при пропадании тома выключает реле. „
Но это лишь уровень SMB (если у Вас не экспорт iSCSI) на устройстве-клиенте, внутри NAS эти разделы смонтированы и то, что клиент отключил сетевой том, никак на сервер не влияет. Вы вообще это как-то учитываете?
Напоминает мне одну историю из 90ых. В одном серьёзном бюджетном учреждении федерального уровня в СПб уволили сисадмина. У них был сервер с Sun Unix (да-да!), но на ночь все электроприборы отключались. И сервер тоже. Т. к. никто не умел его отключать правильно (даже зайти root-ом и сделать shutdown было некому), то его просто “рубали», а утром кто-то (по графику) приходил на 40 минут раньше и включал его. И он 40 минут «чекал» файловую систему… И так это работало многие месяцы (пока не накрылось совсем).
Что тут неправильно?
Если все ресурсы на диске отмонтированы (а при этом делается sync), то да, это безопасно для данных.
Кстати, автор явным образом обозначил цель — «Держать постоянно включенным шумный и прожорливый жесткий диск — затея непродуктивная». Решение ей полностью соответствует.
Ну, значит я, как всегда, прав :)
Что-что…
колбасу_с_бутербродом… электроэнергиюМожет быть имелся в виду шум от вентилятора? Например, у WD Elements Desktop вентилятор довольно шумный.Хотел было найти информацию об установленном вентиляторе в WD Elements Desktop, но в отзывах пишут, что в нём нет вентилятора. Я был на 200%, что в моём диске шумит вентилятор, т.к. рядом ещё лежит два внешних диска и мини-пк, но слышно только WD Elements Desktop.
Сам NAS хоть и чертовски хорош, но не идеален. Не хочется так думать, но что произойдет с ценными данными в случае его поломки, или при неблагоприятном сценарии с электропитанием?
На NASе настроены и бекапы внутри между томами. Но для меня внешний диск — это «холодный» резерв, которым рискую 15 минут в неделю.
Теперь его питание может быть дёрнуто программно в любой момент 24 * 7.
Я так понимаю, что Вы на внешнем hdd храните свою черную бухгалтерию на неприметной съемной квартире на окраине города?! Иначе смысла в таких извращениях нет
Когда начался кошмаринг с шифровальщиками, я бекапы делал следующим образом:
1. Отключаем основной сервер от интернета и LAN,
2. Проверяем основной сервер антивирусом
3. Включаем и проверяем бекап сервер антивирусом
4. Подаём питание на Switch, который поднимает LAN между основным сервером и бекап сервером.
5. Делаем бекап.
6. Выключаем бекап сервер.
7. Вводим в работу основной сервер.
У меня на NAS куча веб сервисов, которыми я пользуюсь постоянно. Я не хочу отказываться от них, или подменять сторонними облачными услугами
4 таких отдельных НАСА, точно надежнее включения/отключения питания дисков постоянно.
По моему так себе занятие…