moss

ひっそりと書き綴る俺のチラ裏

またPCが壊れた

2012-04-04 23:33:35 | PC

先週末、またPCがイカれてしまった。何を行うにもやたら遅い。
また仮想マシンファイルが逝ったか?と思ったがlinuxネイティブのホスト環境でも遅い。
logを確認すると、

 hptiop_reset(6/0/0) scp=ffff8802ed4db100

てなkernel警告がずらり。何の警告か良くわからないが、RAIDカードで良くないことが
起こっていることは俺に十分伝わった。それくらいの空気は読める。(`・ω・´)
で、RAIDカードのユーティリティで確認するとDISK2に不良セクタの代替処理が9回発生していた。このためIOが異常に遅くなりUbuntuの起動に20分とかアホな状況に陥っていた。
RAIDを構成していても不良セクタの発生は非常にやっかいだ。

Amazonで新品DISKを1本購入、昨日届いたのでRAIDをバックグラウンドでリビルド。
不良セクタの発生したDISKは何かに再利用できないかなと不良セクタのスキャン開始。

badblocks -c 32 -o /tmo/bblock.txt -v -s -w /dev/sde

を実行してelapsd time 29:32:27経過、まだ更新中。いつ終わるんだ?まだ不良セクタ登録しないといけないのに。

ところで、以前はWD5000BEVTx2台でのオンボードRAID0で適当に構成していて、VMwareなど使い始めたらIO性能のプアさに嫌気が差して現在の構成はこうなっている。

[HW]
MB:ASUS P5N7A-VM
HBA:HighPoint RocketRAID4310 x 1 + BBU-04(バックアップバッテリ)
HDD:日立0S03191 x 4 (2TB SATA600 7200rpm)
メモリ:12GB

[システム]
Ubuntu 10.04 64bit
VirtualBox

今後は仮想マシン主体に使うから前回の反省を踏まえて、今回はストレージ設計をもう少しまじめに行った。HDD4台でのRAID5(3D+1P)とし、IO性能とパーティション用途を考慮したスライスになるよう次のようにRaidグループを分ける。

R/G SIZE Block
RG1 1TB 64KB
RG2 1TB 64KB
RG3 2TB 256KB
RG4 2TB 256KB

先頭シリンダ寄りの1TBは高速性を活かしてOSやVM用などシステム用に割り当てる。
残りはデータ用として、細かいファイル用と大サイズ用でチャンクを64KBと256KBに分けた。しかし、パーソナル利用でこんなに容量要らない・・・
HighPointのIOプロセッサ付きRAIDボード買ったの初めてだけど、あまり細かい設定はできないようだ。オプション見てたらBCVなんて項目もあり、一瞬ニコっとしたがTimeFinderなど動くはずもない。

移行やサルベージのためにトリプルブート用にパーティションを切る。
システム用ボリュームの内容。

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1               1        4177    33551721    7  HPFS/NTFS
/dev/sda2   *        4178        7310    25165822+  83  Linux
/dev/sda3            7311       10443    25165822+  83  Linux
/dev/sda4           10444      121576   892675792    5  拡張領域
/dev/sda5           10444      114876   838858041   8e  Linux LVM
/dev/sda6          114877      118009    25165791    7  HPFS/NTFS
/dev/sda7          118010      118270     2096451    b  W95 FAT32
/dev/sda8          118271      120009    13968486    7  HPFS/NTFS
/dev/sda9          120010      121576    12586896   82  Linux スワップ

※/dev/sdb~/dev/sddはデータ用なので大雑把に1TBづつパーティショニング。

sda1は素のWindowsを導入。
sda2はルートパーティションとしてUbuntu Server 10.04を導入。
sda3はVine6用に確保したがインストーラがハングするためもうひとつUbuntu Server 10.04を導入。

/homeや/var/log、VM用のボリュームなど必要に応じてLVMから切り出すため全てVGを作成。

  PV         VG          Fmt  Attr PSize   PFree 
  /dev/sda5  SysVG3201   lvm2 a-   799.97g 291.97g
  /dev/sdb1  DataVG3201  lvm2 a-   931.31g 557.31g
  /dev/sdc1  DataVG12801 lvm2 a-   931.25g      0
  /dev/sdc2  DataVG12801 lvm2 a-   931.25g 662.50g
  /dev/sdd1  DataVG12801 lvm2 a-   931.25g 931.25g
  /dev/sdd2  DataVG12801 lvm2 a-   931.25g 931.25g

  VG          #PV #LV #SN Attr   VSize   VFree  PEsize
  DataVG12801   4   1   0 wz--n-   3.64t   2.47t 128MB
  DataVG3201    1   3   0 wz--n- 931.31g 557.31g 32MB
  SysVG3201     1   2   0 wz--n- 799.97g 291.97g 32MB

サルベージや互換性を考えてファイルシステムはxfsはやめてext4とした。
ext4のファイルシステムはバカチョンフォーマットせず各RAIDグループに合わせてパフォーマンスを最適化すべくオプションを指定。
 ex.) mkfs.ext4 -b 4096 -E stride=16,stripe-width=48 /dev/sdaXX

チャンクサイズ64KBの場合、4096byteブロック16個分なのでstrideは16、RAIDは3D+1Pなのでstripe-widthはstride x 3DataDisk =48。
チャンク256KBの場合はそれぞれ64、192となる。

これら作成されたファイルシステムのマウントもオプションを指定する。
/etc/fstabにstripeを指定。ここではmkfsでのstrideと同じ意味でチャンクをfsのブロックサイズで割ったものをstripeに指定する。

fstabの例)
/dev/SysVG3201/SysLV02 /opt/virtual ext4 stripe=16 0 1
/dev/DataVG3201/DataLV04 /SRV/Share ext4 data=writeback,stripe=16,noatime 0 1

ブロックサイズ、チャンクサイズ、ストリップサイズ、ストライプサイズとメーカーで呼び方がバラバラなのでややこしい。この状態でのIO性能を確認するためhdparmで計測したが、before/afterの計測データをどこへ保管したか忘れた。
こうなったらたぶんもう見つからない。
ただ、仮想マシンを4つや5つ起動したくらいではビクともしないからまぁOKでしょ。

TintriやIsilon、LeftHand、Panasasなどの面白いNASが世の中にはあるのに個人環境ではこんな面倒なことして頑張らなければいけない。トホホ。


Comment    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« ジムニー2日目の感想 | TOP | ジムニー走るキーホルダー »
最新の画像もっと見る

post a comment

Recent Entries | PC