web-dev-qa-db-ja.com

PostgreSQL用のRAID4 x Intel SSD910への最良の方法

Linux(debian/ubuntu)サーバーに4 x Intel SSD 910 800GB pcieがあり、一緒にRAIDする必要があります。

これらのカードの最大の問題は、ハードウェアRAIDができない4x200GBドライブを提供することです(詳細はこちら: http://www.intel.com/support/ssdc/hpssd/sb/CS-034181 .htm

したがって、Linuxはこれらのドライブを検出します。

  • sda-システムドライブ
  • sdb-カード#1
  • sdc-カード#1
  • sdd-カード#1
  • sde-カード#1
  • sdf-カード#2
  • sdg-カード#2
  • sdh-カード#2
  • sdi-カード#2
  • sdj-カード#3
  • sdk-カード#3
  • sdl-カード#3
  • sdm-カード#3
  • sdn-カード#4
  • sdo-カード#4
  • sdp-カード#4
  • sdq-カード#4

これらを通常のようにRAIDすると、たとえばRAID-10とすると、たとえばカード#1が壊れた場合、同時に4台のドライブ(sdb、sdc、sdd、sde)が失われ、データが失われる可能性がありますか?

だから私はほとんどの(?)SSDカードがとにかく好きだと思っていました、「内部RAID-0」:

$ mdadm --create /dev/md0 --level=0 --raid-devices=4 /dev/sd[b-e]
$ mdadm --create /dev/md1 --level=0 --raid-devices=4 /dev/sd[f-i]
$ mdadm --create /dev/md2 --level=0 --raid-devices=4 /dev/sd[j-m]
$ mdadm --create /dev/md3 --level=0 --raid-devices=4 /dev/sd[n-q]
$ mdadm --create /dev/md4 --level=1 --raid-devices=4 /dev/md[0-3]

しかし、これはRAID-01であり、RAID-10に勝る利点はありません...したがって、RAID-10を実行する場合、次のようになります。

$ mdadm --create /dev/md0 --level=1 --raid-devices=8 /dev/sdb[a-h]
$ mdadm --create /dev/md1 --level=1 --raid-devices=8 /dev/sdb[i-q]
$ mdadm --create /dev/md2 --level=0 --raid-devices=2 /dev/md[0-1]

質問は、カード#1が壊れた場合、最初の4つのドライブが失われた場合、sdbがsdcにミラーリングされた場合はどうなりますか?

それで、これが決定された後、問題は、これでPostgreSQLを実行するためにどのチャンクサイズとブロックサイズを選択する必要があるかということです。 XFSを使用すると思いますが、アイデアはオープンです。

要約すると:

  • データを失うことなく1枚のカードを失うことができる必要があります(コールドスペアがあります)
  • 少なくとも1600GBのRAIDを取得する必要があります
4
Linus

あなたの最初の本能は正しいです:

だから私はほとんどの(?)SSDカードがとにかく好きだと思っていました、「内部RAID-0」:(スニップ)しかし、これはRAID-10よりも利点がないRAID-01です...

変更するのは最後の行だけです。

$ mdadm --create /dev/md4 --level=10 --raid-devices=4 /dev/md[0-3]

(変更に注意してください:レベル= 10)

これにより、基本的に各カードが自己完結型のRAID0アレイに変わり、個々の要素のRAID10アレイが作成されます。それは本質的にRAID010(ストライプのミラーのストライプ)です。 1枚のカードが死んだ場合でも、同じデータがミラーリングされた別のカードがあります。

2
Hyppy