![我可以使用 RAM 作为辅助存储设备的缓存吗](https://linux22.com/image/764522/%E6%88%91%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%20RAM%20%E4%BD%9C%E4%B8%BA%E8%BE%85%E5%8A%A9%E5%AD%98%E5%82%A8%E8%AE%BE%E5%A4%87%E7%9A%84%E7%BC%93%E5%AD%98%E5%90%97.png)
我有 10TB~ RAID 5 阵列和两个 RAID 0 上的 NVME 500GB
,它们位于不同的系统中。
我想要的是制作一个 16GB 左右的内存条,或者类似的东西作为缓存或缓冲区,以便我能够通过网络更快地访问第二个系统,我将使用(1 或 2)10GB 以太网进行连接
答案1
大多数操作系统默认使用 DRAM 作为缓存。研究缓存层和文件系统性能如何适用于您选择的操作系统。在安装更多内存之前和之后观察磁盘性能指标。
想想理论上瓶颈应该在哪里。如果 RAID 5 阵列位于磁主轴上,则每个驱动器的最大连续速度可能为 200 MB/s,这很可能是极限。如果这些是快速固态,则 10 Gb 以太网可能是极限。对于后一种情况,请考虑 25 Gb 链路,也许是多个。
也许您听过这个笑话,RAID 0 指的是一个驱动器发生故障后,数据将全部丢失。我怀疑使用 RAID 0 的人是否意识到了这种风险。销毁一个磁盘作为测试,并确定通过备份或重建进行恢复是否可行。
答案2
当然,它被称为 RAMDisk 或 RAMDrive。根据您的操作系统和预算,您可以使用不同的方式利用部分 RAM 制作一个。
在实施之前,有必要深入阅读一下,这通常不是最好的主意,但对于您的用例来说,也许会很棒!在走这条路之前,您一定要确认您的瓶颈在于磁盘 IO。
答案3
缓存的缺点是它们无法在崩溃和断电时幸存,因此文件系统会尽力了解实际写入磁盘的内容,并安排写入时间,以便在崩溃后可以快速恢复到一致状态。
实际上,这意味着文件系统将首先提交一个日志条目,等待已成功写入的报告,然后提交数据,等待报告,然后提交另一个日志条目以将数据标记为有效。在最后一部分完成之前发生的任何崩溃都会导致新数据无法显示的状态。
在大多数设置中,这是小访问的瓶颈,而不是原始吞吐量,摆脱该问题的唯一方法是使缓存写入算作持久写入,即缓存确认写入,然后接管将数据传送到磁盘的责任。
为了实现这一点,缓存需要具有一定的防崩溃功能,通常通过在单独的控制器中实现它来处理,这样如果主计算机崩溃,其状态仍能保持。
对于读取,缓存是安全的,并且已经由您的操作系统执行,因此这里没有太多的收获。