У меня есть рейд ZFS с двумя дисками. Хоумсервер работает 24/7 и диски тоже. Поэтому я хотел бы перевести их в режим ожидания после некоторого простоя. В нескольких сообщениях рекомендуется проверить это с помощью параметра -C
# hdparm -y /dev/sda
/dev/sda:
issuing standby command
# hdparm -C /dev/sda
/dev/sda:
drive state is: standby
# hdparm -C /dev/sda
/dev/sda:
drive state is: standby
# hdparm -C /dev/sda
/dev/sda:
drive state is: active/idle
. Я перезапускаю команду hdparm -C /dev/sda
каждую секунду. Почему диск проснулся через несколько секунд? Я остановил все приложения, обращающиеся к этому диску (это не диск ОС). И с помощью fatraceя не смог найти ни одной операции ввода-вывода. И я также попробовал этот обходной путь ядра, а затем перезагрузку правил, что должно избежать пробуждения диска с помощью hdparm
.
Кроме того, я попробовалsmartctl -i -n standby /dev/sda |grep "^Power mode"
. Кажется, это пробуждает диск при втором запуске.
# hdparm -y /dev/sda
/dev/sda:
issuing standby command
# smartctl -i -n standby /dev/sda|grep "^Power mode"
# smartctl -i -n standby /dev/sda|grep "^Power mode"
Power mode is: ACTIVE or IDLE
Диск /dev/sda
представляет собой диск WD Red 8 ТБ:
# smartctl -i /dev/sda
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.41-1-pve] (local build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Model Family: Western Digital Red
Device Model: WDC WD80EFZX-68UW8N0
Serial Number: xxx
LU WWN Device Id: 5 000cca 263c7a3f7
Firmware Version: 83.H0A83
User Capacity: 8,001,563,222,016 bytes [8.00 TB]
Sector Sizes: 512 bytes logical, 4096 bytes physical
Rotation Rate: 5400 rpm
Form Factor: 3.5 inches
Device is: In smartctl database [for details use: -P show]
ATA Version is: ACS-2, ATA8-ACS T13/1699-D revision 4
SATA Version is: SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is: Sat May 30 09:41:56 2020 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
Я использую Proxmox, так что это дистрибутив на основе Debian с Debian Buster. (10).
hd-idle
Я попробовал hd-idle, но диск не перешел в режим ожидания. Поскольку в журналах не было записей, я выполнил его вручную с флагом отладки
hd-idle -i 0 -a /dev/sda -i 120 -l /var/log/hd-idle.log -d
. Это показало увеличение количества чтений при каждой проверке
probing sda: reads: 12760648, writes: 3174104
probing sda: reads: 12763720, writes: 3174104
probing sda: reads: 12765256, writes: 3174104
probing sda: reads: 12766792, writes: 3174104
Я ожидаю, что вообще не будет чтений, как описано в это сообщение в блоге (это для RPI, но я думаю, что это не имеет отношения здесь).Большая часть программного обеспечения работает в контейнерах Docker, поэтому я остановил демон, но чтение продолжается. В настоящее время существует только одна виртуальная машина Proxmox. Он расположен на системном SSD, поэтому не может вызывать чтения.
Проблема была вызвана службой pvestatd
. :Она собирает информацию о состоянии, такую как загрузка ЦП, использование диска и другие данные, отображаемые в веб-интерфейсе. Согласно Proxmox, это применимо только к хранилищу, сконфигурированному в /etc/pve/storage.cfg
. Я больше не настраивал там пул ZFS, но раньше он был там. Кажется, это заставляет pvestatd
все еще сканировать тот пул, который будит мои диски.
Чтобы исправить это, мне нужно исключить устройства в /etc/lvm/lvm.conf
. В global_filter
есть фильтр, где я применил "r|/dev/sda"
для каждого диска. r
означает, что этот диск исключен из проверки.
После перезагрузки диски, как и ожидалось, перешли в режим ожидания.