Sql server SAN上的数据共享卷(多个MDF)和日志共享卷(多个LDF)

Sql server SAN上的数据共享卷(多个MDF)和日志共享卷(多个LDF),sql-server,database,sql-server-2008,san,Sql Server,Database,Sql Server 2008,San,我有3个SQL Server 2008实例,每个实例在不同的机器上,每个实例上有多个数据库。我的SAN上有两个单独的LUN用于MDF和LDF文件。NDX和TempDB文件在每台机器的本地驱动器上运行。3个实例可以共享同一个数据文件卷和另一个日志文件卷吗 我在SAN上没有精简资源调配,因此我不希望在创建多个卷时占用磁盘空间,因为有人建议我应该为每个实例(如果不是每个数据库)创建一个卷(驱动器号)。我知道我至少应该拆分日志和数据文件。没有实例会共享实际的数据库文件,只有驱动器上的空间 欢迎任何帮助。

我有3个SQL Server 2008实例,每个实例在不同的机器上,每个实例上有多个数据库。我的SAN上有两个单独的LUN用于MDF和LDF文件。NDX和TempDB文件在每台机器的本地驱动器上运行。3个实例可以共享同一个数据文件卷和另一个日志文件卷吗

我在SAN上没有精简资源调配,因此我不希望在创建多个卷时占用磁盘空间,因为有人建议我应该为每个实例(如果不是每个数据库)创建一个卷(驱动器号)。我知道我至少应该拆分日志和数据文件。没有实例会共享实际的数据库文件,只有驱动器上的空间

欢迎任何帮助。

当然,答案是:“视情况而定”。不过,我可以试着给你一些提示

SQL Server实例“假定”它对其资源具有独占访问权。因此,它将按照默认值填充所有可用RAM,它将使用所有CPU,并尝试使I/O通道饱和以获得最大性能。这就是一般建议防止实例并发访问相同磁盘的原因

另一件事是,SQL Server“知道”顺序I/O访问比随机I/O提供更高的trhoughput,因此有很多机制(如日志文件组织、预读、惰性编写器等)可以尽可能避免随机I/O

现在,如果三个SQL Server实例同时在单个卷上执行顺序I/O请求,那么从卷的角度来看,您将再次收到随机I/O请求,这会影响您的性能

也就是说,如果I/O子系统是一个重要的瓶颈,那么这只是一个问题。如果您的日志文件卷足够快,以至于实例的混合顺序写入不会产生问题,那么继续。如果实例上有足够的RAM,大部分时间都可以从缓冲区缓存中读取数据,那么I/O子系统就不需要太多的读取性能

在每种情况下,您都应该避免在日志或数据文件上执行多个增长步骤。如果一个文件系统上的多个文件在增长,您将得到碎片,碎片可以将一个连续的读或写请求(即使是从单个源)再次转换为随机I/O

如果将SSD用作磁盘,整个情况将再次发生变化。这些都有完全不同的要求和行为,但由于您没有提到任何关于SSD的内容,我假设您使用的是“传统的”基于磁盘的阵列或RAID配置


简短总结:如果情况合适,您可能会侥幸逃脱,但如果不从SAN和SQL的角度对您的系统有更多了解,则很难进行评估。

+1感谢TToni,RAID5上的日志位于2 15K磁盘阵列上,而RAID10上的数据位于4 15K磁盘阵列上。SQL Server在板上有最大内存(48GB)。SAN上的这些DB大多是只读的,大量的I/O DB流量通过一些单独的更快的Fusion IO磁盘。我主要担心的是,为每个SQL Server实例在每个阵列上创建卷仍将使用相同的LUN/轴,并且可能不会注意到性能上的任何改进。我在SAN上没有太多的空间,如果我只创建一个卷,它就更有可能不会耗尽空间。如何在两个磁盘上创建RAID-5?您确定它不是RAID-1(无论如何,对于日志卷来说,这是明智的选择,因为日志写得很重)?如果这就是你所拥有的,而你没有添加更多纺锤的选择,那么就继续前进,并期待最好的结果。正如您所说的,如果一个卷上有三个文件,或者三个卷上各有一个文件,并且基础磁盘在每种情况下都相同,那么这并不重要。只需确保避免数据库文件中的小大小增量,将NTFS群集大小设置为64KB,将RAID条带化设置为128 KB。