バックアップスクリプト改良

 朝起きてみるとayanから道具眼のサーバーがおかしいのでは?とMessengerでメッセージが入っていた。ウチでaliasしているメールアドレスがエラーになるとのこと。naokAもブログが書けないらしい。そのアドレスにはとある経緯があって「どうせアドレスを間違えているんじゃねぇの?」と疑いつつAliceにログイン。あれ、弾かれるぞ?どうもDisk Fullになっているらしい。
 AliceがDisk Fullになるのは相場が決まっている。NFSでマウントしてrsyncでバックアップをとってるLinkStationのHazukiが問題を起こしてるからだ。調べると電源が落ちてる。あー、昨日ブレーカーが落ちた時に復帰してなかったんだ。
 現在は毎朝4時にシェルスクリプトでHazukiを/mnt/hazuki/下にマウントして、そこにバックアップを書き出す。ところがスクリプトが手抜きなので、マウント成功かどうかをチェックしてなかった。UNIXをご存じな方は知ってると思うが、マウントに失敗してもローカルのHDDに普通に読み書きできてしまうので、スクリプトは自分自身のHDDにバックアップを始めてしまう。おかげであっという間に空き容量が食われてしまう訳だ(rsyncで同期していても、バックアップ先が空なのでフルコピーされる)。
 いつもはこの状態でもログインだけはできてたのに。ログインできないとファイルを消す作業もできないので焦ったが、hkondo氏のアドバイスに従い、物置からアナログCRTを引っ張り出してきてつなぎ、キーボードはUSBのものをMacから引っこ抜いてきて無事コンソールでログイン。ファイルを削除。
 再発防止のためにスクリプトを改良してみた。-dコマンドを使って、マウント後なら見えるはずのディレクトリが存在しているかどうかチェック。そのままスクリプトを終了してしまうとバックアップが行われないままになってしまうので、else節に警告メール(hazuki_down.txt)を送信するように設定してみた。

#! /bin/sh
mount /mnt/hazuki/
if [ -d /mnt/hazuki/etc/ ]; then
 /usr/bin/rsync -av –delete /home/ /mnt/hazuki/home/
 以下、rsync群がズラっと…
else
 mail furuta@aika.do-gugan.com < hazuki_down.txt fi

umount /mnt/hazuki/

 それにしてもこういう時にモニタがないのは不便だなぁ。というかCRTを担いでくるのが大変。かといって普段からつなげておく場所もないし。いっそこういうの→を買ってみようか。CD-ROMドライブなどを入れる5インチベイにスッポリ収まる4インチ液晶モニタ。ちょうどベイ空いてるし。でもこれで5万は高いよなぁ。うーむ。


 さて、容量を空けたら無事に動作復旧したようで、ayanにメールの再送を依頼。え?まだダメ??って、やっぱりアドレス間違ってんじゃんっ!

LinkStationの時計ずれ

 どうもLinkStation(HG)の時計ずれる。LAN内のNTPサーバーと同期させてるのに…。ファイルサーバーとしては秒単位のズレはあまり気にならないけど、LinkDe録で録る番組が頭数秒~十秒程度欠けてしまうのはいただけない。
 telnet化してあるので、ログインしてコマンドラインでntpdateしてみると、その瞬間はNTPサーバーや117とバッチリ同期してるっぽい。cronで定期実行させる辺りの問題か?
 /etc/crontabをみると、

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
02 4 * * * root /etc/cron.d/chk_proc.sh
05 4 * * * root /etc/cron.d/logrotate
08 4 * * * root /etc/cron.d/calib_time.sh
00 */12 * * * root /etc/cron.d/scheduler
30 */3 * * * root /etc/cron.d/ntpdate

となっていた。calib_time.shとntpdateの2つも時刻合わせ関係のスクリプトがある。試しに手動で実行してみると、前者はむしろ2秒ほど狂いが発生する。中身を読み込むのも面倒なのでw、とりあえずntpdateだけにして様子を見てみよう。

やっぱBフレッツのハイパーファミリー移行は止めよう

 Bフレッツのニューファミリー→ハイパーファミリーの移行、一応申し込んであって、今月下旬の工事も決まってるんだけど、やっぱキャンセルしようかと。
 偽(非共有)ニューファミリー状態の方が、実質ベーシック的に使えてヨサゲ。現状でもフレッツスクエア内で70Mbps以上出てるし、工事費に\2万も払うのはねぇ。
 どうも、NTTが行政指導を受けてニューファミリーをちゃんと共有型に移行していかないといけなくて、その費用を捻出するための苦肉の策ってことらしい。NTTが自腹切ってでも本当にニューファミリーを共有型に変更する頃に乗り換えるのを待ちつつ、適当にお得なキャンペーンがあったら、って感じかな。

LinkStationをNFSマウントする

 ファームウェアをバージョンアップする度に設定が初期化されるLinkStationのLinuxBox化とNFSマウント許可の覚え書き(自分用。超不親切)。近々、LinkDe録の正式ファームが出た際にまたやると思うので。

別マシンでマウントする

  • ここからマジックナンバー修正ツールとLinux Box 化ツールをゲット。
  • LinkStationからHDDを取り出し、Linuxマシンにつける。
  • (我が家特有のメモ)IEEE1394ケースを使ってとりつけるので、/dev/sda1になる。ディスクが上手く認識されない場合は、ieee1394とohci1392モジュールをrmmod -> insmodする。
  • fix_ext2_magic /dev/sda1でマジックナンバーが0xef54なのをチェック
  • fix_ext2_magic –fix /dev/sda1で書き換え
  • /sbin/fsck -f -n /dev/sda1でエラーチェック。修復は-f -y。
  • マウント(我が家ではfstabに設定済みなので、mount /mnt/rackでOK)

LinuxBox化

  • tar xzvf linuxbox.tar.gz -C /mnt/rack/
    (最近のファームではftpは入っているので、我が家では上記アーカイブからproftpdを抜き、下記テンプレートを追加したアーカイブを使う)。
  • /mnt/rack/etc/inetd.confを覗き、telnetの設定がコメントアウトされていたら外す。もし記述がなかったらinetd.conf.addをコピー
  • /mnt/rack/etc/securettyにpts/0が含まれているのを確認
  • passwdファイルはファーム更新ではクリアされないっぽい。初回LinuxBox化時はrootのパスワードを消しておく。
  • HDDをアンマウントして、LinkStationに戻す。

NFSマウント許可(HGLANのみ)

  • telnetする
  • /etc/hosts.allowを
    portmap: 192.168.0.1 :allow
    のように書き換え(IPアドレスは適宜読み替え。シャットダウンの度にクリアされる?)
  • /etc/exportsに
    /mnt/backup/hoge 192.168.0.1(rw,sync,all_squash,anonuid=0,anongid=0)
    のように追記(hogeとIPアドレスは適宜読み替える)。
  • inetdデーモンを再起動。/etc/rc.d/init.d/inetd restart

 こんな感じだったような気がする。