대기시 HDD 전원 켜기 : 회전 방지


4

내 Linux Mint 17.1 시스템에서 백업을 위해 Western Digital WD20EZRX HDD를 사용하고 있습니다. 전력 소비를 최소화하고 드라이브 내구성을 늘리기 위해 HDD를 정상적으로 사용하고 싶습니다. 스펀 다운 대기 상태에 있고 명시 적으로 필요할 때만 회전 할 수 있습니다.

이것은 두 가지 방법으로 달성 될 수 있습니다 : 사소한 접근법은 HDD를 수동으로 대기 모드로 설정하는 것입니다. hdparm -y /dev/sdb. 그러나 단점은 드라이브가 시작 중에 스크립트에 의해 다시 잠자기 상태가 될 때까지 회전하는 것입니다. 그러므로 나는 운전을하게하고 싶다. 대기 모드에서 전원 켜기 , 푸시 처음으로 회전하는 것을 방지합니다.

일부 WD 드라이브는 PUIS를 지원하지만 PM2 , 전원 관리 2 모드 Western Digital. 이 기능은에서 ​​설명한대로 점퍼를 사용하여 활성화됩니다. 이 WD 기술 자료 문서 . 이 구성의 결과는 다음을 사용하여 확인할 수 있습니다. hdparm:

# hdparm -I /dev/sdb | grep "Power-Up In Standby"
   *    Power-Up In Standby feature set

그러나 Grub 시작 화면이 표시되기 전에 부팅하는 동안 드라이브가 계속 회전합니다. 이것은 연결된 모든 HDD에서 운영 체제를 찾고있는 잘못 구성된 부트 로더 일 수 있습니까?


PUIS는 HDD의 초기 전원 공급을 차단하지 않지만 사용하지 않을 때는 HDD가 절전 모드로 전환되고 OS가 HDD 전원을 다시 켜야 만 그렇지 않으면 드라이브 오류를 시뮬 레이팅하고 OS는 대기 상태가됩니다. 절대로 오지 않을 파일에. 나는 정확한 세부 사항을 확신하지 못한다. 처음에는 그것이 작동 할 때처럼 작동하지 않는다. 또한 이것을 HDD의 플래그로 설정할 수 있습니다. 점퍼를 통해서만 작동하는 것은 아닙니다.
JFA

답변:


2

몇 년 전, Linux Mint와 가끔 데이터 저장 용으로 만 사용되었던 오래된 HD에서 정확한 것을 찾아 보았습니다.

내가 찾은 솔루션 (링크가 더 이상 필요하지 않음)은 발견 한 것과 같습니다. 조금 하드 드라이브에는 점퍼 설정이있을 수 있습니다. 할까요 부팅 할 때 드라이브가 잠자는 동안 / 멈추지 않게하십시오. 그러나 그것은 작동하지 않았고, 나의 결과는 당신과 똑같은 것이었고, 부팅시 여전히 회전합니다. 필자는 BIOS / GRUB / Linux, 개별적으로 또는 함께 작업 중이거나 청취하지 않은 HD 자체 만 알고 있기 때문에 수정 사항을 찾지 못했습니다.

나는 그랬다. "핫 플러그"/ "핫 스왑" 테스트, 컴퓨터가 켜졌을 때 (SATA) 하드 드라이브에 전원을 연결 & amp; 달리는. 일부 로그 항목이 생성되었습니다 (dmesg & amp; /var/log/syslog ) 및 성공적으로 일했다 . 그런 다음 드라이브를 완료하면 (동기화, 마운트 해제, 절전 / hdparm -y ) 전원을 다시 뽑습니다. 일했다! 하지만 그것은 분명히 호환 마더 보드 & amp; 운영 체제, 그래서 YMMV.

그러나 드라이브를 사용하기 위해 전원 플러그를 당기는 것은 그리 쉽지가 않아서 더블 폴 단발 스위치를 배선했습니다. DPST, Wikipedia는 다이어그램을 가지고 있습니다. - 2 개의 별도 전원 선 (12V 및 5V?)에 4 개의 단자가있어 별도의 전원을 켜고 동시에 켜고 끌 수 있습니다. 그것을 HD의 전원에 연결하면 & amp; 필요할 때마다 드라이브에서 분리하십시오.

최신 정보:

