![采用 RAID 还是不采用 RAID:SSD 和虚拟化](https://linux22.com/image/1312692/%E9%87%87%E7%94%A8%20RAID%20%E8%BF%98%E6%98%AF%E4%B8%8D%E9%87%87%E7%94%A8%20RAID%EF%BC%9ASSD%20%E5%92%8C%E8%99%9A%E6%8B%9F%E5%8C%96.png)
我的主 PC 已经快要慢下来了,因为窗户腐烂我可能应该重新安装。而不是花一周时间反复思考、重新安装和配置,最后才发现我忘了备份我的 Visual Studio 设置再次,我要升级。我已经购买了所有部件,正在通过基准测试来找到最佳配置。
我买了两个Crucial M4 120GBSSD(截至 2012 年 4 月已更新至最新固件:)00F
,并使用以下软件运行了一些快速基准测试晶盘标记。以下是部分结果:
单驱动器:
RAID 0
通过英特尔 Z77芯片组控制器:
这些基准测试显然不是详尽无遗的,但我认为它们可以让我很好地了解不同配置之间的预期效果。
我的理解是,对于最常见的使用模式,即使用 Visual Studio 进行开发(我的主要用途),4K
即使在构建期间,读取和写入也更为常见。在有RAID 0
和无之间,差别很小。但对于512K
R Sequential
/W,差异足以引起注意。
问题是,为了避免将来出现腐烂问题(坦率地说,因为我可以),我将更多地依赖虚拟化。我的计划是使用虚拟机将开发环境的不同部分划分为VMware工作站:一个上面是 Visual Studio 和附带工具,另一个上面是 SQL Server,还有另一个上面是 Adobe Design Suite,等等。通过利用 VM 快照以及创建或克隆新快照的简便方法,我相信我会看到长期可靠性的改善(并且只会在我想要时看到 Adobe 更新弹出窗口)。
我的问题是,RAID 0
与传统设置相比,虚拟化是否值得使用SSD 配置(在我的例子中,操作系统和裸机应用程序位于一个 SSD 上,而虚拟机位于另一个 SSD 上)?虚拟化是否会利用512K
和Sequential
R/W 的优势RAID 0
?
观察:
我读到过一些现代固态硬盘能够自行管理垃圾收集,因此没有垃圾收集功能并不是TRIM
什么大问题。但我不知道如何在我的固态硬盘上启用此功能,甚至不知道它们是否支持此功能。
编辑:
关于灾难恢复,该系统还具有用于文件存储的大型标准盘片驱动器和最终将在镜像阵列中使用它的辅助 RAID 控制器。结合夜间本地备份、通过 Carbonite 进行的持续异地备份以及一致的异地源代码控制签入,我拥有足够的手段来防止数据丢失。
答案1
首先,众所周知,编译代码在很大程度上受 CPU 限制,因此不要指望它比单个 SSD 有改进。
在您的基准测试中,虽然 4k 0 队列深度性能没有增加,但 4k 32 队列深度 (QD32) 确实几乎呈线性增加。在我看来,这个结果应该会决定您的决定。
即使工作站不是具有持续较大队列深度的数据库服务器,在半密集型工作站使用期间,至少在突发情况下,2-20 的队列深度很常见 - 在这种情况下,随机 IO 确实会通过 RAID 0 得到改善。考虑到 VM 添加了另一层同时进行的 OS 活动(并且您最终可能会使用 2+ 个同时进行的 VM),我认为这个指标应该可以改善您场景中的情况。
您可以在 Windows 的性能监视器(添加计数器...物理磁盘...平均读/写队列深度)中监视当前队列深度使用情况以了解情况。
RAID 确实增加了一层复杂性(以及备份/恢复问题),但在我看来,拥有更大的 240gb 分区绝对是一个优势。在驱动器上使用 RAID 之前,请验证是否存在任何 TRIM 问题 - 这可能是一个致命问题。
答案2
硬盘速度对于 Visual Studio 的整体性能至关重要。Scott Guthrie 在本篇文章中很好地阐述了这一点邮政:
在过去的几年中,机器上的多核 CPU 已经变得足够快,在大多数常见的应用场景中,您通常不会阻塞机器中可用的处理器容量。
当您使用 Visual Studio 进行开发时,您最终会读取/写入大量文件,并花费大量时间进行磁盘 I/O 活动。大型项目和解决方案可能有数百(或数千)个源文件(包括图像、css、页面、用户控件等)。当您打开一个项目时,Visual Studio 需要读取并解析其中的所有源文件以提供智能感知。当您加入源代码管理并签出文件时,您正在更新磁盘上的文件和时间戳。当您编译解决方案时,Visual Studio 将从多个磁盘路径位置检查更新的程序集,在编译完成后将多个新程序集写入磁盘,以及将 .pdb 调试器符号文件与它们一起保存在磁盘上(所有都是作为单独的文件保存操作)。当您将调试器附加到进程时(按 F5 运行应用程序时的默认行为),Visual Studio 需要搜索并加载应用程序的所有程序集和 DLL 的调试器符号以设置断点。
就我个人经验而言,使用 SSD 有很大帮助,但考虑到大量磁盘 I/O 可能是小规模随机读取,RAID 0 可能不会带来很大改进。您可能会发现的另一件事是虚拟磁盘 I/O 会吞噬您的部分收益。
答案3
Intel Z77 支持 Trim 和 RAID,是首批支持此功能的低预算芯片组之一。但您需要在存储设置中指定您正在使用 SSD。