Skip to content

Flash

RasPI も含めメインストレージが SD(micorSD) な環境を常時稼動させると、かなりの頻度で壊れる。
どちらにしろ定期的に交換するのが安全なのだが、少しでも壊れにくくするためには書き込みの頻度を下げる必要がある。

/ パーティション

パーティションのマウウントオプションに

UUID=XXXXXXXX / ext4 defaults,noatime,nodiratime,commit=600,errors=remount-ro 0 1

noattime、 nodiratime は、PC とかでも使うことがあるが、普通の PC では滅多にやらない commit=600 を付与する
sync の周期を 600秒(10分)ごとになる。 PC でも SSD だとやるかも

tmp および /var/tmp

もちろん tmpfs にする。

/var/log

これも tmpfs にする。
再起動で消えると困るので shutdown 時に backup、起動時に restoreする
/etc/init.d に以下のようなスクリプトを追加

#!/bin/bash
#
### BEGIN INIT INFO
# Provides:          loginit
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Required-Start:
# Required-Stop:
# Short-Description: Create /var/log/... files on tmpfs at startup
# Description:       Create /var/log/... files needed by system daemon
### END INIT INFO
.
#
# main()
#

ck_file="/var/lock/subsys/loginit"

case "${1:-''}" in
  'start')
    cp -av /var/logback/* /var/log
    touch ${ck_file}
   ;;
  'stop')
    cp -av /var/log/* /var/logback/
    rm -r ${ck_file}
   ;;
  'restart')
   ;;
  'reload'|'force-reload')
   ;;
  'status')
   ;;
  *)
   echo "Usage: $SELF start"
   exit 1
   ;;
esac

サービスの最初の方に起動させる。
同様に cron で rsync バックアップも入れる

うちの環境では、softether もOrangePI で稼動させている。
softether は、設定ファイルを更新しつづけるので、/var/log と同様、起動時に tmpfs にコピーした上で実行するようにしている。