laptop-modeに再挑戦 その2
/etc/init.d/laptop-mode startしてるのにecho 1 > /proc/sys/vm/block_dumpでpdflushが頻繁に書き込む理由がわからにゃいのでさらにいじる。
にゃんだかflushの間隔は丁度/proc/sys/vm/laptop_mode秒くらい。にゃんじゃこれ・・・
LM_SECONDS_BEFORE_SYNCに0を指定すると何とにゃく理想の動作をしてるように見える・・・・・が、これって/proc/sys/vm/laptop_modeが0、つまりlaptop-modeではにゃくにゃってると思うんだが、いいんかしらん。カーネルのlaptop_modeが>0にゃ場合の挙動、について調べにゃいと困ったちゃんである。
とりあえず問題は棚上げして、/proc/sys/vm/laptop_mode=0で使用。hdparm -SによるSATAドライブの電源制御によってちゃんとディスクが止まる。syslogは全て別PCへ投げ、tmp的書き込みのあるディレクトリはtmpfsへマップすることで、およそシステムがディスクにアクセスすることが無くにゃってきた。やるにゃらramdiskじゃにゃいのかとは思ったが、要するにめんどくさい。
一応外部からのアクセス無しに放っておくと、
kernel: ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x2 frozen
kernel: ata1.00: tag 0 cmd 0xb0 Emask 0x4 stat 0x40 err 0x0 (timeout)
kernel: ata1: soft resetting port
kernel: ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
kernel: ata1.00: configured for UDMA/133
kernel: ata1: EH complete
kernel: SCSI device sda: 976773168 512-byte hdwr sectors (500108 MB)
kernel: sda: Write Protect is off
kernel: sda: Mode Sense: 00 3a 00 00
kernel: SCSI device sda: drive cache: write back
hddtemp[3028]: /dev/sda: Maxtor 7H500F0: 26 C
といったsyslogが投げられてきてた。つまりディスクが止まったところにcronでhddtempが呼ばれて、ディスクの再起動が起きてるの図である。これは分かってやってるので良し。で、他ににゃいって事はずっとディスクは止まってたって事で、実際ディスク温度も室温と等しい。
これにて、そこいらのlinuxでsamba鯖(使わにゃいときはディスク止めてね)が完成〜☆
・・・って要らぬものを作ってしまった。ただのNASやんこれ
以下メモ。全部じゃにゃいし全部やる必要も無い
/etc/laptop-mode/laptop-mode.conf
VERBOSE_OUTPUT=1
ENABLE_LAPTOP_MODE_ON_BATTERY=1
ENABLE_LAPTOP_MODE_ON_AC=1
ENABLE_LAPTOP_MODE_WHEN_LID_CLOSED=0
MINIMUM_BATTERY_CHARGE_PERCENT=3
DISABLE_LAPTOP_MODE_ON_CRITICAL_BATTERY_LEVEL=1
HD="/dev/[hs]d[abcdefgh]"
PARTITIONS="auto /dev/mapper/* /dev/md*"
ASSUME_SCSI_IS_SATA=1
LM_BATT_MAX_LOST_WORK_SECONDS=600
LM_AC_MAX_LOST_WORK_SECONDS=3
CONTROL_READAHEAD=1
LM_READAHEAD=3072
NOLM_READAHEAD=128
CONTROL_NOATIME=0
CONTROL_HD_IDLE_TIMEOUT=1
LM_AC_HD_IDLE_TIMEOUT_SECONDS=600
LM_BATT_HD_IDLE_TIMEOUT_SECONDS=20
NOLM_HD_IDLE_TIMEOUT_SECONDS=7200
CONTROL_HD_POWERMGMT=0
BATT_HD_POWERMGMT=1
LM_AC_HD_POWERMGMT=255
NOLM_AC_HD_POWERMGMT=255
CONTROL_HD_WRITECACHE=0
NOLM_AC_HD_WRITECACHE=1
NOLM_BATT_HD_WRITECACHE=0
LM_HD_WRITECACHE=0
CONTROL_CPU_FREQUENCY=0
BATT_CPU_MAXFREQ=medium
BATT_CPU_MINFREQ=slowest
BATT_CPU_GOVERNOR=ondemand
LM_AC_CPU_MAXFREQ=fastest
LM_AC_CPU_MINFREQ=slowest
LM_AC_CPU_GOVERNOR=ondemand
NOLM_AC_CPU_MAXFREQ=fastest
NOLM_AC_CPU_MINFREQ=slowest
NOLM_AC_CPU_GOVERNOR=performance
CONTROL_CPU_THROTTLING=0
BATT_CPU_THROTTLING=medium
LM_AC_CPU_THROTTLING=medium
NOLM_AC_CPU_THROTTLING=minimum
CONTROL_SYSLOG_CONF=1
LM_AC_SYSLOG_CONF=/etc/syslog-on-ac-with-lm.conf
NOLM_AC_SYSLOG_CONF=/etc/syslog-on-ac-without-lm.conf
BATT_SYSLOG_CONF=/etc/syslog-on-battery.conf
SYSLOG_CONF_SIGNAL_PROGRAM=syslogd
SYSLOG_CONF=/etc/syslog.conf
CONTROL_DPMS_STANDBY=0
BATT_DPMS_STANDBY=300
LM_AC_DPMS_STANDBY=1200
NOLM_AC_DPMS_STANDBY=1200
CONTROL_TERMINAL=0
BATT_TERMINAL_BLANK_MINUTES=1
BATT_TERMINAL_POWERDOWN_MINUTES=2
LM_AC_TERMINAL_BLANK_MINUTES=10
LM_AC_TERMINAL_POWERDOWN_MINUTES=10
NOLM_AC_TERMINAL_BLANK_MINUTES=10
NOLM_AC_TERMINAL_POWERDOWN_MINUTES=50
ENABLE_AUTO_HIBERNATION=0
HIBERNATE_COMMAND=/usr/sbin/hibernate
AUTO_HIBERNATION_BATTERY_CHARGE_PERCENT=2
AUTO_HIBERNATION_ON_CRITICAL_BATTERY_LEVEL=1
CONTROL_START_STOP=1
CONTROL_MOUNT_OPTIONS=1
LM_DIRTY_RATIO=80
NOLM_DIRTY_RATIO=40
LM_DIRTY_BACKGROUND_RATIO=1
NOLM_DIRTY_BACKGROUND_RATIO=10
DEF_UPDATE=5
DEF_XFS_AGE_BUFFER=15
DEF_XFS_SYNC_INTERVAL=30
DEF_XFS_BUFD_INTERVAL=1
DEF_MAX_AGE=30
XFS_HZ=100
LM_SECONDS_BEFORE_SYNC=0
/etc/syslog-on-ac-with-lm.conf
*.* @192.168.1.2
*.emerg *
/etc/default/syslogd
SYSLOGD="-m 0"
/etc/samba/smb.conf
log level = 0
/etc/crontab
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
5 7 * * * root xfs_fsr
1 1,7,13,19 * * * root ntpdate pool.ntp.org 192.43.244.18 >/dev/null
1 1,7,13,19 * * * root /root/hddtemp.sh
/root/hddtemp.sh
#!/bin/bash
t=40
d=/dev/sda
if [ `hddtemp -n $d` \> $t ] ; then hddtemp $d | mail root ; fi
d=/dev/sdb
if [ `hddtemp -n $d` \> $t ] ; then hddtemp $d | mail root ; fi
d=/dev/sdc
if [ `hddtemp -n $d` \> $t ] ; then hddtemp $d | mail root ; fi
d=/dev/sdd
if [ `hddtemp -n $d` \> $t ] ; then hddtemp $d | mail root ; fi
/etc/fstab
proc /proc proc defaults 0 0
/dev/md2 / reiserfs noatime,user_xattr 0 1
/dev/md1 /boot ext3 noatime 0 2
/dev/md6 /home reiserfs noatime,user_xattr,acl 0 2
/dev/md5 none swap sw 0 0
/dev/hda /media/cdrom0 udf,iso9660 user,noauto 0 0
tmpfs /tmp tmpfs defaults,size=350m 0 0
tmpfs /var/cache/samba tmpfs defaults,size=350m 0 0
tmpfs /var/spool/exim4 tmpfs defaults,size=350m 0 0
tmpfs /var/log/samba tmpfs defaults,size=350m 0 0
tmpfs /var/log/exim4 tmpfs defaults,size=350m 0 0
tmpfs /var/lock tmpfs defaults,size=350m 0 0
tmpfs /var/mail tmpfs defaults,size=350m 0 0
tmpfs /var/opt tmpfs defaults,size=350m 0 0
tmpfs /var/run/samba tmpfs defaults,size=350m 0 0
tmpfs /var/run/exim4 tmpfs defaults,size=350m 0 0
port multiplierで5台接続にゃRAID5アレイ上で、read x7 write x3 を4時間ほど放置しといたら、ブザーが鳴って1玉failした。
これでも電源はまともだと思いたいので、
RAIDカードか
port multiplier基板、ていうかどう考えても後者、といった感じにゃのだがどうしたものか。
もとよりお遊びで期待してにゃいとはいえ、これで安定してりゃ結構使い物ににゃるだけに惜しい。PM基板を使わにゃいのが一番だと思うが、う〜んん、どうしたものかにゃぁ・・・・・・
とりあえず一度電源落として再起動してリビルド数時間待つと元通り動くんだが、この頻度で落ちるのは使っちゃダメだねー
16kでML115が買えちゃって、ディスク4台までにゃら安定稼働しちゃうので、iSCSIにして遊ぶとかいう手もあるにゃぁ、みたいにゃ。多分普通にsambaにしたほうが便利に違いにゃいけども。