我可以用 ssd 缓存 mdadm raid 吗?

Rob*_*ost 7 ssd raid cache mdadm

我有一个1TB的阵列中设置raid 1使用mdadm在Ubuntu 8,存储任务关键型文件。我想通过缓存到 SSD 来加快读/写速度,尤其是对于大文件。这可能吗?是否mdadm包含缓存到另一个驱动器的工具?

或者,我应该做些什么来将普通 RAM 分配给缓存?有 4GB RAM,要写入的文件很少大于 1GB,所以我认为仅使用 RAM 缓存,写入应该很快。

任何帮助将不胜感激。

ger*_*ijk 10

mdadm 是否包含缓存到另一个驱动器的工具?

不,Linux 软件raid(由 管理mdadm)纯粹是为了创建一组磁盘以用于冗余目的。1

我知道有两个项目可以让你做到这一点:dm-cacheflashcache(两者都相对实验性)。它使您能够将 SSD 用作速度较慢的硬盘驱动器或任何其他块设备(例如 md 设备)的缓存(读取和写入)。两者都提供了巨大的性能提升,并且非常易于调整以在耐用性和性能之间找到平衡。

不幸的是,到目前为止,它还没有打包或包含在内核中。因此,在 Ubuntu 中执行这不是一项非常简单的任务。随意弄脏你的手,但请记住,它是一些实验性软件,很难获得支持。

相关问题:

1 但是,您可以提示内核使用其中一个驱动器主要用于读取,以提高读取性能,但这与真正的 SSD 缓存并不完全相同。请参阅Gilles关于如何执行此操作的答案


我应该做些什么来将普通 RAM 分配给缓存?

这已经在每个 Linux 内核中启用了!您可以使用以下命令查看缓存页面的数量free

free -m
             total       used       free     shared    buffers     cached
Mem:         24047      17703       6343          0       6492       3550
-/+ buffers/cache:       7660      16386
Swap:         3811          0       3811
Run Code Online (Sandbox Code Playgroud)

在这里您可以看到,它现在缓存中有 3550 MB 的页面(文件系统级别),我的机器上有 6492 MB 的页面(块设备级别)。读取其中之一不会导致从磁盘读取。

要演示块级缓存,请尝试以下命令:

hdparm -Tt /dev/md127  # replace with your device - try both disks and md devices!

/dev/md127:
 Timing cached reads:   8624 MB in  2.00 seconds = 4313.50 MB/sec
 Timing buffered disk reads: 282 MB in  2.93 seconds =  96.31 MB/sec
Run Code Online (Sandbox Code Playgroud)

第一个结果显然来自内存中的缓存,而第二个结果是直接从磁盘读取的。

使用dd以下方法演示基于文件系统的缓存:

# first time
dd if=/home/gert/bigfile.img of=/dev/null 
5927206912 bytes (5.9 GB) copied, 25.9253 s, 229 MB/s

# second time
dd if=/home/gert/bigfile.img of=/dev/null 
5927206912 bytes (5.9 GB) copied, 4.91444 s, 1.2 GB/s

# third time, with file system cache disabled using iflag=direct
# yields results similar to first one
# Try using a bigger blocksize (bs=10M for example) if you're seeing very low speeds
dd if=/home/gert/bigfile.img of=/dev/null iflag=direct
Run Code Online (Sandbox Code Playgroud)

  • @MartinSchröder 这可能是一项不错的技术,但这是 Ask Ubuntu,而不是 [Ask Different](http://apple.stackexchange.com/)。从细节来看,它看起来很像架构中的 flashcache 和 dm-cache 解决方案。 (2认同)