SQL Server-在SAN上分离数据,日志和TempDB文件


8

我有一个连接到SAN的SQL Server。我们的新存储供应商建议所有LUN跨越整个磁盘阵列,即RAID5。我通常会向SAN管理员请求3个单独的LUN(数据,日志和TempDB),但是鉴于新供应商的建议,创建单独的LUN有什么意义吗?还是如果所有内容都在一个LUN中,因为它仍然可以覆盖所有磁盘,我是否会看到相同的性能?

很棒的文章在这里,但是并不能完全解决我的确切情况:http : //www.brentozar.com/archive/2008/08/sql-server-on-a-san-dedicated-or-shared-drives/

Answers:


6

要考虑的一件事是日志文件是顺序写入,而数据文件是非顺序写入。这是分离LUN的原因之一。如果日志文件位于自己的LUN上,则写入速度更快,因为主轴不必跳过,只需顺序写入即可。如果添加数据文件,则主轴必须跳动,并且会降低性能。我希望在那里有了正确的术语,因为我对SAN本身并不那么熟悉。然而,背后的想法应该是。

对于SQL Server,通常供应商的建议是错误的。仅仅因为SQL Server与大多数使用SAN的应用程序有不同的需求。


1
我认为OP在说的是,无论LUN如何,它们都命中相同的主轴。换句话说,隔离的磁盘池没有物理隔离。
Thomas Stringer

1
嗯,我想我说的不是那样设置的:)即使供应商建议,将每个LUN都放在不同的心轴上。如果这不可能,则没有性能上的理由将它们分开在不同的LUN上。尽管您永远都不知道在后台以及将来在某个时候(如果它们位于单独的LUN上)会发生什么情况,但是它们可能会移动到不同的主轴上。
肯尼斯·费舍尔

4

很大程度上取决于SAN,通常您需要配置具有不同的缓存,压缩,加密,预读,直写/回写策略,优先级等的不同LUN。SQL数据文件通常表现出与tempdb或日志不同的行为。文件。访问方法/网络也将发挥作用,因为中继,多路径和其他技术可能会或可能不会起作用,这取决于您的访问方法(FC,iSCSI等)和基础结构。您将希望能够通过SQL Server最大限度地利用网络,因为延迟和吞吐量至关重要。我已经看到了网络团队设置的案例,但是由于客户端没有意识到的其他限制,只有1Gbps可用。我同意肯尼斯(Kenneth)的观点,建议卖方服用大量盐,这经常是错误的。SQL Server是善变的野兽,绝对值很少,通常只是更多问题。(通过测试)提出正确的问题才是真正的关键。


2

除非来自销售或市场部门,否则不要“接受含大量盐的供应商建议”。相反,如果您可以与他们的技术实施人员接触,请结识朋友。

这可能是虚拟化存储池并包括自动分层功能的新型设备之一。一个例子就是Compellent。他们执行各种方式的SAN伏都教,例如:

  • 使用性能优化的RAID级别(例如RAID 10)将活动数据块写入一级存储。
  • 使用高开销,高保护性的RAID 5或6自动将不活动的数据块迁移到较低层的存储中。

对于Compellent,存储分为3层,其中Tier1是最快的(SSD或RAID 10),直到存储7k SAS磁盘的Tier3变慢。我尚未在生产环境中使用其中一种,但确实可以使用其中一种,希望能够对此进行一些测试。

我承认对自动层功能很感兴趣并且很害怕,从表面上看这听起来很棒,但是在生产中可能会出现问题。可能破坏自动分层机制的第一个示例是数据库备份。那里有一个重复的高写入目标,它可能使分层机制愚弄到将块移动到高性能池中,从而可能将应该存在的数据推出。

对于原始问题:

...创建单独的LUN有什么意义吗?

可能不是。确保供应商清楚用例,但是如果它是Compellent类型的设备,我相信您不会从分割LUN中获得任何收益。


2

分离LUN有什么意义吗?几乎总是。否则,最终会导致Windows服务器上的LUN队列过载。无论操作系统,虚拟化或存储平台如何,经历qfull的状况都是痛苦的

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.