Home

技術系のメモと日々の雑感

SSL received a record that exceeded the maximum permissible length

安全な接続ができませんでした先日、サーバの1台で障害が起きた。
ログインはできるのに、コマンドを実行しようとすると片っ端から I/O エラーが出て、手も足も出ない状態。
ps は実行できたから、HDD にアクセスするコマンドが全滅してたみたい。
まぁ、こっちはどうしようもなさそうなので、別のマシンに環境を移した。
バックアップからデータを戻して、Apache の設定も元通りにして、これでやっとコーヒーでも飲みながら休憩できると思ったら、サイトが正しく表示されないとのこと。
聞くと SSL の方だけらしい。
Firefox でアクセスしてみたら

SSL received a record that exceeded the maximum permissible length.
(エラーコード: ssl_error_rx_record_too_long)

見たことないエラーだなぁ。
でも、Apache の設定を見直したら原因はすぐに判明。
何のことはない、httpd-ssl.conf をバックアップから戻したので、VirtualHost に指定していた IP アドレスが古いサーバのままだった。
ふ〜ん。
こんなエラーが出るのか。
覚えとこ。

TFTEC IDE-SATAZD のベンチマーク

変換名人 TFTEC IDE-SATAZD家にある古いマシンに SATA の HDD を接続するために、TFTEC の IDE-SATAZD を買ってみた。
マスタ/スレーブ切り替え用のジャンパが付いてないリビジョンだったのが残念だけど、使用上は特に問題なし。
ちなみに基板上の型番は HW-629D Rev 3.1 となっていた。
ところで、こういう変換パーツって、通常の接続の場合とどれぐらい速度差があるのかが気になるね。
調べてみよう。
自分の場合、Linux でしか使う予定がないので、CentOS の起動時間を計ってみることにする。
念のために環境を書いておくと、マザーボードは ASUSTeK P5LD2-VM、HDD は Seagate ST380815AS だ。
まずは通常の SATA 接続で、CentOS 5.4 の GRUB メニューからログインプロンプトが表示されるまでを計ってみると、34 秒。
ついでに hdparm のベンチマークも取っておこう。

# hdparm -t /dev/sda
/dev/sda:
Timing buffered disk reads: 226 MB in 3.01 seconds = 75.07 MB/sec

続いて、IDE-SATAZD 経由で接続してから CentOS をインストールしなおそうと思ったら・・・、そのまま起動できてしまった。
パーティションラベルが付いてるので不思議はないんだけど、便利な世の中になったもんだなぁ。
それはさておき、同じように起動時間を計ってみると、35 秒!?
ほとんど差がないなんて、ちょっと信じられなかったけど

# hdparm -t /dev/hde
/dev/hde:
Timing buffered disk reads: 226 MB in 3.02 seconds = 74.96 MB/sec

こりゃ間違いないね。
千円足らずで買えるパーツなのに、これは意外だったな。

CentOS で SAPARAID-PCI を使ってみる(Part2)

玄人志向の SAPARAID-PCI を CentOS 5.3 で使う話の続き。
HDD に障害が発生した状態を作るため、基盤上に SATA1 と書いてある方のケーブルを外してみた。
V-RAID Utility でいうところの Channel0(Source)側だ。
Status は Broken になった。
CentOS はこのまま起動できたので様子を見てみる。

# df
Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
/dev/sda2             19840924   1100320  17716464   6% /
/dev/sda1               101086     11353     84514  12% /boot

あれ?
HDD を直接つないだように認識されてるな。

# dmraid -r
ERROR: via: invalid checksum on /dev/sda
no raid disks

# dmraid -s
ERROR: via: invalid checksum on /dev/sda
no raid disks

dmraid コマンドがエラーになるのは、まぁ当然だね。
それでは、SATA1 側に新品の HDD をつないでリビルドしてみよう。
Ctrl + C で Critical Window に入ると、予想通り Array0 のメンバとして Channel1(Mirror側)だけが見えていた。
メニューに、そのものズバリの Choose replacement disk and rebuild というのがあるので、これを実行する。
Select the Disk と聞いてきたら、Channel0 側につないだ HDD(新品)を選択。
1行しか表示されてないので考えるまでもないけどね。
さらに Data of the hdd selected to rebuild will be destroyed, Continue? Y/N と聞かれて、Y 選んだらリビルド(Duplicate)が走った。
500GB の HDD だと 4 時間ぐらいかかる。
そのまま一晩放置。
翌日、確認すると、Duplicate OK! Press any key to reboot とのこと。
Status も Normal に戻っていて、これは期待できそう。
・・・と思ったら、エラーが出て立ち上がらなくなってしまった。

