Linux에서 외부 하드 드라이브 강제 종료 (Raspberry Pi)


16

현재 USB를 통해 연결된 외부 하드 디스크와 함께 Raspberry Pi를 사용하여 홈 서버를 설정하고 있습니다. 그러나 유휴 상태 일 때 하드 드라이브가 회전하지 않습니다.

나는 raspberrypi.org에 제공된 힌트를 이미 시도했지만 ... 성공하지 못했습니다.

1.)

sudo hdparm -S5 /dev/sda

보고

/dev/sda:
 setting standby to 5 (25 seconds)
SG_IO: bad/missing sense data, sb[]:  70 00 04 00 00 00 00 0a 00 00 00 00 44 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

2.)

sudo hdparm -y /dev/sda

보고

/dev/sda:
 issuing standby command
SG_IO: bad/missing sense data, sb[]:  70 00 04 00 00 00 00 0a 00 00 00 00 44 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

... 그리고 3.)

sudo sdparm --flexible --command=stop /dev/sda

보고

/dev/sda: HDD         1234

... 드라이브의 스핀 다운없이.

다음 하드웨어를 사용합니다.

  • Inateck FDU3C-2 듀얼 포트 USB 3.0 HDD 도킹 스테이션
  • Western Digital WD10EZRX 녹색 1TB

전송 된 스핀 다운 신호가 덮어 쓰기 / 분실 / 무시 될 수 있습니까?


1
업데이트 : 언급 된 Inateck 도킹 스테이션에는 하드 드라이브를 복제하여 HDD에 대한 마스터 / 소스 및 슬레이브 / 싱크 포트를 제공하는 기능이 있습니다. HDD를 슬레이브 포트에 꽂을 때 위에서 언급 한 명령을 운동하십시오. 이로 인해 마스터 포트에 대한 스핀 다운 누락 문제가 제한됩니다.
user258346

1
이것이 해결책이라고 생각하면 자신의 해결책을 받아 들여야합니다. 코니는 보일지 모르지만 같은 문제를 가진 미래의 독자들에게 유용합니다.
MariusMatutiae

1
물론 스크립트에서 사용하는 명령이 작동하지 않은 것과 동일하다는 것을 알고 있습니까? hdparm -y / dev / sda ...
MariusMatutiae

답변:


4

나는 hd-idle과 운이 없었습니다. 실행되었지만 작동하지 않았습니다. 아래 스크립트를 작성했습니다.

#!/bin/bash
# This script looks for recent disk access, and if nothing has changed, puts /dev/"drive" into spindown mode.
# This should be used only is the hdparm power management function is not working.
# Call this script with cron or manually as desired
#
#
#
# Change which drive this script looks at by changing the drive variable below:
drive="sda"
#
#
current=`date`
caller=$(ps ax | grep "^ *$PPID" | awk '{print $NF}')
filename="/tmp/diskaccess.txt"
if [ -f "$filename" ]; then
    stat_old=`cat "$filename" | tr -dc "[:digit:]"`
    stat_new=`cat /sys/block/"$drive"/stat | tr -dc "[:digit:]"`
    if [ "$stat_old" == "$stat_new" ]; then
        stat="0"
        echo "The disk hasn't been used; spinning down /dev/$drive"
        echo $stat_old
        hdparm -y /dev/$drive > /dev/null
    else
        stat="1"
        echo $stat_old
        echo $stat_new
        echo "The drive has been used..."
        echo $stat_new > $filename
    fi
else
    echo "/tmp/diskaccess.txt file does not exist; creating it now."
    echo $stat_new > $filename
fi
echo $stat " - " $drive " - " $current " - by: " $caller >> /tmp/diskaccesslog.txt

4
나는 효과 hdparm -y가 없다고 생각 했다.
Cristian Ciupitu

고마워, 완벽하게 작동합니다. 사용하지 않을 때 내 WD 파란색 하드 디스크가 회전합니다. cron이 스크립트를 호출하는 합리적인 간격은 무엇입니까? 지금은 15 분마다 호출합니다.
Tarator

5

예, 가능하지만 약간의 사용자 정의 개발 작업이 필요하며 사소한 것이 아니며 코드는 인클로저의 USB-> SATA 브리지 칩에만 적용됩니다.

거래는 USB 브리지가 전기 변환기 이상의 역할을한다는 것입니다. USB 연결 HDD는 다른 명령 세트가있는 SCSI 드라이브를 에뮬레이트합니다. 표준 read / write / seek 명령은 항상 더 이국적인 스핀 업 / 다운에서는 번역하지 않습니다. 대부분의 칩은 그렇게하지 않습니다. 또한 범용 칩 레벨 API는 없습니다. 따라서 코드를 작성하면 USB 브리지 칩에 대한 프로그래밍 매뉴얼이 있어야합니다.

결론은 칩에 프로그래밍 관련 사항이없고 ATA 및 SCSI 명령어 세트와 패스 스루 명령을 캡슐화하지 않는 한하지 않아도된다는 것입니다. 작업이 너무 많고 표준이 없습니다.


5

보내는 신호가 무시 될 수 있습니다. 의 출력을 제공하지 않았습니다

sudo hdparm -I /dev/sdX

디스크 기능을 알려주었지만 많은 디스크가 이러한 명령에 응답하지 않습니다.

운 좋게도 여기 에서 다운로드 할 수 있는 매우 편리한 유틸리티 인 hd-idle이 있습니다. 이 기능을 사용하면 지정된 시간이 지나면 디스크를 강제로 종료 할 수 있습니다. 이 프로그램은 데비안을 위해 특별히 개발되었지만 (일반적으로 Linux에서 작동) 설치가 매우 쉽습니다. 테스트가 불가능한 ARM 아키텍처에서도 작동하기를 바랍니다.

편집 : raspbian에서 올바르게 컴파일하고 설치합니다.

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