カテゴリー「ストレージ」の14件の記事

May 26, 2014

dmマルチパスを用いたDELLストレージ設定方法(MD30xx編)

今回はいつもと趣向を変えて、DELL社DASストレージの設定方法をご紹介します。今回ご紹介するMD3xxx系はマニュアルがわかりにくいだけでなくネット上で設定例をあまり見かけないので役に立つ方は役に立つかと思います。

さて、本題に入ります。

DELL PowerVault MD3000系DASストレージではマルチパスを扱うときに専用のMPPドライバーを使います。それに対してMD32xx系ではDM-RDAC(dm-multipath)と呼ばれるネイティブLinux kernelデバイスマッパーを使います。ここではMD3000系でもdm-multipathを使えるようにする設定方法を記します。

Dell_powervault_md3000i


【Storage ManagerとHBA board用ドライバーのインストール】
Linuxサーバ上にStorage ManagerとHBA board用ドライバーをインストールします。それらはMD3xxxに付属しているCDROMに含まれています。

※MD3xxx系では、サーバにRAIDボードではなくHBAボードを挿します。RAIDボードを使う場合はRAIDボード上でRAID関連処理をしますが、MD3xxx系ではストレージ側のコントローラーでRAID関連処理をします。


【MD3000でdm-multipathを使うための事前準備】
/etc/multipath.confを以下の内容に置き換えてリブートするとmultipathから見えるようになります。


defaults {
        getuid_callout "/sbin/scsi_id -g -u -s /block/%n"
}
devices {
        device {
                vendor DELL*
                product MD3000*
                path_grouping_policy failover
                getuid_callout "/sbin/scsi_id -g -u -s /block/%n"
                features "1 queue_if_no_path"
#               path_checker readsector0
                path_checker rdac
                prio_callout "/sbin/mpath_prio_tpc /dev/%n"
                hardware_handler "1 rdac"
                failback immediate
        }
}
blacklist {
       device {
               vendor Dell.*
               product Universal.*
       }
       device {
               vendor Dell.*
               product Virtual.*
       }
}

【MDSM(Modular Disk Storage Manager)の起動と設定】
MDSMはバージョンによって操作性が多少異なるので注意です。大雑把に以下の手順を実施します。

$ SMclient

1. マシン名をつける。
2. HotSpare HDDを指定する。
3. ディスクグループを作成する。(例: VG01)
4. 仮想ディスク(LUN)を作成する。(例: VG01_lun1, VG01_lun2) ※注:ディスクグループ1つに対して2つの仮想ディスクを作るようにすべし。すると各々の仮想ディスクが各パスに分散されるのでパフォーマンスが上がる\!
5. 仮想ディスク(LUN)とホストをマッピングする。

【ストレージとうまく接続できているか確認する方法】
DASを接続しているサーバからストレージが正しく認識しているか以下のように確認することができます。


$ multipath -ll
mpathc (36f01faf000dd7c2a000002513aaa3f5b) dm-1 DELL,MD30xx
size=1.5T features='3 queue_if_no_path pg_init_retries 50' hwhandler='1 rdac' wp=rw
|-+- policy='round-robin 0' prio=14 status=active
| `- 1:0:0:1 sdc 8:32 active ready running
`-+- policy='round-robin 0' prio=9 status=enabled
  `- 1:0:1:1 sde 8:64 active ready running
 
mpathb (36f01faf000dd7ba2000002a0529257a6) dm-0 DELL,MD30xx
size=1.5T features='3 queue_if_no_path pg_init_retries 50' hwhandler='1 rdac' wp=rw
|-+- policy='round-robin 0' prio=14 status=active
| `- 1:0:1:0 sdd 8:48 active ready running
`-+- policy='round-robin 0' prio=9 status=enabled
  `- 1:0:0:0 sdb 8:16 active ready running

いずれも「status=active」であれば正常。


【サーバ内で仮想ボリュームを作る】


■1. pvcreate
pvcreate /dev/dm-1
pvcreate /dev/dm-2
 
■2. vgcreate
vgcreate vg1 /dev/dm-1 /dev/dm-2
 
■3. lvcreate
lvcreate -n lv01 -L 100GB vg1
lvcreate -n lv02 -L 100GB vg1
lvcreate -n lv03 -L 100GB vg1





