บังคับให้หมุนฮาร์ดไดรฟ์ภายนอกลงบน linux (raspberry pi)


16

ขณะนี้ฉันกำลังตั้งค่าโฮมเซิร์ฟเวอร์โดยใช้ Raspberry Pi กับฮาร์ดดิสก์ภายนอกที่เชื่อมต่อผ่าน usb อย่างไรก็ตามฮาร์ดไดรฟ์ของฉันจะไม่หมุนลงเมื่อไม่มีการใช้งาน

ฉันลองใช้คำแนะนำที่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 dual Ports USB 3.0 HDD docking station
  • Western Digital WD10EZRX Green 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 สีน้ำเงินของฉันหมุนลงมาทันทีเมื่อไม่ได้ใช้งาน อะไรคือ intervall ที่เหมาะสมสำหรับ cron ในการเรียกใช้สคริปต์ในความคิดของคุณ? ฉันเรียกมันว่าทุก ๆ 15 นาทีในตอนนี้
Tarator

5

ใช่มันเป็นไปได้ แต่จะต้องมีการพัฒนาที่กำหนดเองและไม่น่ารำคาญและรหัสจะเป็นเฉพาะกับ USB-> SATA bridge chip ภายในของตู้ของคุณ

ข้อตกลงคือสะพาน USB ทำหน้าที่เป็นมากกว่าการแปลงทางไฟฟ้า HDD ที่ต่อกับ USB จะจำลองไดร์ฟ SCSI ซึ่งมีชุดคำสั่งต่างกัน ในขณะที่คำสั่งอ่าน / เขียน / ค้นหามาตรฐานแปลตลอดเวลาที่การหมุนขึ้น / ลงที่แปลกใหม่ไม่ทำ ชิปส่วนใหญ่จะไม่ทำเช่นนั้น นอกจากนี้ยังไม่มี API ระดับชิปสากล ดังนั้นถ้าฉันเขียนรหัสฉันจะต้องมีคู่มือการเขียนโปรแกรมสำหรับชิปบริดจ์ USB

บรรทัดล่างยกเว้นว่าคุณมีการเขียนโปรแกรมเฉพาะบนชิพและคุ้นเคยกับชุดคำสั่ง ATA และ SCSI และการห่อหุ้มคำสั่งการส่งผ่านคุณจะต้องทำโดยไม่ต้องทำ ทำงานมากเกินไปและไม่มีมาตรฐาน


5

เป็นไปได้อย่างสิ้นเชิงว่าสัญญาณที่คุณส่งนั้นถูกละเลย คุณไม่ได้ให้ผลลัพธ์ของ

sudo hdparm -I /dev/sdX

ซึ่งจะบอกความสามารถของดิสก์ให้เราทราบ แต่ดิสก์จำนวนมากไม่ตอบสนองต่อคำสั่งเหล่านี้

โชคดีที่มียูทิลิตีที่สะดวกมากคือ hd-idle ซึ่งคุณสามารถดาวน์โหลดได้จากที่นี่ช่วยให้คุณสามารถบังคับให้ดิสก์หมุนหลังจากที่เวลาผ่านไปตามที่กำหนด โปรแกรมได้รับการพัฒนาโดยเฉพาะสำหรับ Debian (แต่มันทำงานบน Linux โดยทั่วไป) เพื่อให้การติดตั้งนั้นง่ายสำหรับคุณมาก ฉันแค่หวังว่ามันจะทำงานบนสถาปัตยกรรม ARM ซึ่งเป็นสิ่งที่ฉันไม่สามารถทดสอบได้

แก้ไข: มันรวบรวมและติดตั้งอย่างถูกต้องในราสเบียน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.