雑記

2000|01|
2003|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|
2007|01|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|09|11|
2009|02|03|05|06|07|08|10|11|12|
2010|01|03|04|05|06|07|08|09|10|
2011|05|06|09|10|
2012|03|07|09|12|
2013|01|02|04|05|07|08|10|11|
2014|04|05|08|10|12|
2015|01|05|
2016|09|

2005-07-16

液晶テレビ

仕事をしつつ後ろで会社にある国産のテレビ機能付き液晶ディスプレイを流してるんですが、いやこりゃひどい。ちょっとまじめに調整しても肌色系の色が出ないとか、そもそも色ノイズ出まくりなのは、電波状況のせいもあるかもしれないので、かなり気になるもののまあ我慢することに。とにかく我慢できないのは応答速度の悪さ。メーカのサイトを見に行くと、一応最近機種で、「応答速度8msを達成」とか自慢げに書いてあるのに、そんなに早くないパン・ズームやカメラの前を端から端まで1秒ぐらいの早さで人が歩いて横切っただけで画像が激しくブレる。野球中継ではピッチャーの手の振りがみえない。バレーはボールが魔球よろしくワープする。とスポーツ中継はずっと見続けてると誇張でなく頭がくらくらしてきて、見れたもんじゃありません。中継ものは最近コマ数を落としていることがあるのでそのせいじゃないか、と思われるかもしれませんが、同じアングルでのスロー再生だとちゃんと映ります。さらにスタジオ収録ものやドラマでも、出演者が頷いたり手を振ったりすると残像出まくりですわ忍者かと(嘘です)。あ、今麦畑の映ったコマーシャルが流れたんですが、後ろは潰れてしまって単なる砂漠、手前で風に揺れてる穂はブレまくり。こういう画像もだめと。

見続けてれば慣れてしまうのかもしれませんが、それって視覚の退化を意味するような気がして、絶対に慣れたくないなあ。こういう映像だけ見て育った子供って動体視力とかおかしくなるんじゃないかと心配になるぐらいです。ちなみに私は都内の快速電車で山田太郎のまねを試みて正解率0%だったので、動体視力が良いという訳ではありません。

次はいわゆる薄型テレビかなと思ってたんですが、当分はやめとこう。すでに持っている人にはちょっとショッキングな内容かもしれませんが、私が指摘した要素を手元のテレビで注意して見て頂いて、評価の参考にして頂ければと思います。怒らないでね。

あ、天気予報の映像はきれいだな。

MacOS修行中(1)

「^↑J」でかなり悩む。マニュアルにも書いてないし、検索しても出てこない。ショートカットキーを使いたがる超初心者というのは、誰も想定していないらしい。

MacOS修行中(2)