$ fdisk -l
Disk /dev/mapper/vg01-lv01: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

OSからLUNがデバイスとして見えていれば正常。(LUN:Logical Unit Number。サーバから見えるデバイスのこと。一般PCでは1台のHDDを指すが、仮想化されたストレージの場合は切り出された領域が見える)


| | Comments (0) | TrackBack (0)

November 04, 2013

RAID5のパリティ生成アルゴリズム

「RAIDという仕組みは本当に安全なのか?」という懸念が昔からあったので、今回RAID5のParity algorithmについて研究してみました。(RAID6のParity algorithmについて研究しましたが、それはまた今度)

【RAID5の特徴】
RAID5の特徴について改めて整理すると以下のようになるかと思います。

•Block単位でパリティ分散記録する。
•水平パリティを1つ用いる。水平パリティにはXOR方式を用いることが一般的。
•HDDが1本壊れても復旧できる。


【XOR(排他的論理和)について】
RAID5ではXORを用いてパリティを生成しますので、まずはXORについておさらいしておきます。

ABA XOR B
000
011
101
110

【RAID5のパリティ生成の仕組み】
例えばデータが「1111 0101 1100 1010 0000 1111」の場合は以下のようになります。

HDD-AHDD-BParity
111101011010
110010100110
000011111111

仮にB列が消失した場合はどうなるでしょうか。

HDD-AHDD-BParity
1111?1010
1100?0110
0000?1111

この場合はHDD-AとParityでXORを適用するとBが復元できます。

HDD-AHDD-BParity
111101011010
110010100110
000011111111

この仕組みを応用して、HDD本数が7本の場合、A-BのXOR結果とC、その結果とD、・・・とXORをしていくことになります。

HDD-AHDD-BHDD-CHDD-DHDD-EHDD-FParity
1111101011000110000011110000

仮にhdd-Bが故障した場合はどうなるでしょうか。

HDD-AHDD-BHDD-CHDD-DHDD-EHDD-FParity
1111?11000110000011110000

この場合もBを除いた全てとxorをしていくとBが復元できます。(xorする順番は問わない)

0000 G
1111 F
----
1111
0000 E
----
1111
0110 D
----
1001
1100 C
-----
0101
1111 A
----
1010 B

HDD-AHDD-BHDD-CHDD-DHDD-EHDD-FParity
1111101011000110000011110000

こんなシンプルな仕組みであればファームウェアのバグ発生は考えにくそうで、RAID5はそれなりに安全そうですね。

※最後に「インフラエンジニアの教科書」という本を出版させていただきました!という宣伝で締めさせていただきます。

| | Comments (2) | TrackBack (0)

October 04, 2009

RAID6の正確な定義とは

いよいよ今月こちらの本が出版されるのですが、その本を執筆している最中、「そういえばRAID6の正確な定義って何だろう?」という話になりました。

よく知られているRAID6の定義としては「パリティ情報を2本のHDDに書き込むので、HDDが2本死んでもデータが飛ばない」というものです。しかし曖昧なのは、どのようなパリティ情報をHDDに書きこむのか、というところです。この件、文献によって書いてあることに差があります。例えば「RAID5のパリティ情報をもう1つ他のHDDにも書き込んだものがRAID6だ」というものや、「RAID5のパリティ情報とは別のアルゴリズムで算出したパリティ情報を他のHDDに書き込んだものがRAID6だ」など。

RAID1-5に関しては明確な定義があります。Wikipediaによると「1988年にカリフォルニア大学バークリー校のデイビッド・パターソン, Garth A. Gibson, Randy H. Katzによる論文「A Case for Redundant Arrays of Inexpensive Disks (RAID)」に於いて提唱された。これはSIGMOD Conference 1988: pp 109-116 で発表された。」ということでした。しかしRAID6に関しては。いつどこで誰が定義したのかを明確に述べた文献が存在しませんでした。

それを踏まえて、日本語の文献は間違いが多い(1次情報を調べず2次情報を鵜呑みにすることが多い)ため、英語の文献を中心に調べてみました。いろいろ調べてみた中で、英語版のWikipediaに書いてあった内容が一番本当っぽい気がします。

