« samba3.0+libiconvパッチ | メイン | 温度+ファン回転数+電源電圧 »
2006年02月13日
HDDスタンバイ
TeraStation
HDDの表面温度と経年数からHDDの故障する確率を算出するHDD故障確率測定器というサイトを見つけました。
・・・うちのTeraStationは使ってないときでも全開でHDDが回っているのでかなり不安です。
とりあえず使ってないときはHDDを停止してもらうことにしました。
以下内容を/etc/init.d/hdparmとして保存します。
#!/bin/sh
# set stop time for hdd spindle moter
if [ -x /sbin/hdparm ] ; then
/sbin/hdparm -S 800 /dev/hda > /dev/null
/sbin/hdparm -S 800 /dev/hdc > /dev/null
/sbin/hdparm -S 800 /dev/hde > /dev/null
/sbin/hdparm -S 800 /dev/hdg > /dev/null
fi
echo "40 500 0 0 1000000 1000 60 20 0" > /proc/sys/vm/bdflush
で、スーパーユーザーにて以下コマンドを実行します。
cd /etc/rc.d/rc3.d/;ln -s ../init.d/hdparm S99hdparm
cronにて各プログラムが分散して起動するように設定されていますので、0時頃に集中して起動するように/etc/crontabを以下のように変更します。
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
00 0 * * * root /etc/cron.d/mailnotice
01 0 * * * root /etc/cron.d/logrotate
02 0 * * * root /etc/cron.d/calib_time.sh
03 0 * * * root /etc/cron.d/ntpdate
04 0 * * * root /etc/cron.d/scheduler
#* * * * * root /etc/cron.d/progchk
これで40分アクセスが無ければHDDの回転が止まります。
。。。。が、しばらくすると動き始めてしまいます。
どうやらprint daemonが原因のようです。
もしプリンタを接続していない場合は以下コマンドによりprint daemonを停止してください
cd /etc/rc.d/rc3.d/;rm S60lprng
プリンタを接続している場合は以下ファイルにて/mnt/array1/spool以下ディレクトリをスプールとして使うように設定されているので/var以下のramdiskなどを使用するように修正してください。
- /etc/printcap
- /etc/smb.conf
もっと厳密にHDDを停止する場合は/etc/init.d/checkroot.shを太字のように修正するとHDDの停止する期間が長くなります。但し立ち上げるたびにログがクリアされます。
#
# checkroot.sh Check to root file system.
#
# Version: @(#)checkroot.sh 2.78-4 25-Jun-2000 miquels@cistron.nl
#
# chkconfig: S 10 0
#
. /etc/default/rcS
#
# Set SULOGIN in /etc/default/rcS to yes if you want a sulogin to be spawned
# from this script *before anything else* with a timeout, like SCO does.
#
[ "$SULOGIN" = yes ] && sulogin -t 30 $CONSOLE
#
# Activate the swap device(s) in /etc/fstab. This needs to be done
# before fsck, since fsck can be quite memory-hungry.
#
if [ "$FSCKSWAP" != no ]
then
if [ -x /sbin/swapon ]
then
mount -n /proc
if ! grep -qs resync /proc/mdstat
then
[ "$VERBOSE" != no ] && echo "Activating swap..."
swapon -a 2> /dev/null
fi
umount -n /proc
fi
fi
#
# Ensure that bdflush (update) is running before any major I/O is
# performed (the following fsck is a good example of such activity :).
#
[ -x /sbin/update ] && update
#
# Read /etc/fstab.
#
exec 9>&0 rootmode=rw
rootopts=rw
rootcheck=yes
devfs=
while read fs mnt type opts dump pass junk
do
case "$fs" in
""|\#*)
continue;
;;
esac
[ "$type" = devfs ] && devfs="$fs"
[ "$mnt" != / ] && continue
rootopts="$opts"
[ "$pass" = 0 ] && rootcheck=no
case "$opts" in
ro|ro,*|*,ro|*,ro,*)
rootmode=ro
;;
esac
done
exec 0>&9 9>&-
#
# Check the root file system.
#
if [ -f /fastboot ] || [ $rootcheck = no ]
then
[ $rootcheck = yes ] && echo "Fast boot, no file system check"
else
#
# Ensure that root is quiescent and read-only before fsck'ing.
#
mount -n -o remount,ro /
if [ $? = 0 ]
then
if [ -f /forcefsck ]
then
force="-f"
else
force=""
fi
if [ "$FSCKFIX" = yes ]
then
fix="-y"
else
fix="-a"
fi
echo "Checking root file system..."
fsck -C $force $fix /
#
# If there was a failure, drop into single-user mode.
#
# NOTE: "failure" is defined as exiting with a return code of
# 2 or larger. A return code of 1 indicates that file system
# errors were corrected but that the boot may proceed.
#
if [ $? -gt 1 ]
then
# Surprise! Re-directing from a HERE document (as in
# "cat << EOF") won't work, because the root is read-only.
echo
echo "fsck failed. Please repair manually and reboot. Please note"
echo "that the root file system is currently mounted read-only. To"
echo "remount it read-write:"
echo
echo " # mount -n -o remount,rw /"
echo
echo "CONTROL-D will exit from this shell and REBOOT the system."
echo
# Start a single user shell on the console
/sbin/sulogin $CONSOLE
reboot -f
fi
else
echo "*** ERROR! Cannot fsck root fs because it is not mounted read-only!"
echo
fi
fi
#
# If the root filesystem was not marked as read-only in /etc/fstab,
# remount the rootfs rw but do not try to change mtab because it
# is on a ro fs until the remount succeeded. Then clean up old mtabs
# and finally write the new mtab.
#
mount -n -o remount,$rootopts /
if [ "$rootmode" = rw ]
then
rm -f /etc/mtab~ /etc/nologin
: > /etc/mtab
mount -f -o remount,$rootopts /
mount /proc
[ "$devfs" ] && grep -q '^devfs /dev' /proc/mounts && mount -f "$devfs"
else
mount -n /proc
fi
#
# Make ramdisk, and mount /mnt2/ram.
# extract /var directory.
#
#mkfs.ext2 /dev/ram0 > /dev/null 2>&1
#mount -t ext2 /dev/ram0 /mnt/ram
#sync
mount -t tmpfs -o mode=1777,size=15m /dev/shm /mnt/ram
tar xvpzf /root/.files/ramdiskimg.tar.gz -C /mnt/ram > /dev/null 2>&1
sync
## VAR/log is symbolic link
#rm -rf /var/log
#ln -s /usr/log /var/log
#[ -d /usr/log ] || mkdir -p /usr/log
[ -d /var/log ] || mkdir -p /var/log
[ -d /var/spool/lp ] || mkdir -p /var/spool/lp
chmod 777 /var/spool/lp
#
# clear ifstate files
#
cat /dev/null > /etc/network/ifstate
これで今年の夏は乗り切ってくれるでしょうか。
投稿者 tattsuu : 2006年02月13日 23:16
トラックバック
このエントリーのトラックバックURL:
http://tattsuu.com/mt/mt-tb.cgi/39
» Tylenol 3. from Tylenol recall 2006.
Tylenol and alcohol. Tylenol sinus. Tylenol murders. Tylenol recall. 1000 sch... [続きを読む]
トラックバック時刻: 2007年11月10日 13:13