絖綛 N@i.jp  昨日:00044692
 今日:00004081
 総計:00390364
keywords
管理者専用
  Post   Add link   Control Panel 































新しいトピック
最新:04/16 19:55


新しいコメント
最新:07/28 16:47






管理人へMAIL

プライバシーポリシー

ReadyNAS RN10200のファン制御スクリプト

サーバやNASに厳しい季節になってきました


 まだ梅雨は明けていないのですが、晴れの日の気温は30度を超えるようになってきました。エアコンがなければ、室温は40度近くに達していることでしょう。24時間運転のサーバやNASにとっては厳しい季節です。
 ReadyNAS RN10200は実家で24時間運転させているので、当然ながらエアコンなどの空調など何もない部屋で稼働しています。そこで温度をモニタしてみたら、デフォルトのファン制御では殆ど無負荷状態でも日中はCPU温度が65〜70度、HDD温度が45〜50度くらいになってしまうようです。RN10200は、このくらいの温度ではあまりファンの回転数を上げてくれないようですね。
 そこでCPU温度は60度前後に、HDD温度は40度くらいになるよう、もっと積極的にファンの回転数を上げてやろうと思い、NETGEARのフォーラムの記事などを参考にして、こんなスクリプトを作成してみました。

#!/bin/bash

INTERVAL=180
DEVICE="/dev/sda"
TEMP_KEYWORD="Temperature_Celsius"
PWM="/sys/devices/platform/mv64xxx_i2c.0/i2c-0/0-003e/pwm1"
CPU="/sys/devices/platform/axp-temp.0/temp1_input"
FAN_SPEED="/sys/devices/platform/mv64xxx_i2c.0/i2c-0/0-003e/fan1_input"

FAN_MIN=75      # 
FAN_SLOW=95     #   780 RPM
FAN_NORMAL=128  #   960 RPM
FAN_FAST=186    # 1,780 RPM
FAN_FASTER=208  # 2,600 RPM
FAN_FULL=255    # 3,600 RPM

HDDTEMP_MIN=36
HDDTEMP_SLOW=38
HDDTEMP_NORMAL=40
HDDTEMP_FAST=42
HDDTEMP_FASTER=44
HDDTEMP_MAX=46

CPUTEMP_MIN=52
CPUTEMP_SLOW=56
CPUTEMP_NORMAL=58
CPUTEMP_FAST=61
CPUTEMP_FASTER=63
CPUTEMP_MAX=66

function CalcFanPER {
    TEMP_CPU_RANGE=$(expr $CPUTEMP_MAX - $CPUTEMP_MIN)
    TEMP_CPU_REL=$(expr $CPU_TEMP - $CPUTEMP_MIN)
    TEMP_CPU_REL=$(expr $TEMP_CPU_REL * 100)
    TEMP_CPU_PER=$(expr $TEMP_CPU_REL / $TEMP_CPU_RANGE)
    if [ $TEMP_CPU_PER -lt 0 ]; then
        TEMP_CPU_PER=0
    fi
    if [ $TEMP_CPU_PER -gt 100 ]; then
        TEMP_CPU_PER=100
    fi

    TEMP_HDD_RANGE=$(expr $HDDTEMP_MAX - $HDDTEMP_MIN)
    TEMP_HDD_REL=$(expr $HDD_TEMP - $HDDTEMP_MIN)
    TEMP_HDD_REL=$(expr $TEMP_HDD_REL * 100)
    TEMP_HDD_PER=$(expr $TEMP_HDD_REL / $TEMP_HDD_RANGE)
    if [ $TEMP_HDD_PER -lt 0 ]; then
        TEMP_HDD_PER=0
    fi
    if [ $TEMP_HDD_PER -gt 100 ]; then
        TEMP_HDD_PER=100
    fi
}

function CalcSpeed {
    if [ $TEMP_CPU_PER -gt $TEMP_HDD_PER ]; then
        NEW_PER=$TEMP_CPU_PER
    else
        NEW_PER=$TEMP_HDD_PER
    fi
    NEWPWM=$(expr $FAN_FULL - $FAN_MIN)
    NEWPWM=$(expr $NEWPWM * $NEW_PER)
    NEWPWM=$(expr $NEWPWM / 100)
    NEWPWM=$(expr $NEWPWM + $FAN_MIN)
}

while true; do
    CPU_TEMP=`cat $CPU`
    HDD_TEMP=`smartctl -A $DEVICE | grep $TEMP_KEYWORD | awk '{ print $10 }'`
    SPEED=`cat $FAN_SPEED`
    CalcFanPER
    CalcSpeed
    echo $NEWPWM > $PWM
    echo `date`, CPU:${CPU_TEMP}(${TEMP_CPU_PER}%), HDD:${HDD_TEMP} (${TEMP_HDD_PER}%), PWM:${NEWPWM}, FanSpeed:${SPEED}rpm

    sleep $INTERVAL
done

注)¥マークは実際には半角のバックスラッシュ(\)
 まだ実験段階なので、システムにインストールするのではなく、

# nohup fan_control.sh &

という具合に動かしておいて、CPUやHDDの温度の変動がどの程度になるか調べてみました。その結果が以下です。

 RN10200のデフォルトのファン回転数制御では、せいぜい700〜900rpm程度だったのが 1,000rpm以上になってしまいましたが、何とか狙った温度付近で、変動も少なくできているようです。夜間はファンの回転数はあまり上がりませんが、さすがに日中はファンの回転数が高くなります。最も室温が高くなっていると思われる午後2時から4時頃は1,600rpm程にまで上がってしまっていますね。
 まぁ、まだ実験段階ですから、色々と調整の余地があるでしょう。HDDの温度はもう少し下げたいように思いますし、ファンの回転数も緩やかに上げ下げできたら良いかも。


< 過去の記事 [ 7月の 全てのカテゴリ リスト ] 新しい記事 >

2014 calendar
7月
12345
6789101112
13141516171819
20212223242526
2728293031


掲示板
最新:08/15 17:19


GsBlog was developed by GUSTAV, Copyright(C) 2003, Web Application Factory All Rights Reserved.