Implementation
According to the Storage Networking Industry Association (SNIA), the definition of RAID 6 is: "Any form of RAID that can continue to execute read and write requests to all of a RAID array's virtual disks in the presence of any two concurrent disk failures. Several methods, including dual check data computations (parity and Reed-Solomon), orthogonal dual parity check data and diagonal parity, have been used to implement RAID Level 6

http://en.wikipedia.org/wiki/RAID6#RAID_6

超ざっくり訳すと

「SNIAというストレージベンダーの業界団体によると、RAID6の定義は、2本の仮想ディスクで読み書きに失敗しても処理を継続できること。RAID6の実装には二重チェックデータ計算、直角二重パリティチェック、及び斜めのパリティチェックを含む、いくつかの方法があります」

ということです。つまりはRAID6とは2本のHDDが死んでもRAIDが死ななければ何でもいいということになりそうです。すなわち、パリティ情報の書き込み方についてはベンダーによって実装方法が違うかもしれないという結論ですね。

| | Comments (0) | TrackBack (0)

June 22, 2009

もしRAIDボードが壊れたら

ハードディスクは壊れやすいのでRAIDで冗長性を確保することが多いですが、RAIDボードは壊れにくいのでRAIDボードが壊れたらどうしようというところまで考えている人は意外と少ないです。

もし今RAID5でサーバを組んでいたとして突然RAIDボードが壊れたとしたらどうなるか。「RAIDボードが壊れたら単に新しいRAIDボードに交換すればよいのでは? 」と単純に考える人もいると思います。しかしもしそうだとしたらRAID設定した情報はどうやって復元しましょうか。「え?単に同じ設定を新しいRAIDボードに同じように施せばよいのでは?」と思うかもしれませんが、この方法で本当に大丈夫なのでしょうか?

と、今回はそんなことを考えていきたいと思います。

【RAID構成情報ってどこに書かれている?】
RAID構成情報ってどこに書かれているか。高価なRAIDボードであればRAIDボードとHDD双方に、安価なRAIDボードであればRAIDボード上だけに書かれていることが多いようです。

これを確かめるには次の手順で行えます。例えばHDD3本でRAID5を構成し、マシンの電源を落とします。マシンが停止しているときHDD1~3の順番を入れ替えてからマシンの電源を入れます。このときHDDが入れ替わったことをRAIDボードが検知してくれるようであればHDDにRAID構成情報が書き込まれています。逆にRAIDが壊れてしまったらRAIDボード上にしかRAID構成情報が書き込まれていないことになります。

【新しいRAIDボードにそれまでのRAID構成情報を移せるか】
もし高価なRAIDボードが壊れたのであれば、新しいRAIDボードに入れ替えるだけで勝手にHDDからRAID構成情報が新しいRAIDボードに引き継がれます。

それに対して安価なRAIDボードが壊れたのであればもうちょっと深く考える必要があります。

