GNU/Linux >> Belajar Linux >  >> Linux

Paksa spin-down hard drive eksternal di linux (raspberry pi)

Ya, itu mungkin tetapi akan memerlukan beberapa pekerjaan pengembangan khusus dan tidak sepele dan kodenya akan spesifik untuk chip jembatan USB->SATA DI DALAM enklosur Anda.

Kesepakatannya adalah bahwa jembatan USB berfungsi lebih dari sekadar konverter listrik. HDD yang terpasang USB mengemulasi drive SCSI yang memiliki rangkaian perintah berbeda. Sementara perintah baca/tulis/cari standar menerjemahkan sepanjang waktu, putaran atas/bawah yang lebih eksotis tidak. Kebanyakan chip tidak akan melakukan itu. Selain itu, BUKAN API level chip universal. Jadi, jika saya menulis kode, saya harus memiliki manual pemrograman untuk chip jembatan USB.

Intinya, kecuali Anda memiliki spesifikasi pemrograman pada chip dan terbiasa dengan set instruksi ATA dan SCSI dan mengenkapsulasi perintah pass-through, maka Anda harus melakukannya tanpa. Terlalu banyak pekerjaan dan tidak ada standar.


Sangat mungkin bahwa sinyal yang Anda kirimkan diabaikan. Anda tidak memberikan output dari

sudo hdparm -I /dev/sdX

yang akan memberi tahu kami kemampuan disk, tetapi banyak disk tidak merespons perintah ini.

Untungnya, ada utilitas yang sangat nyaman, hd-idle, yang dapat Anda unduh dari sini, memungkinkan Anda untuk memaksa disk berputar setelah selang waktu tertentu. Program ini telah dikembangkan khusus untuk Debian, (tetapi bekerja pada Linux pada umumnya), sehingga pemasangannya akan sangat mudah bagi Anda. Saya hanya berharap ini juga berfungsi pada arsitektur ARM, sesuatu yang tidak dapat saya uji.

Sunting:itu mengkompilasi dan menginstal dengan benar di raspbian.


Saya tidak beruntung dengan hd-idle; itu berjalan tetapi tidak berfungsi. Saya akhirnya menulis skrip di bawah ini:

#!/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

Linux
  1. Perintah gema Linux

  2. echo Contoh Perintah di Linux

  3. Proses latar belakang di linux

  1. Menggunakan kekuatan di baris perintah Linux

  2. Apa yang dilakukan % di string shell Linux?

  3. Paksa lalu lintas IP lokal ke antarmuka eksternal

  1. Cara memaksa instalasi mode teks Redhat Linux

  2. Paksa reboot server Linux jarak jauh

  3. linux shell wc -c hitung karakter +1