HDD 스핀 다운 시간을 어떻게 제어 할 수 있습니까?


71

PC에 2 개의 HDD가 있습니다. 우분투는 약 15 분 후에 보조 HDD를 매우 빨리 끄고 있습니다. 이번에는 제어해야합니다. 내가 어떻게 해?

그놈 전원 관리를 시도했지만 유용하지 않았습니다.

답변:


67

를보십시오 hdparm.

에서 수동 ( man hdparm명령 행에서) :

-S 드라이브의 대기 (스핀 다운) 시간 초과를 설정합니다. 이 값은 드라이브에서 전력을 절약하기 위해 스핀들 모터를 끄기 전에 대기 시간 (디스크 활동없이)을 결정하는 데 사용됩니다. 이러한 상황에서는 대부분의 드라이브가 훨씬 빠르지 만 드라이브가 후속 디스크 액세스에 응답하는 데 30 초가 걸릴 수 있습니다.

시간 종료 값의 인코딩은 다소 독특합니다. 값이 0이면 "시간 초과가 비활성화 됨"을 의미합니다. 장치가 자동으로 대기 모드로 들어 가지 않습니다. 1에서 240 사이의 값은 5 초의 배수를 지정하여 5 초에서 20 분의 시간 초과를 생성합니다. 241에서 251 사이의 값은 30 분에서 1에서 11까지 30 분에서 5.5 시간으로 제한 시간을 지정합니다. 252 값은 21 분의 시간 초과를 나타냅니다. 값 253은 공급 업체 정의 시간 종료 기간을 8 시간에서 12 시간 사이로 설정하며 값 254는 예약되어 있습니다. 255는 21 분 + 15 초로 해석됩니다. 일부 구형 드라이브는 이러한 값에 대한 해석이 매우 다를 수 있습니다.

그래서 sudo hdparm -I /dev/sdb | grep level예를 들어 현재의 스핀 다운 값을 표시합니다 :

Advanced power management level: 254

매뉴얼에서 : 254는 예약되어 있으므로 우분투의 기본값이 될 것으로 기대합니다 (누군가는 이것을 확인 / 확장 할 수 있습니까?)

예:

sudo hdparm -S 25 /dev/sdb = 25 * 5 초 후 스핀 다운

sudo hdparm -S 245 /dev/sdb = (245-240) * 30 분 후 스핀 다운


팁에 대한 감사 Rinzwind, 그것은 많이 도움이되었지만 나는 우분투의 다음 릴리스에서 이것에 대한 GUI를 참조하거나 그놈 전원 관리자에 통합 될 수 있기를
바랍니다

4
lzap의 답변에 관해서 grep는 APM ( -Bparm) 에 대한 것처럼 보이지만 스핀 다운에 대해 이야기 -S하십시오. APM에 대해서도 알고 있습니까?
turbo

3
현재 -B설정이 위에 표시된대로 표시됩니다. 현재 -S설정을 어떻게 볼 수 있습니까?
SabreWolfy 2016 년

5
sudo hdparm -y /dev/sdb는 짐승을 즉시 죽인다
siamii

1
@SabreWolfy 나는 별도의 질문으로 물었습니다 : 현재 드라이브 스핀 다운 시간을 어떻게 알 수 있습니까?
ændrük

46

디스크 유틸리티-> HDD 드라이브 선택-> 오른쪽 상단 모서리에있는 "추가 작업 ..."아이콘을 클릭-> 드라이브 설정 ...

광산은 다음과 같습니다 스크린 샷


