ger*_*ijk 10
mdadm 是否包含缓存到另一个驱动器的工具?
不,Linux 软件raid(由 管理mdadm
)纯粹是为了创建一组磁盘以用于冗余目的。1
我知道有两个项目可以让你做到这一点:dm-cache和flashcache(两者都相对实验性)。它使您能够将 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)
归档时间: |
|
查看次数: |
23498 次 |
最近记录: |