すぐ「Alt+`」を押す。キーバインドを変えるべきか、頭に「ことえりモード」を植え付けるべきかちょっと迷うが、とりあえず後者の方向で。

MacOS修行中(3)

1時間ほど、リモートマシン上でのjlessとjvimを使うたびにいちいちターミナルの文字コードセットを切り替えて使っていた後、
setenv JLESSCHARSET japanese-euc
すれば良いことに気づく。kterm とか TeraTerm とか Poderosa だとISO 2022-JP が混ざってても良かったんだよぅ。
本日のツッコミ(全3件) [ツッコミを入れる]

- taru_k [液晶TVはまぁそんなもんだよ…動いたらオシマイ.リアプロなら液晶素子が小さいからもう少し良いだろうけど.]

- hs [そんなもんなのか。目が疲れたりしないのかな。 今自宅でブラウン管見てますが、やっぱりぜんぜん違うね。]

- taru_k [勿論LCD-TVメーカもその辺すご〜く気にしていて,頑張って開発を進めているみたい.なので一世代違うと反応速度はだい..]


2009-07-16

[FreeBSD] NEC Express5800/110GeでFreeBSD(続き)

前回、インストールに成功して喜んでいたオンボードRAIDですが、試しにディスクをわざと抜いて交換し、リビルドをかけようとするとカーネルがパニックしました。いちおうBIOSメニューからリビルドはできるのですが、その間サーバとしては停止してしまうのでよろしくありません。

というわけで、BIOS RAIDはやめてソフトウェアRAIDの設定を試すことにしました。BIOS RAIDの方もmetadata formatがベンダー依存ってだけで、実態はソフトウェアRAIDですが。

一連の作業の前に、RAIDの表示が起動時に出るのは煩わしいので、ケースを開けてジャンパを戻し、RAID機能は切っておきます。

FreeBSDのソフトウェアRAID実装

FreeBSDのソフトウェアRAID実装としては、最近はgmirrorが主流のようです。ataraid(ar)はインストーラが対応してて、rootパーティションのミラーをする場合Fixitとか面倒な手順を踏まなくていいんですが、どうも上記パニックとか、以前send-prしたMatrixRAIDの不具合が放置されていたりと、あまり活発にメンテナンスされていない印象を受けます。ccdやgvinumというのも一応ありますが、ccdはルートパーティションのミラーが出来ない、gvinumはGEOM対応で不安定になったまま放置(たぶん)という状態だったと思います。 よって今回はgmirrorを使うことに。ちなみに、私が調べた範囲でのarとgmirrotの比較表を以下に示します。

.border.

デバイスargmirror
インストーラ対応×
ホットスワップ
オートリビルド××
リビルド中の再起動×

ちょっと実験

最新版(7.2)ではgmirrorでのインストールに対応してないかなぁ、と淡い期待を寄せてarでミラーを組むときの手順を試してみました。参考までに、arでの手順も併記します。

インストーラが起動したら、インストール作業に入る前にまずFixitに入ってRAIDを構築します。

(((.half clear.

# chroot /dist
# mount -t devfs devfs /dev
# kldload geom_mirror.ko
# gmirror label gmir0 ad6 ad8

)))

.half. (((

# chroot /dist
# mount -t devfs devfs /dev
# atacontrol create RAID1 ad6 ad8

)))

.clear. ここでいったん再起動します。

gmirrorの場合、FreeBSDのブート画面が表示されたら「6」を押してloader promptに入り、geom_mirrorモジュールをロードします。arの場合はここでは何もせずとも認識されます。

(((.half.

OK load geom_mirror
 :
OK boot

)))

.clear. これでインストールに進みSelect Drive(s)の画面で「gmir0」が選択肢に挙がれば成功!なのですが、残念ながら表示されませんでした。インストーラのCDにもgeom_mirrorモジュールは入っていたので、ディスク検知の処理を書き換えればうまくいくんでしょうか?

ともあれ、現状ではインストール後にFixitでミラー構築するしかないようなので、そちらの方向で行くことに。

ミラーの設定

ミラーの設定をする前に、OSを通常の手順でマスターにするHDDへとインストールします。今後の作業もあるので、livefsのイメージを焼いてインストールするのが良いと思います。^J .orangered.以下の作業は一発勝負です。ミスすると最悪ディスクの内容が壊れて再インストールとなります。

インストールが完了したらいったんリブートします。インストーラが起動したらFixitを選択して、以下の作業を行います。

livefs環境の利用準備

Fixit# chroot /dist
Fixit# mount -t devfs devfs /dev

gmirrorカーネルモジュールのロード

Fixit# gmirror load -v
Module available.
Done.

ミラーの設定

Fixit# gmirror label gm0 ad6
Fixit# gmirror insert gm0 ad10

これでディスクのコピーが始まるので、以下のコマンドで完了するまで待つ。

Fixit# gmirror status gm0
      Name    Status  Components
mirror/gm0  DEGRADED  ad6
                      ad8(xx%)

完了するとstatusが次のようになる

Fixit# gmirror status gm0
      Name    Status  Components
mirror/gm0  COMPLETE  ad6
                      ad8

コピーが完了したら、構築したRAIDから起動するように設定を変更します。

/をマウント

Fixit# mount /dev/mirror/gm0s1a /mnt

/mnt/etc/fstabを修正して、"ad6"→"mirror/gm0"に変更する。

Fixit# sed 's#ad6#mirror/gm0#' < /mnt/etc/fstab > /mnt/etc/fstab.tmp
Fixit# cp /mnt/etc/fstab /mnt/etc/fstab.bak
Fixit# mv /mnt/etc/fstab.tmp /mnt/etc/fstab
Fixit# cat /mnt/etc/fstab
# Device            Mountpoint FStype Options Dump Pass#
/dev/mirror/gm0s1b  none       swap   sw      0    0
/dev/mirror/gm0s1a  /          ufs    rw      1    1
  :

/mnt/boot/loader.confにgeom_mirrorカーネルモジュールの読み込み指定を追加する

# echo 'geom_mirror_load="YES"' >> /mnt/boot/loader.conf

以上で設定は完了です。シェルを抜けてインストーラを終了し、CDを取り出して再起動をかけます。設定に問題なければ、gm0のディスクをマウントした状態でOSが起動します。

動作確認

障害のエミュレーションとして、atacontrol detach、HDDを片方いきなり抜く。シャットダウンしてHDDを抜いて再起動、と試してみましたが、パニックなど起こすこともなくDEGRADED状態に移行しました。

あと、最初は日本語マニュアルだけ読んでオートリビルドができるのかと勘違いしてたんですが、英語のマニュアルには、

The component with the biggest priority
is used by the prefer balance algorithm and is also used as a
master component when resynchronization is needed, e.g. after
a power failure when the device was open for writing.

と説明があるのでどうも出来ないようです。

リビルドの手順は以下の通りになります。 障害の発生したHDDがad10の場合、ata5のデバイスを切り離します。

# atacontrol detach ata5

この状態でHDDを交換し、デバイスを(再)接続して認識させます。

# atacontrol attach ata5

この状態ではまだad10の情報がgm0に残っているので、消します。

# gmirror forget gm0

最後に取り付けたHDDをgm0に追加します。

# gmirror insert gm0 ad10

これでリビルドが自動的に始まります。

ちなみに、リビルド中にリブートすると途中から再開しました。

metadataを削除する

最後に余談です。

gmirrorやarはHDDの後ろの方にmetadata(RAIDの管理情報)を書き込んで管理しています。で、atacontrolコマンドでいったん書きこまれたmetadataはごみデータが残りやすく、かなり厄介です。 特にテストのために一度抜いたHDDを戻したりすると、整合性が取れていないはずなのにReady状態に戻ってしまう(リビルドする方法が無い)ため、非常に危険です。

こういうどうしようもなくなったディスクからmetadataを削除する場合、ディスクの後の方の領域をクリアします。以下の例ではかなり適当に後の方をゴソッと消してますが、実稼働中のディスクでやる場合はちゃんと計算した方が良いと思います。

例えばad8のmetadataを消す場合、まずディスクの容量を調べます。

# diskinfo ad8
ad8     512     164696555520    321672960       319120  16      63

2番目の数字がセクタサイズで4番目の数字が総セクタ数です。これらの数字を参考に、最後の方を適当に消してしまいます。

# dd if=/dev/zero of=/dev/ad8 bs=512 seek=321650000

これで最後の約10MB(512×22960 byte)が消えます。seek=を省略すればディスク全体をクリアしますが、その場合はbsの値を大きめにすると早く終了します。

ちなみに、RAIDの情報が書き込まれる位置は/usr/src/sys/dev/ata/ata-raid.hに'*_LBA'という名前で定義されていますので、BIOS RAIDを使っている場合はRAIDコントローラのメーカを調べてそこから計算します。あるいは、起動画面で「5. Boot FreeBSD with verbose logging」を選択して起動し、dmesgをMetadataで検索すると、どのタイプのmetadataがディスクに記録されているか調べることができます。