6
훨씬 쉽게 감사합니다! (BTW 패키지 당신은 당신이 인이없는 경우 설치해야합니다 gnome-disk-utility.
게르하르트 버거

리눅스가는 길! +1
neu-rah

예, 매우 쉽습니다. 여기에 다행입니다.
Zzzach ...

@ 레이 유어, 대단해! 나는 기본적으로 외장 HDD에서 작동하기를 희망하지 않았지만 그렇게했습니다!
UTF-8

1
대부분의 팁에 오류가 발생하기 쉬운 파일 편집 또는 콘솔 작업이 포함되어 있고 이와 같은 사용자 친화적 인 도구가 이미 종료 된 이유는 무엇입니까?
WooYek

29

hdparm의 설정을 crontab에 추가하는 대신 재부팅 사이에 지속적으로 설정하려면을 사용하십시오 /etc/hdparm.conf. 나는 소문자가 아닌 대문자 S의 사용에 주목한다.

command_line {
    hdparm -S 25 /dev/disk/by-uuid/f6c52265-d89f-43a4-b03b-302c3dadb215 
}

UUID를 대신하여 해당 줄을 추가하거나 /dev/sdX형식을 사용하여 장치를 지정할 수도 있습니다 . 명령을 사용하여 디스크의 UUID를 찾을 수 있습니다 sudo blkid.


3
command_line요즘 사용하는 것이 맞 습니까? 내 다른 예가 /etc/hdparm있습니까?
Dim

1
Ondra Žižka의 답변 은 최신 정보 인 것 같습니다.
Raphael

9
  1. 디스크의 UUID를 찾으십시오 .

    sudo lsblk --output NAME,FSTYPE,LABEL,UUID,MODE
    
  2. 편집하다 /etc/hdparm.conf

    sudo -H gedit /etc/hdparm.conf  # Be careful from now on
    
  3. spindown-time또는 디스크 설정 섹션을 찾으십시오 .

    /dev/disk/by-label/4TB {
        spindown_time = 1200
    }
    
  4. 다른 설치에서도 동일하게 유지되는 UUID로 디스크를 참조하는 것이 좋습니다 (HW 자체에서 변경하지 않는 한).

    /dev/disk/by-uuid/91e32677-0656-45b8-bcf5-14acce39d9c2 {
        spindown_time = 1200
    }
    
  5. init 스크립트가 부팅 문제를 일으키는 경우 nohdparm 커널 명령 행을 전달 하면 스크립트가 실행되지 않습니다.


해당 매개 변수의 단위는 무엇입니까?
detly

IIRC, 몇 초입니다. 또는 "10보다 작 으면 수십 초, 100보다 작 으면 몇 분"과 같은 엄격한 규칙을 가진 매개 변수 일 수 있습니다. 찾아야 겠어
Ondra Žižka

2
그것은 단위가 아닙니다, 이것을 확인하십시오 : wiki.archlinux.org/index.php/Hdparm
Ondra Žižka

건배, 어떤 이유로 나는 그것을 찾을 수 없었습니다 man hdparm.conf.
detly

man hdparm.conf간접적으로 값이 전달되었다는 것을 읽습니다. -S따라서 255 미만의 값은 최상위 답변의 규칙과 호환되어야합니다 . 더 자세한 정보는 환영합니다.
dma_k

8

몇 시간과 몇 시간을 보낸 후 WDC 드라이브가 idle3 속성 값 (google : idle3ctl)에 관계없이 hdparm -S 명령을 지원하지 않는 것을 발견했습니다. WD 드라이브의 일반적인 문제입니다. 그러나 hd-idle ( http://hd-idle.sourceforge.net/ )이 완벽하게 작동 한다고 발표하게되어 기쁩니다 . dpkg 빌드 패키지에서 설치하면 (설치 정보 참조) 데비안과 데비안에서 데몬을 생성합니다 (config는 / etc / default / hd-idle에 있습니다). 최대 절전 모드에서 다시 시작한 후에도 잘 작동합니다.

mc 기본값 # ps aux | grep hd-idle | grep -v grep | 컷 -c 66-; [ad]에서 f에 대해; hdparm -C / dev / sd $ f | grep -v "^ $"; 끝난
/ usr / sbin / hd-idle -i 1800 -a sdc -i 600 -a sdd -i 60 -l /var/log/hd-idle.log
/ dev / sda :
 드라이브 상태 : 활성 / 유휴
/ dev / sdb :
 드라이브 상태 : 대기
/ dev / sdc :
 드라이브 상태 : 대기
/ dev / sdd :
 드라이브 상태 : 대기



5

Samsung HD204UI의 스핀 다운 동작은 APM 수준 ( hdparm -B) 에 따라 다릅니다 . APM 수준이 127 인 경우 스핀 다운 시간 초과는 10 초입니다. APM 수준이 150 인 경우 스핀 다운 시간 초과는 -S옵션으로 정의됩니다 .


hdparm은 -S옵션을 설정할 수는 있지만 얻을 수는 없습니다 ( 디스크 스핀 다운 시간 결정 방법 참조 ). "디스크"GUI 소프트웨어를 사용하십시오. 스크린 샷으로 다른 답변 을 참조하십시오 .
KrisWebDev

5

나는 다음과 같은 것을 추가한다 :

@reboot sudo hdparm -S244 /dev/disk/by-uuid/71492809-e463-41fa-99e2-c09e9ca90c8e  > /dev/null 2> /dev/null

루트의 crontab에. uuid를 사용하는 것이 좋습니다 . 재부팅 할 때마다 sda/ sdb등이 변경되는 것처럼 보입니다.


10
왜 사용하지 hdparm.conf않습니까?
ændrük

3

우분투 14.04에서

디스크> 드라이브 하이라이트> 오른쪽 상단 모서리에있는 기어 클릭> 드라이브 설정> 이제 사용하기 쉬운 GUI에 대기, APM, AAM 및 쓰기 캐시 설정이 있습니다!


이 작업을 어떻게 수행합니까? 나는 이것을 설정하고 다시 부팅하면 드라이브의 전원이 꺼져 야한다는 것을 기억했지만 결코 그렇지 않습니다. hdparm -C는 항상 활성화되어 있으며 명령 줄에서 hdparm -S xxx 만 실행하면 작동합니다.
dan carter

1
"디스크"는 어디에 있습니까?
nealmcb

1

데비안에서 WD 드라이브를 사용하면 hdparm -S로 레벨을 설정 하면 드라이브가 후속 hdparm -I 에서 레벨 254를 반환합니다 . 그래서 나는 그들이 회전하고 있는지 확실하지 않습니다. 나는 그들이 여전히 회전하고 있다고 생각합니다.

이 드라이브는 서버 배열에 있으며, 실제로 드라이브가 다운되는 것을 원하지 않습니다. 과거에는 크론 작업을 설정하여 몇 분마다 파일을 업데이트 하여이 문제를 해결했습니다.


1

USB 인클로저에 장착 된 외장 HDD의 hdparm을 사용하여 운이 없었습니다 .minidlna로 미디어를 제공하는 데 사용합니다.

나는 여기에서 아이디어를 발견했다 : https://serverfault.com/questions/562738/keeping-usb-backup-drive-from-sleeping-while-mounted

디스크 UUID를 사용하면 최상의 결과를 얻을 수 있습니다.

sudo blkid

다음 방법은 루트 액세스가 필요하지만 hdparm도 필요합니다. crontab을 사용하여 5 분마다 드라이브에서 임의 블록을 읽고 모든 메시지를 무시합니다. 올바른 UUID가 있는지 확인하려면 다음과 같이 명령 행에서 테스트하십시오 (원하는 UUID가 아닌 원하는 UUID를 사용해야 함).

sudo dd if=/dev/disk/by-uuid/f01df4b5-6865-476a-8d3b-597cbd886d41 of=/dev/null count=1 skip=$RANDOM

다음과 같은 출력이 표시되어야합니다.

1+0 records in
1+0 records out
512 bytes copied, 0.000738308 s, 693 kB/s`

어딘가에 작성 될 수있는이 메시지를 억제하기 위해 / 파일 시스템 (내 경우에는 SSD에 있음)은 루트 crontab에서 사용하는 것입니다. 당신은 거기에 도착

sudo crontab -e

그런 다음 주석 아래에서

*/5 * * * * bash -c 'dd if=/dev/disk/by-uuid/f01df4b5-6865-476a-8d3b-597cbd886d41 of=/dev/null count=1 skip=$RANDOM' >/dev/null 2>&1

이것이 비슷한 문제를 가진 다른 사람에게 도움이되기를 바랍니다. 불행히도 이것은 여전히 ​​syslog에 기록되지만이를 억제 할 수있는 방법이 있습니다. 이 ServerFault 게시물을 참조하십시오 .

[편집] 2017-01-07 09:02 :

이 행을 변경하기 위해 /etc/rsyslog.d/50-default.conf를 편집하여 이러한 메시지를 억제 할 수있었습니다.

*.*;auth,authpriv.none -/var/log/syslog

이에:

*.*;cron,auth,authpriv.none -/var/log/syslog

불행히도, 이것은 모든 cron 메시지를 억제합니다. cron이 루트 파일 시스템 (내 경우에는 노화 SSD에 있으므로 쓰기를 제한하고 싶습니다)에서 로깅을 리디렉션하도록 할 수는 없지만 이것이 홈 서버이므로 많은 부분을 놓치지 않을 것입니다. 확실히겠습니까 하지 생산 기계를 위해이 전략을 추천한다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.