适用于PostgreSQL的RAID 4 x Intel SSD 910的最佳方法

我有一个Linux(Debian / Ubuntu的)服务器与4个英特尔SSD 910 800GB pcie,我需要RAID一起。

这些卡最大的问题是,他们给你4X200GB的驱动器,你不能硬件RAID(更多关于这个: 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[be] $ mdadm --create /dev/md1 --level=0 --raid-devices=4 /dev/sd[fi] $ mdadm --create /dev/md2 --level=0 --raid-devices=4 /dev/sd[jm] $ mdadm --create /dev/md3 --level=0 --raid-devices=4 /dev/sd[nq] $ 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[ah] $ mdadm --create /dev/md1 --level=1 --raid-devices=8 /dev/sdb[iq] $ mdadm --create /dev/md2 --level=0 --raid-devices=2 /dev/md[0-1] 

问题是,如果1号卡断了,会发生什么情况,我会丢失前4个驱动器,如果sdb镜像在sdc上呢?

所以在这之后决定问题是,在这个上运行PostgreSQL应该select什么块大小和块大小? 我会认为我们将会使用XFS,但愿意开放。

所以总结一下:

  • 需要能够丢失一张卡没有dataloss(我们有冷备份)
  • 需要获得至less1600GB的RAID

你的第一个直觉是正确的:

所以我以为自己喜欢大多数(?)固态硬盘卡,无论如何,“内部RAID-0”:(片段)但是这是一个RAID-01,没有RAID-10的好处…

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

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

(注意更改:级别= 10)

这本质上是将每张卡片转换成一个独立的RAID0arrays,然后创build一个单独元素的RAID10arrays。 它基本上是RAID010(一条条纹镜像)。 如果任何单张卡片死亡,您仍然拥有另一张具有相同数据镜像的卡片。