优化ext2文件系统以用于LVM + RAID设备? 跨越,条带宽度,LVM IO大小的考虑

我正在build立一个新的数据库服务器,并试图确保我的设置尽可能正确。 在具有两个RAID控制器的外部SAS机箱中,数据库存储是RAID10中的22x 15.7k RPM Western Digital SAS驱动器。 最初,我在SASarrays上创build了一个单独的卷,用ext2格式化。 我计算了Stride和Stripe-Width如下:

  • chunk_size = 128 Kb
  • block_size = 4 Kb
  • total_disks = 22
  • data_disks = 11
  • stride = chunk_size / block_size = 128 Kb / 4 Kb = 32 Kb
  • stripe-width = stride * data_disks = 32 Kb * 11 = 352 Kb

当我创build文件系统时,我将Stride和Stripe-Width的值赋给了mkfs.ext2。

然后我尝试了另一个设置,这是我的问题开始的地方。 我在SASarrays上创build了两个卷,每个都有一个不同的“主”控制器。 当导出到主机时,我使用LVM2将它们初始化为物理卷,创build一个卷组,然后将'–stripes 2'传递给lvcreate以分割卷。 这样做的目的是将IO负载分散到两个控制器上,以获得更高的性能。

SASarrays的“最佳实践”文档中有一节介绍了LUN段(块)大小:

使用卷pipe理器将多个存储系统LUN收集到逻辑卷中时
卷pipe理器(LVM)卷组(VG)中,I / O分散带宽度分配给所有LUN中所有数据驱动器的所有>段。 调整后的公式为:LUN段大小= LVM I / O条带宽度/(数据驱动器数量/ LUN * LUN数量/ VG)

现在,SASarrays上的卷组有22个驱动器,其中11个是数据驱动器,有2个LUN。 主机上的卷组具有两个物理卷(LUN),并且两个LUN都访问相同的数据驱动器。 所以给定一个128Kb的LUN分段大小,我会计算LVM I / O条带宽度

  • 128 = LVM_Stripe_Width /(11 * 2)
  • 128 * 22 = LVM_Stripe_Width
  • 2816 = LVM_Stripe_Width

要么

  • 128 = LVM_Stripe_Width /(11 * 1)
  • 128 * 11 = LVM_Stripe_Width
  • 1408 = LVM_Stripe_Width

然后这导致我进入mkfs.ext2的Stride和Stripe-width问题:它的计算方式与最初的设置相同,还是因为LVM层而不同? 会成为吗?

  • chunk_size = 128 Kb
  • block_size = 4 Kb
  • total_disks = 2
  • data_disks = 2
  • stride = chunk_size / block_size = 128 Kb / 4 Kb = 32 Kb
  • stripe-width = stride * data_disks = 32 Kb * 2 = 64 Kb

哪里

  • total_disks = 2

来自' – 条纹2'给lvcreate?

谢谢,

肯德尔

我可以build议检查这个答案的想法。 我提供了一些关于alignmentxfs和有人评论ext3的反馈。 它可能会给你一些线索。

此外,在alignment文件系统之前,请确保您的卷与条带大小一致。 这可以通过适当调整元数据大小和优化范围大小来完成。 这里是一个例子:

pvcreate -M2 --metadatasize 2048K --metadatacopies 2 <raw_device> vgcreate --physicalextentsize 256M --autobackup y vg10 <pv_device>