USB HDD を接続/マウントする。
手順:
- USB ポートに USB HDD を接続する。
- USB HDD を 確認。
sudo fdisk -l
で、USB HDD が接続されていることを確認する。
(出力例)
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 40079087 40077040 19.1G 83 Linux - USB HDD のフォーマットを行う。(必要ならば)
1) パーティションの設定を行う。
sudo fdisk /dev/sdb
コマンド
d : パーティション削除
p : 現在の状態を確認
n : パーティション作成
w : 書き込み
2) ext4 でフォーマットを行う。
sudo mkfs.ext4 /dev/sdb1 - マウントする。
1) マウントポイントを作る。
sudo mkdir /mnt/hdd2
sudo chmod 777 /mnt/hdd2
2) UUID を確認
sudo blkid /dev/sdb1
3) fstab にマウント設定を追加
sudoedit /etc/fstab
で、
UUID="**********" /mnt/hdd2 ext4 defaults,nofail 0 0
を追加 (********** は、確認した UUID)
4) リブートする
sudo reboot - 一定時間アクセスが無い場合にスピンダウンする。
1) スピンダウン用のソフトウェアをインストールする。(2種)
sudo apt-get install sdparm
sudo apt-get install hdparm
(hdparm は既にインストール済みだった)
2) どちらのコマンドでスピンダウンするか確認する。
sudo sdparm -r --command=stop /dev/sdb1
sudo hdparm -y /dev/sdb1
のどちらでスピンダウンするか確認する。
—— 今回は、sdparm の方しかスピンダウンしなかった。
3) スピンダウンのコマンドを常駐化させる。
3-1) スクリプトファイルを作成する。
下記の内容のスクリプトファイルを /root/hdd_spindown.sh で作成し、
/root/hdd_spindown.shのパーミッションを700に変更する。
sudoedit /root/hdd_spindown.sh#!/bin/sh if [ $# -lt 2 ]; then echo "not enough arguments supplied." echo "hdd_spindown.sh [UUID] [INTERVAL]" exit 0 fi disk=`findfs UUID="$1"` interval=$2 count=$interval up=1 if [ -z $disk ]; then #echo "findfs error" exit 1 fi disk=`echo "$disk" |sed -e "s@/dev/@@"` state=`grep " $disk " /proc/diskstats` while [ true ]; do sleep 10 count=$(($count-10)) newstate=`grep " $disk " /proc/diskstats` if [ "$state" = "$newstate" ]; then if [ $count -lt 0 ]; then count=$interval if [ $up = 1 ]; then #echo -e "spin-down" sync state=`grep " $disk " /proc/diskstats` #次のどちらかを記述 # hdparmを利用するとき hdparm -y /dev/$disk > /dev/null 2>&1 # sdparmを利用するとき sdparm --command=stop -r /dev/$disk > /dev/null 2>&1 up=0 fi fi else #echo -e "drive is up" count=$interval state="$newstate" up=1 fi done
sudo chmod 700 /root/hdd_spindown.sh
3-2) マウントされている対象のデバイスのUnit名を確認する
systemctl list-units| grep -F .mount
3-3) /lib/systemd/system/user_hdd2_spindown.service を下記の内容で作成
sudoedit /lib/systemd/system/user_hdd2_spindown.service
[Unit] Description=hdd spindown by sdparm After=(先ほど、確認したUnit名) [Service] ExecStart=/root/hdd_spindown.sh (USBHDDのUUID) (直近のアクセスからスピンダウンまでの時間(秒)) > /dev/null 2>&1 KillMode=process Type=simple Restart=no [Install] WantedBy=multi-user.target
3-4) スクリプトが起動時に動作するように設定
sudo systemctl enable user_hdd2_spindown.service
0 件のコメント:
コメントを投稿