我们的其中一台服务器出现问题。当我们复制更大的文件时(大意味着 50MB 或更大),复制操作(C:\ 到 C:)正常启动,但随后开始滞后,下降到 100kb/s 并使整个服务器挂起(我们的应用程序无法再从 SQL Server 返回结果,因此应用程序为用户挂起)。
Intel RST 在 SMART 上显示全绿色。以下是系统规格:
- 服务器: HPE ML10
- 存储: RAID5 配置中的 3x HP 3TB
- 操作系统: Windows Server 2012 R2
- 服务器角色:域控制器、应用程序服务器(SQL Server 和 .NET 应用程序)
- 存储设置:条带大小:128KB,写入缓存缓冲区刷新:启用,缓存模式:关闭,物理和逻辑扇区大小:512 字节
我不是服务器专家,所以我不确定我是否正确设置了这些东西。这里可能是什么问题?
编辑:我不是这些事情的专家(开发人员)。所以也许我做错了一些简单的事情。
EDIT2: http: //imgur.com/a/NNgDY磁盘写入性能极差。但是当我使用 Windows 资源管理器复制时,总不会挂起。我猜悬垂的资源管理器堵塞了消息泵,堵塞了系统。迁移到 RAID1/10 能否解决您认为的问题?
如果我正确解释“缓存模式:关闭”,那么写入性能很糟糕是完全可以理解的。检查从 RAID复制/读取(到网络或 NUL)是否是我的问题或复制/写入RAID - 我的猜测是正确的,只有写入 RAID 是一种痛苦。
RAID5 是分布式的 - 每个条带由(在您的情况下)三个段组成:data1、data2 和 parity12。现在,当一些数据写入数组时,它不能只写入数据段,因为奇偶校验不再匹配。
如果 data1 被写入/更改,控制器需要:
所以,只要有变化,控制器操作就会放大三倍!如果这些无法缓存,则每次写入都会导致执行三个操作,并且您的应用程序需要等待。使用缓存,可以省略很多读写操作,性能损失会小很多。
这种写操作放大的唯一例外是一次写入整个条带:只需从缓冲区中获取 data1 和 data2,计算 parity12 并写入所有三个段。这只是放大了 1.5 倍。但是,为了能够将所有传入数据组合成完整的条带,您需要能够对数据进行排队。你猜怎么着,你又需要缓存了。
简而言之:如果您使用 RAID5 或 RAID6,您绝对需要缓存- 这不是奢侈品。缓存太少甚至根本没有缓存会影响您的性能。如果它是具有可配置缓存的软件或托管 RAID,请留出至少 512 MB,最好是 1 或 2 GB,它会“飞起来”。具有三个驱动器的 RAID5 不会产生性能奇迹,但它可以正常工作。
编辑:HP ML10 G9 具有集成芯片组的 Intel RST SATA RAID 控制器 - 主机 RAID。根据使用的确切模型和控制器,缓存应该在某处可配置。