핫 스와핑 익숙한 Linux Mint 14/15/16에서 작동하지만 어떤 이유로 17 & amp; 위로, 나는 그것을 막은 커널 변경을 추측하고있다. 이제 하드 드라이브를 핫 스와핑하면 작동하지만 드라이브는 다음과 같이 읽습니다. 손상된 , 전원 켜기 재부팅 만 성공적으로 작동합니다. 어쩌면 다시 작업하게하는 쉬운 방법이있을 수도 있고, 일부 특수 스위치로 재 컴파일 된 커널이 필요할 수도 있습니다 ...?

업데이트 2

Ubuntu 16.04에서 핫 스와핑이 다시 작동합니다 (Mint 18 역시 작동해야 함).


3

리눅스 커널이 드라이브를 회전시킵니다. drivers / ata / libata-core.c (커널 소스 코드)에서 다음 행을 살펴보십시오.

if (!tried_spinup && (id[2] == 0x37c8 || id[2] == 0x738c)) {
    tried_spinup = 1;
    /*
     * Drive powered-up in standby mode, and requires a specific
     * SET_FEATURES spin-up subcommand before it will accept
     * anything other than the original IDENTIFY command.
     */
    err_mask = ata_dev_set_feature(dev, SETFEATURES_SPINUP, 0);
    if (err_mask && id[2] != 0x738c) {
        rc = -EIO;
        reason = "SPINUP failed";
        goto err_out;
    }
    /*
     * If the drive initially returned incomplete IDENTIFY info,
     * we now must reissue the IDENTIFY command.
     */
    if (id[2] == 0x37c8)
        goto retry;
}

이 행을 주석 처리하고 커널을 재 컴파일하면 드라이브가 회전하지 않습니다. 그런 다음, hdparm이 PUIS를 비활성화 할 때 드라이브를 회전시키는 것과 같이 그들을 회전시키는 명령이 필요합니다. 이것 좀 봐 링크.

그것이 내가 푸시에 대해 아는 전부입니다.

편집하다: 나는 당신의 드라이브가 GRUB 화면 전에 스핀 업하는 것을 보았습니다 : 이것은 마더 보드가 드라이브를 회전시키고 있음을 의미합니다. BIOS / UEFI 구성에서 해당 sata 포트를 사용 불가능으로 설정 한 후 다시 시도해 볼 수 있습니다. 작동중인 경우, 드라이브는 커널이 회전 할 때까지, grub 화면 이후, 사용자 로그인 프롬프트 전에 계속 남아있을 것이며 dmesg에서 찾을 수 있습니다

ataX.00: failed to IDENTIFY (SPINUP failed, err_mask=0x4)
ataX.00: revalidation failed (errno=-5)
ataX: SATA link up 6.0 Gbps (SStatus 133 SControl 300)

이 시점에서 커널을 해킹하면 이전에 설명한 것처럼 드라이브가 전혀 회전하지 않습니다.

편집 2 : 나는 디스크를 회전시키는 더 좋은 명령을 발견했다 :

sg_sat_set_features --feature=7 /dev/sdX

sg3_utils 패키지의 일부이며 루트 권한이 필요하지만 디스크를 멋지게 회전합니다. arch Linux 포럼에서 업데이트 된 게시물 , 그것은 지금 내 마지막 해결책이다. 그 게시물의 작은 요약 :

  • 부트 로더 화면 전에 PUIS 사용 가능 디스크가 스핀 업되면 해당 sata 포트를 비활성화하거나 PCI-ex sata를 시도하십시오 컨트롤러 카드
  • PUIS 상태에서 디스크를 회전시키는 명령을 비활성화하려면 커널을 다시 컴파일하십시오
  • sg_sat_set_feature를 사용하여 디스크를 회전시킵니다.
  • 파티션에 액세스하려면 sata 포트를 다시 스캔하십시오.

이것은 매우 유익합니다. 내가 뭘하고 싶은건 헤드리스 리눅스 서버를 NAS로 사용하는 것이지만, S3 대기 모드로 들어가서 깨어나서 하드 드라이브를 뽑지 않을 것입니다. 귀하의 제안은 저를 그렇게 멀리 할 수 ​​있습니다. 그러나 실제로 sg_sat_set_features 명령을 수동으로 실행할 필요없이 실제로 액세스 할 때 시스템이 드라이브를 회전시키고 싶습니다. 그러나 필요시 자동으로 그렇게하십시오. 어떤 제안? 감사.
onlinespending

랩톱에서 작동하는 것처럼 보이지만 가치보다는 문제가 될 수 있습니다 ...
Michael
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.