Почему диски не засыпают в TrueNAS?
Представь, что ты настроил энергосбережение в TrueNAS, но диски упорно продолжают вращаться 24/7. Это не только увеличивает счёт за электричество, но и сокращает срок службы HDD. Давай разберемся, почему не засыпают диски в truenas и как это исправить.
Основные причины включают: активные службы, настройки APM/ALPM, ZFS активность, SMART тесты и фоновые процессы.
Шаг 1: Диагностика активности дисков
Первым делом нужно понять, что именно мешает дискам заснуть. Используй эти команды для мониторинга активности.
1.1. Проверка текущей активности ввода-вывода
# Просмотр активности всех дисков
iostat -x 2
# Проверка конкретного диска (например, ada0)
iostat -x ada0 2
# Альтернативный способ с gstat
gstat -p -I 2s
Обрати внимание на столбцы %busy и r/s, w/s. Если значения больше 0, значит диск активен.
1.2. Поиск процессов, использующих диск
# Установка lsof если нет
pkg install lsof
# Поиск открытых файлов на диске
lsof /dev/ada0
# Или для всего пула
zpool status | grep -E 'ada|da' | awk '{print $1}' | xargs -I {} lsof /dev/{}
Шаг 2: Настройка управления питанием (APM/ALPM)
Правильная настройка APM (Advanced Power Management) и ALPM (Aggressive Link Power Management) критически важна для засыпания дисков.
2.1. Проверка текущих настроек APM
# Просмотр информации о дисках
camcontrol identify ada0 | grep -i apm
# Или используй smartctl
smartctl -i /dev/ada0 | grep -A5 -B5 "APM"
2.2. Установка значений APM
Значения APM обычно от 1 до 255, где:
- 1-127: Энергосбережение (меньше = агрессивнее)
- 128: Баланс производительности и энергосбережения
- 129-254: Максимальная производительность
- 255: Отключение APM
# Включение APM с агрессивным энергосбережением (значение 1)
camcontrol apm ada0 -l 1
# Проверка установленного значения
camcontrol apm ada0 -v
# Для постоянной настройки добавь в /etc/rc.local
echo 'camcontrol apm ada0 -l 1' >> /etc/rc.local
2.3. Настройка ALPM для SATA
# Проверка текущего состояния ALPM
sysctl dev.ahci.0.alpm
# Включение агрессивного режима
sysctl dev.ahci.0.alpm=3
# Для постоянного применения добавь в /etc/sysctl.conf
echo 'dev.ahci.0.alpm=3' >> /etc/sysctl.conf
Шаг 3: Оптимизация ZFS для энергосбережения
ZFS по умолчанию настроен на производительность, что может мешать засыпанию дисков.
3.1. Настройка параметров ZFS
# Уменьшение времени кэширования метаданных
zfs set primarycache=metadata poolname/dataset
# Отключение предварительного чтения (может помочь)
zfs set prefetch=off poolname
# Настройка асинхронных операций
zfs set sync=disabled poolname/dataset # Только для некритичных данных!
3.2. Управление снапшотами и скрабингом
# Проверка расписания скрабинга
zpool status -v poolname
# Изменение расписания через WebUI или cron
# Перенеси скрабинг на активное время суток
Шаг 4: Отключение мешающих служб
Некоторые службы TrueNAS могут создавать фоновую активность.
4.1. Проверка и управление службами
| Служба | Влияние на диски | Рекомендация |
|---|---|---|
| S.M.A.R.T. тесты | Периодическая активность | Настрой расписание на дневное время |
| Обновление каталогов | Фоновая индексация | Увеличи интервалы обновления |
| Репликация | Постоянная активность | Настрой на конкретные часы |
| Ведение журналов | Постоянная запись | Перенаправь на SSD или RAM |
# Временное отключение SMART тестов
smartctl -s off /dev/ada0
# Проверка активных cron заданий
crontab -l
# Просмотр системных демонов
service -e | grep -E '(smart|rsync|periodic)'
Шаг 5: Использование скриптов для мониторинга
Создай собственный скрипт для мониторинга и управления засыпанием дисков.
5.1. Скрипт проверки активности
#!/bin/bash
# Мониторинг активности дисков и принудительное засыпание
DISKS="ada0 ada1 ada2"
IDLE_TIME=300 # 5 минут бездействия
for disk in $DISKS; do
# Проверяем активность за последнюю секунду
ACTIVITY=$(iostat -x $disk 1 2 | tail -1 | awk '{print $12}')
if (( $(echo "$ACTIVITY < 1" | bc -l) )); then
echo "Диск $disk неактивен, проверяем время бездействия..."
# Здесь можно добавить логику принудительного сна
camcontrol sleep $disk
else
echo "Диск $disk активен ($ACTIVITY% busy)"
fi
done
Часто задаваемые вопросы (FAQ)
Почему диски просыпаются без видимой причины?
Частые причины: фоновые SMART тесты, обновление каталогов медиа-серверов (Plex, Emby), сетевые сканеры (NMAP), ARP запросы, или даже LED индикация на контроллере.
5.2. Автоматический скрипт управления
#!/bin/bash
# Автоматическое управление питанием дисков
LOGFILE="/var/log/disk_sleep.log"
DISKS=$(sysctl -n kern.disks)
for disk in $DISKS; do
if [[ $disk == ada* ]] || [[ $disk == da* ]]; then
# Проверяем время бездействия
IDLE=$(iostat -x $disk | tail -1 | awk '{print $12}')
if (( $(echo "$IDLE > 95" | bc -l) )); then
echo "$(date): Putting $disk to sleep" >> $LOGFILE
camcontrol sleep $disk
fi
fi
done
Шаг 6: Аппаратные решения
Иногда проблема кроется на аппаратном уровне.
6.1. Проверка контроллера и кабелей
- Некоторые RAID/HBA контроллеры не поддерживают должным образом засыпание дисков
- Попробуй переключить диск на другой порт SATA
- Проверь кабели — плохой контакт может вызывать постоянные реконнекты
6.2. Совместимость дисков
Некоторые модели HDD (особенно enterprise-класса) могут игнорировать команды сна. Проверь спецификации диска.
Часто задаваемые вопросы (FAQ)
Как проверить, спит ли диск на самом деле?
Используй команду smartctl -n standby /dev/ada0. Если вернёт "Device is in STANDBY mode" — диск спит. Также можно послушать — спящие диски не издают звуков вращения.
Можно ли заставить диски засыпать в RAIDZ?
В RAIDZ все диски должны быть активны для любых операций. Если один диск спит, система разбудит весь массив. Для энергосбережения лучше использовать отдельные диски или mirror vdevs.
Как настроить засыпание через WebUI TrueNAS?
В TrueNAS Core перейди в Storage → Disks, выбери диск и настрой Advanced Power Management. В TrueNAS Scale аналогичные настройки находятся в Storage → Disks.
Почему SSD тоже не засыпают?
SSD по-другому управляют питанием. У них нет механических частей, но могут быть активны фоновые процессы: TRIM, сборка мусора, выравнивание износа. Проверь настройки Device Settings для SSD.
Заключение
Решение проблемы, когда не засыпают диски в truenas, требует комплексного подхода. Начни с диагностики активности, затем настрой APM/ALPM, оптимизируй ZFS и отключи мешающие службы.
Помни: идеального решения не существует. Баланс между энергосбережением и производительностью — это искусство. Начни с малого: настрой один диск, протестируй, затем масштабируй на всю систему.
Главное — регулярный мониторинг и понимание, что в твоей конкретной системе создает нагрузку. Удачи в оптимизации!