Ubuntu 10.04 – Shutdown時のSSD Flush

Ubuntu 10.04を未だに使っているんですけど、以前からたまに起動したタイミングでfsがdirtyな状態と判断されてfsckが走ってたので、ちょっと変更してみたのでその覚書。

# hdparm -i /dev/sda
/dev/sda:

 Model=SAMSUNG, FwRev=AXM77D1Q, SerialNo=S0NBNEAB700082
 Config={ Fixed }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4
 BuffType=unknown, BuffSize=0kB, MaxMultSect=1, MultSect=1
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=250069680
 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes: pio0 pio1 pio2 pio3 pio4
 DMA modes: mdma0 mdma1 mdma2
 UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6
 AdvancedPM=no WriteCache=enabled
 Drive conforms to: ATA/ATAPI-7 T13 1532D revision 1: ATA/ATAPI-2,3,4,5,6,7

* signifies the current active mode

見ての通り、HarddiskでのWrite Cacheがenableになっているため、猛烈に速いubuntuのshutdownにWrite cacheのflushが間に合ってないんじゃないかな?というのが予想。

で、どうやって対処しようか迷ったんですが、umountfsの直前にWrite CacheをDisableにする初期化スクリプトを仕込んでみた。

# cat /etc/init.d/disablewritecache
#! /bin/sh
### BEGIN INIT INFO
# Provides: disablewritecache
# Required-Start:
# Required-Stop: umountfs
# Default-Start:
# Default-Stop: 0 6
# Short-Description: disable SSD write cache
# Description:
### END INIT INFO

PATH=/sbin:/usr/sbin:/bin:/usr/bin
. /lib/init/vars.sh

. /lib/lsb/init-functions

umask 022

do_stop () {
 /sbin/hdparm -W0 /dev/sda
 /bin/sync
 /sbin/hdparm -F /dev/sda
}

case "$1" in
 start)
 # No-op
 ;;
 restart|reload|force-reload)
 echo "Error: argument '$1' not supported" >&2
 exit 3
 ;;
 stop)
 do_stop
 ;;
 *)
 echo "Usage: $0 start|stop" >&2
 exit 3
 ;;
esac

:
# update-rc.d disablewritecache start 39 0 6 .

これで大丈夫かなー?
あとついでにI/O SchedulerをCFQからnoopにした。

# cat /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

echo noop > /sys/block/sda/queue/scheduler

exit 0

とりあえずしばらくこれで様子見よう、、、。

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.