fsck.ext3: Device or resource busy while trying to open /dev/sda3
Filesystem mounted or opened exclusively by another program?
*** An error occurred during the file system check. *** Dropping you to a shell;
the system will reboot *** when you leave the shell.
Give root password for maintenance (or type Control-D to continue):

まぁ、元々 Linux に対応してる製品じゃないんで、仕方ないね。
ひとまず結果をまとめておくと、この RAID カードでミラーを組んで CentOS 5.3 を入れることはできた。
最初に組んだミラーの構成が壊れても、通常の SATA 接続として起動もできた。
でも、一旦壊れたミラーを元の構成に戻すのは難しそうだ。
成功した人がいたら教えてほしいな。

cpuspeed についての誤解

CentOS の cpuspeed って、デフォルトの設定では最低のクロックに固定されてしまうものだと、ずっと誤解していた。
この前、何気なく

gzip < /dev/urandom > /dev/null

で負荷をかけてみたら、ちゃんとクロックが上がるのを見て、ちょっとびっくり。
もっと早く気づいてもよかったのに、我ながら情けない・・・。
底面が熱々になる、家の ThinkPad X61 では有効にしておこう。
って、これはカーペットの上に置きっぱなしにしてるせいか。
あと、このとき分かったんだけど、/proc/cpuinfo の bogomips ってクロックと連動するんだね。
dmesg の

Calibrating delay using timer specific routine.. 4388.99 BogoMIPS (lpj=2194498)

が出ているタイミングで計算して、あとはその値をそのまま使い続けるんだと思ってたなぁ。

CentOS 5.3 で SAPARAID-PCI を試してみる

玄人志向の SAPARAID-PCI は Linux でも使えるそうな。
そこで、HGST の HDP725050GLA360 を2本つないでミラーを組んで、CentOS 5.3 を入れてみた。
インストール中は特に引っかかるところはなし。
1点だけ注意しないといけないのは、V-RAID Utility の Select Boot Array でアレイを選択しないこと。
これをやると /dev/sda と /dev/sdb の2本の HDD として見えてしまう。
インストーラのパーティション画面で、HDD が /dev/mapper/via_dggbdbiabb なんていう名前で1本に見えてたら OK だ。
CentOS が起動した後の様子を見ると

# df
Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
/dev/mapper/via_dggbdbiabbp2
                      19840924   1100344  17716440   6% /
/dev/mapper/via_dggbdbiabbp1
                        101086     11353     84514  12% /boot

# ls -l /dev/mapper
合計 0
crw------- 1 root root  10, 63 12月 25  2009 control
brw-rw---- 1 root disk 253,  0 12月 25  2009 via_dggbdbiabb
brw-rw---- 1 root disk 253,  1 12月 25 10:08 via_dggbdbiabbp1
brw-rw---- 1 root disk 253,  2 12月 25 10:08 via_dggbdbiabbp2
brw-rw---- 1 root disk 253,  3 12月 25  2009 via_dggbdbiabbp3

# hdparm -t /dev/mapper/via_dggbdbiabb
/dev/mapper/via_dggbdbiabb:
Timing buffered disk reads:  270 MB in  3.02 seconds =  89.43 MB/sec
HDIO_DRIVE_CMD(null) (wait for flush complete) failed: Inappropriate ioctl for device

といったところ。
hdparm で何やらエラーが出ているのは、気にしないでおこう。
さて、ここまではすんなり進んだけど、気になるのは HDD が壊れたときだ。
どうやって確認すればいいのかと思ったら、dmraid コマンドが使えるという情報があった。
実行してみると

# dmraid -r
/dev/sda: via, "via_dggbdbiabb", mirror, ok, 976771054 sectors, data@ 0
/dev/sdb: via, "via_dggbdbiabb", mirror, ok, 976773167 sectors, data@ 0

# dmraid -s
*** Active Set
name   : via_dggbdbiabb
size   : 976771048
stride : 8
type   : mirror
status : ok
subsets: 0
devs   : 2
spares : 0

なるほど。
これでチェックできそうだね。

Part2 へ続く・・・。