我正在更新/扩展我的磁盘组,但不太确定从缓存角度来说要获取哪种磁盘。
16/32/64MB 的磁盘缓存量对于 1/1.5/2TB SATA 磁盘的容量有什么影响?这些磁盘将用于 Web 应用服务器和媒体工作站,Linux 的软 RAID 为 RAID-1/RAID-5 配置。请注意,由于这两个目的都纯粹是出于爱好,所以十几个磁盘的价格是一个大问题。
答案1
Cache和RAID有着有趣的关系。
昂贵的 RAID 控制器具有内置缓存,并且它们会关闭驱动器缓存(通常)。原因是 RAID 通常旨在确保数据安全并提高性能。缓存以牺牲可靠性为代价来提高性能,因为如果电源断电,缓存就会消失,即使软件认为它是安全的。这会导致真正需要知道磁盘上存在数据的软件出现问题。比如数据库。
如果使用控制器,电池可以将数据写入 NVRAM;如果使用电池供电的阵列,电池可以将数据写入物理磁盘。
软件 RAID 实际上没有这种选择。如果驱动器说“好的,我们得到了数据”,然后在数据仍在缓存中时电源断电,则会出现问题。没有 NVRAM 来保存数据,磁盘不会因为电池备份而继续旋转(无论如何,它们自己会这样做。可能有其他软件可以做到这一点)。
我将阅读软件 RAID HOWTO 中“设置注意事项”下的第 9 个问题: http://www.linuxjunkies.org/html/Software-RAID-0.4x-HOWTO.html#s3
这些问题有一些有趣的读物:
SATA 磁盘可以正确处理写入缓存吗?
LVM 镜像 VS RAID1
无论如何,回答你的问题...更多的驱动器缓存为驱动器提供了更多的“使用”空间。换句话说,从时间上讲,将数据实际放在磁盘上是昂贵的。将数据存储在内存中确实很便宜。
性能实际上取决于您施加在磁盘上的负载以及瓶颈所在。每个磁盘主轴都有一个统计信息,称为 IOPS(每秒 I/O 操作数 -http://adamstechblog.com/2009/02/10/how-to-calculate-iops-ios-per-second/) 决定了它将数据放在旋转盘片上的速度。如果您向硬盘驱动器输入的数据多于它可以放在磁盘上的数据,那么它会使用缓存。如果您不断敲打它,它会不断将数据输入到缓存中。当缓存填满时,您的计算机会等待磁盘清除“脏”数据(需要写入的数据)。
因此,使用 RAID 系统,您将拥有多个磁盘,从而增加 IOPS。添加足够多的主轴后,磁盘不再是瓶颈,而是成为阵列的传输(您还没有到达那里,不用担心)。
本质上,缓存越多,在将大量数据转储到磁盘时就越有回旋余地。如果您特别注重 IO,那么您会看到性能的提升。
另一方面,如果您、您的软件或您的(目前不存在的) RAID 阵列禁用驱动器缓存,那么您就白白付出了很多钱。
最后,如果您可以选择的话,请选择较低的缓存以获得更高的旋转速率。