单个文件组上有许多分区?这有意义吗?

单个文件组上有许多分区?这有意义吗?

我正在设计一个数据仓库解决方案,并且我是磁盘配置问题方面的新手,让我向您解释一下。

我们的存储分布在 6 个存储柜中,每个柜有 5 个 raid-1 磁盘阵列,每个磁盘阵列定义了 2 个 LUNS,总共有 48 个 LUNS(这是遵循 Microsoft 对数据仓库架构的快速通道建议)。

我想对我的数据进行分区,在我以前做过的其他项目中,我们总是遵循 1 分区 - 1 文件组规则。在 Microsoft Fast Track 建议中,建议创建一个文件组,然后为该文件组的每个 LUN 创建一个数据文件...但我假装有一个周级分区...如果我应用该规则,我认为我会得到太多文件和复杂的布局。

我正在考虑只创建一个文件组(包含 48 个 lun 数据文件),但仍要创建分区,因为我想保留分区的一些好处,例如分区切换... 这种情况不推荐吗?你有什么建议?

答案1

回答这个问题需要深入研究存储极客。我提前道歉。

微软建议使用 48 个独立分区的原因似乎只有一个:最大化操作系统内 I/O 的并行化。通过拥有 48 个 LUN,操作系统必须保留 48 个独立 I/O 队列,理论上这些队列可以并行服务。如果一个 LUN 特别慢(它正在执行大量随机写入),它将不会阻止对其他 LUN 的访问。

在现代硬件上,这仅仅是一个很小的百分比增益,但却带来了大量的存储问题。除非您知道您将把数据仓库的压力压到绝对上限,否则这是不值得的。现代 RAID 卡速度足够快,可以为您处理这个问题。拥有 4 个 LUN 可以带来收益。48 个 LUN 实际上可能会带来伤害。

如今,存储通常以每秒 I/O 操作数 (I/O Ops) 的性能指标来表征。每个驱动器都有自己的随机 I/O 上限(每个驱动器的范围在 90-180 之间,取决于 RPM 和其他一些因素)。当您将驱动器组合在一起时,例如在 RAID10 组中,此 I/O Ops 计数为添加剂。12 磁盘 RAID10 组将具有与 6 个 Raid1 对相同的 I/O Ops 容量,并且不会强迫您创建六个单独的 DB 文件。通过创建单个大型 RAID10 组,您可以创建一个可以处理大量负载的单个大型 DB 文件。

回到我在第二段中所说的内容,即慢速 LUN 不会阻碍对其他 LUN 的访问,这就是为什么最大化 LUN 的 I/O Ops 是有意义的。如果它有足够的 I/O Op 开销,它就不太可能阻塞。通过创建一个大型 RAID10 阵列,并行化被推到 RAID 卡上,而不是操作系统上,这使得操作系统可以自由地做其他事情。您仍然可以获得并行化优势,并且可以利用专用硬件来实现它。

对于数据库服务器来说,将数据文件和日志文件 I/O 放在不同的主轴上是明智之举。其中确切的百分比我将留给 SQL Server 专家(我不是其中之一),并且可能取决于您的确切配置和使用模式。由于它是一个数据仓库,因此您需要大量的日志空间来处理批量负载。日志 I/O 是相当连续的,而数据 I/O 是相当随机的,因此最好通过将日志放在与数据文件不同的主轴上来获得最大的日志记录性能。

就您而言,您可能能够使用 2 个 LUN。一个较大的 RAID10 集用于数据文件,另一个较小的 RAID10 集用于日志文件。

相关内容