我已经看到了各地的build议(包括这里和这里 ):将操作系统分区,数据库数据文件和数据库事务日志保存在不同的磁盘/arrays上。 一般的build议是使用RAID1作为操作系统,RAID10作为数据(或RAID5,如果加载非常偏向读取),RAID1作为事务日志。
但是,考虑到您至less需要6或8个驱动器才能build立此设置,那么使用BBWC的6-8驱动器的RAID10性能会不会更好? 如果硬盘是固态硬盘呢?
我在这里谈论内部服务器驱动器,而不是SAN。
这个build议出现的原因是为了避免超载一个磁盘组。 考虑以下一组同时事件:
如果您的系统运行在单个磁盘上,则头部现在需要在我们所SELECT的表所在的位置, /var所在的位置(logginglogin位置),Write-Ahead Log(写入日志loggingINSERT或UPDATE ),启动新用户会话所需的/home和/bin的各个位置,以及最后被INSERT或UPDATE的表格d。
所有这些磁盘头旅行都需要时间 – 因为冲突请求的数量越来越多,所需的时间就会变得可衡量,并且性能可能会受到影响。
如果这三个项目中的每一个都发生在一个单独的磁盘组上( SELECT到数据组, INSERT s和UPDATE到WAL组,OS到OS组),上述三项中的每一项理论上都可以并行(并且在数据组方便的时候可以完成预先写入日志的刷新)。
关键在于,这是基于理论上less量的主轴 – 单个磁盘或一个由2-4个驱动器组成的小型RAID组。
正如你和ewwhite所指出的那样,在一定程度上有更多的主轴缓解了头部冲突的请求,最终这个增益使大多数工作负载的潜在性能损失黯然失色。
这里的关键是对你的工作负载进行基准testing(尽可能的多)。
同样正如已经指出的那样,固态硬盘使主要假设无效(固态硬盘是任何“扇区”的固定时间访问 – 没有旋转或磁头定位延迟),所以如果您在您的SSD中使用固态硬盘devise:根据以下假设,您可能会发现从条带化SSD中获得更多的好处,即将冲突性磁盘请求需要更多时间重新定位机械磁头和磁盘,从而隔离它们以隔离活动。
我并不在乎将操作系统从内部磁盘设置中的数据驱动器中分离出来,因为拥有更多的主轴(以这种规模)的好处胜过了具有离散磁盘集的收益。
找出最好的方法是testing你的设置和你的数据…
请记住,您使用的是惠普控制器。 智能arrays控制器可以将8个磁盘组成一个(arrays),并将其分割成多个不同RAID级别的逻辑驱动器。 所以你可以把它分成200GB的RAID 5,36GB的RAID 1 + 0,100GB的RAID 1 + 0和50GB的RAID 0,如果你愿意的话……如果可以的话,最好使用更多的磁盘。
SSD改变了一些事情。 使用P410控制器,你真的不应该超过6个磁盘。 在这个水平以上的收益递减 。
上面的答案都很好,但还有另外一个原因是将操作系统从数据和/或日志中分离出来。 这使得更容易设置不同的防病毒策略。 这也是数据库和Web服务器保持数据与操作系统分离的安全最佳实践/要求。 最后一件事是你可以擦除和重build操作系统,而不必担心数据。
这可能取决于你的IO速度。 一个4磁盘RAID 10arrays可能会接近每秒500 IO操作。 您的最佳数据将来自性能testing,您可以在其中监控IO速率,磁盘队列长度和磁盘占用率。 如果一切都看起来不错,就没有必要移动。
对于固态硬盘,这是一个不同的故事。 一个磁盘将能够处理巨大的IO负载。 RAID 1arrays的性能可能会提高近2倍; 取决于你的RAID卡的性能,以及它是否读取了两个磁盘(最有可能)。 我担心固态硬盘和数据库日志将是大量的写入,如果它会减less驱动器的使用寿命。 我没有看到太多的数据。