もし安価なRAIDを使っていて、[HDD1][HDD2][HDD3] & [HDD4(HotSpare)]というRAID5構成を組んだとします。これがしばらく使っているうちにHDD2が壊れてしまい、HDD2を新しいHDDに入れ替えたとすると構成は[HDD1][HDD3][HDD4] & [HDD2(HotSpare)に変わります。さて、もしこの時点でRAIDボードが壊れてしまった場合どうなるでしょう。ひょっとしたら新しいRAIDボードに入れ替えて新たに[HDD1][HDD3][HDD4] & [HDD2(HotSpare)という設定を施せば復活するかもしれないし復活しないかもしれません(使用するRAIDボードによるでしょう)。確実に言えるのは、このとき最初の設定[HDD1][HDD2][HDD3] & [HDD4(HotSpare)]にしてしまったら間違いなくRAID5は飛んでしまうでしょう。

つまり、安価なRAIDボード使っているとしたら、新しいRAIDボードに入れ替えてもRAID構成を復旧できるかどうかはボードによるし、もし対応可能なボードであっても壊れる直前のRAID構成情報を正しく把握していなければ復旧が行なえないことになります。

ただし安価なRAIDボードを使っていてもRAID構成がミラーリング(RAID1)なのであれば、RAID1には特にパリティ情報を保持しているわけではなく単にHDD1とHDD2に同じ情報を書き込んでいるだけなので、もしRAIDボードが死んでも、HDDだけ取り出してサーバに直接つなげば普通に読み書きできる場合が多いです。

というわけで、RAID5やRAID6といったパリティを用いるタイプのRAIDを組むのであれば高価なRAIDボード(数万円くらいするもの)でないと怖いですが、RAID1であれば安価なRAIDボードでもそれなりに使えるのではないでしょうか。

【高価なRAIDボードにバッテリーが搭載されている理由】
ここからは余談となりますが、高価なRAIDボードにはバッテリーが搭載されていることがあります。これはRAID構成情報を保持するためのものではなく、キャッシュデータを保持するメモリに何らかの理由で電源供給ができなくなった場合電源供給できるようにすること及び、もしRAIDボードの交換となった場合、キャッシュデータごと新しいRAIDボードに引き継げるようにバッテリーが搭載されている模様です。(DELLのRAIDボードとか)

【オンボードRAIDが壊れた場合】
マザーボードにRAIDチップが搭載されているような場合は、RAIDチップが壊れてしまうとマザーボードごと入れ替えなければならないので面倒です。

以上、RAIDについて述べてきました。RAIDって奥深いですね。

| | Comments (12) | TrackBack (0)

July 02, 2007

MTBF(平均故障間隔)の正しい読み方

HDDのカタログを見ると、MTBF(Mean Time Between Failures:平均故障間隔)が140万時間などと書いてあることがあります。140万時間というと約160年なわけで、つい「このHDDは平均160年間壊れない」と読み違えてしまうわけです。

しかしその解釈は間違いで、正確には

・140万台のHDDを同時稼動させたときに1時間に1台故障する

ということを意味しています。

ということは、「HDDを100台、24時間365日稼動させると1年で0.625台故障する」となります。

●計算式
160年:1台=1年:x
x=1/160=0.00625
0.00625x100台=0.625

■関連リンク
メーカー別HDDシリーズ一覧表
ストレージカテゴリー

| | Comments (0) | TrackBack (0)

March 16, 2007

ハードディスクの故障率に関するgoogleの研究結果

ハードディスクの故障率に関するgoogleの調査結果を見つけました。

ハードディスクは高温で利用しても故障は発生しないという新説には驚きました。ただこの件、ホームページを見る限りではどういう実験から導いた結論なのかまで記されていないのでその説が本当に正しいのかはわからないですね。

ただ、ハードディスクは常時アクセスがあり、回転している方が、こまめにスリープ状態に入るものよりも故障率は低くなるということになるとう説は正しい気がします。私の経験則的にもなんとなくそんな気がします。同じ方向に回り続けているのと、しょっちゅう回転にブレーキがかかるのとではたしかに前者のほうが寿命が長そうです。


あとちょっと脱線になりますが、「最初にハードディスクに対するスキャンを実行し、スキャンエラーが発生したディスクは、発生しなかったディスクに比べて60日以内に故障する確率は39倍も高くなる」とありますね。ハードディスクを購入したらまずはスキャンしてみるというのはとても良い習慣です。ハードディスクに限らず機械物は初期不良期が結構不具合率が高くそれを乗り越えると意外と長持ちする場合が多いですから、まずは初期不良ではないということをしっかりとチェックしておくと安心です。

■関連記事
壊れにくいサーバについて考える(HDD編)

| | Comments (1) | TrackBack (0)

March 15, 2007

ハードディスクを廃棄する方法

大規模サイトともなるとたくさんのハードディスクを保持しています。ここまでくるとほぼ毎日どこかしらのハードディスクが壊れているような状態で、それに伴い廃棄するハードディスクも年々増えてきています。そこで今回はハードディスクを安全に廃棄する方法を整理してみたいと思います。

【ハードディスクのデータを消去する】
単純にフォーマットした程度ではデータは割と簡単に復元できる、というのは有名な話しです。そこでハードディスクの中身をランダムなデータで埋め尽くすという方法が考案されました。これ、Linuxでは簡単に実現できます。

# shred -n 5 -vz /dev/hda (※hdaはハードディスクドライブ名)

shred。シュレッド。シュレッダーですね。ちなみに-nは何回ランダムなデータを書き込むかを指定するオプション。-vは進捗状況メッセージ表示。-zはshredを実行した後、NULで上書きするオプションです。

※おすすめ
CDROMブート可能なLinux CDを作っておくとCDブートしてコマンドを叩くだけでshredが出来ます。shredする機会が多い方は是非作っておきましょう。

【ハードディスクを破壊する】
ただ、shredが実行できるのはあくまでもハードディスクが生きている場合であって、そもそもドライブが認識しないだとか不良セクターがあるなどの場合はshredできません。こんなときはハードディスクを物理的に破壊するしかありません。

よく取られる方法は専用のハードディスク破壊機器を使うかもしくは電気ドリルで穴を開ける方法です。大規模サイトを運営している会社であれば各1セット持っておいたほうがよいと思います。

ただし注意があります。ハードウェアをリースやレンタルで調達している場合はそもそも業者が保有する資産ですから勝手に物理破壊することができません。こんな場合は業者に相談してしかるべき対処を双方で検討するしかありません。

【ハードディスクを廃棄する】
そしていよいよハードディスクの廃棄です。民間の廃棄物処理業者かもしくは地方自治体の清掃局に処理を依頼することになるかと思います。中古販売業者に処理を依頼すると中古品として販売されてしまう可能性があるので避けたほうがよいと思います。

【最後に】
セキュリティを考え出すとどうしても性悪説で物事を考えなければならないのであまり楽しい作業ではないといえます。しかし避けられないことは楽しめという言葉の通り、どうせやるなら楽しくかつ楽に済ませたいものです。shredコマンドや電気ドリル破壊等は発想がシンプルで操作も簡単なのでその方向性に合っていると思いご紹介してみました。

| | Comments (0) | TrackBack (0)

November 10, 2006

安く、早く、確実、安全なバックアップとは

今月分の@IT連載記事が掲載されました。タイトルは「安く、早く、確実、安全なバックアップとは」です。

http://www.atmarkit.co.jp/im/cop/serial/kanrisha/09/01.html

| | Comments (1) | TrackBack (0)

August 11, 2006

メーカー別HDDシリーズ一覧表

HDDを購入するときメーカー別のHDDシリーズを知ってないと比較が難しいのでまとめてみました。私が一番気にするのはエンタープライズストレージかデスクトップストレージかなのでその2つの大分類をしています。

一般的にエンタープライズストレージのMTBF(平均故障率)は100万時間、デスクトップストレージのMTBFは60万時間程度となっていて、私は壊れにくいエンタープライズストレージを積極的に選んで購入するようにしています。

※MTBFの意味についてはこちら


■■■[ Maxtor ]■■■

●エンタープライズストレージ
・Atlas 15K II
・Atlas 15K
・Atlas 10K
・MaxLine Pro 500
・MaxLine III
・MaxLine Plus II
・MaxLine II

●デスクトップストレージ
・DiamondMax

■■■[ Seagate ]■■■

●エンタープライズストレージ
・Cheetah
・Savvio(2.5inch)
・NL35

●デスクトップストレージ
・Barracuda
・Momentus(2.5inch)

■■■[ Western Digital ]■■■

●エンタープライズストレージ
・Raptor
・Caviar RE2
・Caviar RE

●デスクトップストレージ
・Rapror X
・Cavier SE16
・Cavier SE
・Cavier
・Scorpio(2.5inch)

■■■[ 日立 ]■■■

●エンタープライズストレージ
・Ultrastar

●デスクトップストレージ
・Deskstar
・Travelstar(2.5inch)

| | Comments (0) | TrackBack (0)

August 09, 2006

ハードディスクは外側と内側で速度が違う

ハードディスクは外側と内側で速度が違います。外側が速くて内側が遅いです。またハードディスクは外側から内側に向かって書き込んでいきます。

ということは、Windowsをインストールするとき普段何気なくパーティションを分け、CドライブにOSを、Dドライブにデータを入れるという行為はとても合理的だということがわかります。何故なら、速度の速い領域をアクセス頻度の高いOS用に押さえ、OSよりはアクセス頻度の遅いデータはそれ以外の領域を使う、という使い分けをしているからです。なかなか奥が深いですね。

| | Comments (1) | TrackBack (0)