为 PostgreSQL 构建 RAID 4 x Intel SSD 910 的最佳方式

为 PostgreSQL 构建 RAID 4 x Intel SSD 910 的最佳方式

我有一台 Linux(debian/ubuntu)服务器,配备 4 个 Intel SSD 910 800GB pcie,我需要将它们组合在一起进行 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,但也欢迎提出想法。

总结一下:

  • 需要能够丢失一张卡而不会丢失数据(我们有冷备用卡)
  • 需要至少 1600GB 的 RAID

答案1

你的第一直觉是正确的:

所以我想我确实像大多数 SSD 卡一样,“内部 RAID-0”:(剪辑)但这是一个 RAID-01,与 RAID-10 相比没有任何优势......

唯一需要改变的是你的最后一行:

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

(注意变化:level=10)

这实际上将每张卡变成一个独立的 RAID0 阵列,然后创建单个元素的 RAID10 阵列。它本质上是 RAID010(条带的镜像条带)。如果任何一张卡坏了,你仍然有另一张卡,上面有相同的镜像数据。

相关内容