hd-idle
hd-idle은 Linux에서 일정 시간 I/O가 없던 HDD에 spin-down 명령을 보내는 daemon형 utility다.
Summary
/proc/diskstats를 관찰해 disk activity를 판단하고 기본 600초 동안 유휴 상태인 disk를 정지한다.- USB enclosure 같은 SCSI layer 장치뿐 아니라 최신 재구현에서는 ATA command와 안정적인 device symlink도 지원한다.
- SSD와 NVMe의 절전 설정 도구가 아니며, 자주 spin up/down하면 HDD 수명과 응답 시간에 악영향을 줄 수 있다.
Installation
Debian / Ubuntu
배포판 repository의 package를 설치한다.
sudo apt update sudo apt install hd-idle
Fedora
Fedora repository의 package를 설치한다.
sudo dnf install hd-idle
RHEL
지원되는 RHEL 계열에서는 EPEL repository를 활성화한 뒤 package를 설치한다. EPEL 활성화 절차는 RHEL major version과 조직 정책에 맞춰 먼저 확인한다.
sudo dnf install hd-idle
hd-idle -h와 man hd-idle로 실제 지원 option을 확인한다.
Source build
배포판 package 대신 upstream 재구현을 build해야 할 때 사용한다. Go 1.16 이상과 build tool이 필요하다.
git clone https://github.com/adelolmo/hd-idle.git cd hd-idle make
macOS / Windows
hd-idle은 Linux의 /proc/diskstats와 Linux storage interface에 의존한다. 공식 Homebrew formula나 Windows winget package는 제공되지 않으므로 설치 명령을 제시하지 않는다.
설치 확인
hd-idle에는 별도 version option이 없을 수 있으므로 실행 경로와 help를 확인한다. 인자 없이 실행하면 daemon이 시작될 수 있다.
command -v hd-idle hd-idle -h
Usage
sudo hd-idle [options]
hd-idle [OPTIONS]: disk activity 감시 시작hd-idle -i IDLE_SECONDS: 기본 idle timeout 설정hd-idle -a DEVICE -i IDLE_SECONDS: 특정 disk의 timeout 설정hd-idle -t DEVICE: 지정 disk를 즉시 spin down하고 종료
-a의 device selector와 option 적용 순서가 중요하다. 먼저 -i 0으로 기본 spin-down을 끈 뒤 명시한 disk에만 timeout을 주는 방식이 안전하다.
Options
Disk 선택과 timeout
-a NAME: 뒤따르는 disk별 option의 대상 지정. device name이나/dev/disk/by-id/symlink를 사용할 수 있다.-i SECONDS: 현재 대상의 idle timeout. 첫-a앞에 쓰면 기본값이며0은 자동 spin-down 비활성화다.-s 0|1: symlink를 시작할 때만 해석하거나(0), 성공할 때까지 runtime에도 다시 해석한다(1).
Spin-down command
-c scsi|ata: device를 정지할 API 선택. 기본값은scsi다.-p 0..15: SCSI START STOP UNIT power condition 지정.-I: 이미 정지했다고 판단한 disk에도 spin-down command를 다시 보낸다.-t DISK: 지정 disk를 즉시 정지하고 종료한다.
0을 사용하면 access만으로 다시 시작되지 않을 수 있다. SAS에서는 vendor 문서와 현재 package manual을 확인하고 -p 2(idle) 또는 -p 3(standby) 같은 값을 신중히 검증한다.
Logging과 진단
-l LOGFILE: spin cycle 상세 log file 지정.-d: debug message를 stdout/stderr에 출력한다.-h: usage 출력 후 종료한다.
Examples
대상 disk 확인
lsblk -o NAME,MODEL,SERIAL,SIZE,TYPE,MOUNTPOINTS ls -l /dev/disk/by-id/
/dev/sdX 이름은 boot나 연결 순서에 따라 바뀔 수 있으므로 가능하면 확인된 /dev/disk/by-id/ symlink를 사용한다.
선택한 disk만 10분 후 정지
기본 대상은 비활성화하고 지정한 disk에만 600초 timeout과 ATA command를 적용한다.
sudo hd-idle -i 0 -c ata \ -a /dev/disk/by-id/ata-DEVICE_MODEL_SERIAL -i 600
disk별 timeout 설정
sudo hd-idle -i 0 \ -a /dev/disk/by-id/ata-DISK_A -i 600 -c ata \ -a /dev/disk/by-id/usb-DISK_B -i 1200 -c scsi
Debug 실행
service를 먼저 중지해 중복 process를 피한 뒤 foreground에서 확인한다.
sudo systemctl stop hd-idle sudo hd-idle -d -i 0 -a /dev/disk/by-id/ata-DEVICE_MODEL_SERIAL -i 600 -c ata
Ctrl+Ctrl로 종료한 뒤 service를 다시 시작한다.
Configuration
- Debian/Ubuntu의
/etc/default/hd-idle, Fedora/EPEL의/etc/sysconfig/hd-idle, systemd 적용 및 검증은 config를 참고한다. - package별 option 차이가 있으므로 configuration에 넣기 전에 현재 설치본의
hd-idle -h와man hd-idle을 확인한다.
Troubleshooting
Disk가 정지하지 않음
/proc/diskstats가 존재하고 대상 disk의 counter가 계속 증가하는지 확인한다.- filesystem, indexing, backup, polling service가 주기적으로 I/O를 발생시키는지 조사한다.
- upstream 재구현은
smartmontools같은 disk monitoring tool과 함께 사용할 수 없다고 경고한다. SMART polling이 disk를 깨우는지 service schedule을 확인한다. - USB bridge가
scsi또는atacommand를 전달하는지-ddebug output으로 확인한다.
Device name이 바뀜
/dev/sda 대신 /dev/disk/by-id/ symlink를 사용한다. hot-plug 뒤 symlink가 늦게 생기는 환경에서는 최신 재구현의 -s 1을 검토한다.
LUKS 또는 device mapper activity가 감지되지 않음
최신 upstream 재구현은 partition과 device mapper 수준의 activity 계산을 지원한다. 해당 기능이 없는 original package라면 버전 계열 차이를 확인한다.
Log 때문에 다른 disk가 깨어남
-l log file이 HDD에 있으면 다른 disk event를 기록하는 과정에서 log disk가 깨어날 수 있다. SSD, SD card 또는 system journal처럼 대상 HDD와 분리된 위치를 사용한다.
Compatibility
- Linux 전용이며
/proc/diskstats가 없으면 동작하지 않는다. - upstream Go 재구현과 original 1.05 계열은 option과 device handling 기능이 다르다.
- Debian stable의 package는 현재 1.21 계열이며, Fedora/EPEL은 1.05 계열 package를 제공할 수 있다.
-c,-p,-s,-I또는 symlink runtime 처리 같은 기능을 사용하기 전에 설치된 binary의 help와 manual을 기준으로 판단한다.- NVMe와 SSD에는 적용하지 않는다.
Help
hd-idle -h (upstream Go reimplementation)
usage()를 옮긴 것이다. 배포판 package, 특히 original 1.05 계열에서는 실제 출력과 지원 option이 다를 수 있다.
See Also
History
- codex:: 2026-08-10 Added installation, safe disk selection, options, examples, troubleshooting, compatibility, and upstream help guidance.