使用dm-cache,将SSD用作HDD的Cache
来源:互联网 发布:win8开始菜单软件 编辑:程序博客网 时间:2024/05/18 07:53
使用dm-cache,将SSD用作HDD的Cache
2017/04/10
大致步骤,原理及其他可替代方法参考下面的blog
参考:SSD Caching Using dm-cache Tutorial
- 使用dm-cache将SSD用作HDD的Cache
- 配置SSD Cache
- 查看用于Cache的SSD的实际大小
- 计算metadata占用的空间
- 建立ssd-metadata dm设备并清空
- 计算剩余的块数分配给ssd-cache
- 建立ssd-cache
- 获得origin设备的扇区数
- 建立origin设备256kB
- 验证
- 挂载
- 配置自启动
- 配置SSD Cache
- 停用Cache
- 参考文档
配置SSD Cache
1.查看用于Cache的SSD的实际大小
metadata的大小为
4MB+(16B * nr_blocks)
nr_blocks是cache设备的block的数量。本文使用256KB(262144B)作为cache block的大小。忽略SSD上分配给metadata的块。那么设备大小为(B):
$ sudo blockdev --getsize64 /dev/nvme0n1p1107374182400
2. 计算metadata占用的空间
1中得到的是字节数,将其转换为block数,并计算metadata所需分配的空间大小。
4194304 + (16 * 107374182400 / 262144)
10747904
10747904 / 512
20992
因此要给metadata分配20992个block。注意,如果计算结果不是整数,应该向上取整。
3.建立ssd-metadata dm设备并清空
$ sudo dmsetup create ssd-metadata --table '0 20992 linear /dev/nvme0n1p1 0'$ sudo dd if=/dev/zero of=/dev/mapper/ssd-metadata
4.计算剩余的块数分配给ssd-cache
107374182400 / 512
209715200
209715200 - 20992
209694208
5.建立ssd-cache
$ sudo dmsetup create ssd-cache --table '0 209694208 linear /dev/nvme0n1p1 20992'
6.获得origin设备的扇区数
$ sudo blockdev --getsz /dev/sda21953513472
7.建立origin设备(256kB)
$ sudo dmsetup create hdd-origin --table '0 1953513472 cache /dev/mapper/ssd-metadata /dev/mapper/ssd-cache /dev/sda2 512 1 writeback default 0'
8.验证
$ ls -l /dev/mapper/hdd-originlrwxrwxrwx 1 root root 7 April 10 18:16 /dev/mapper/hdd-origin -> ../dm-2$ sudo dmsetup status /dev/mapper/hdd-origin0 1953513472 cache 8 817/2624 512 0/409559 0 43 0 0 0 0 0 1 writeback 2 migration_threshold 2048 smq 0 rw -
9.挂载
$ sudo mkdir /mnt/cache$ sudo mount /dev/mapper/hdd-origin /mnt/cache
配置自启动
ssd-cache-wait.conf:
description "Suspend dmcache for SSD cache"author "Kyle Manna <kyle@kylemanna.com>"# Start monitoring with inotifywait (will block) after the filesystem is# mounted, when the filesystem is unmounted, teardown the dm devices.start on mounted MOUNTPOINT=/mnt/cachescript inotifywait -e unmount $MOUNTPOINT dmsetup suspend hdd-origin dmsetup remove hdd-origin dmsetup remove ssd-cache dmsetup remove ssd-metadataend script
ssd-cache.conf:
description "Configure dmcache for SSD cache"author "Kyle Manna <kyle@kylemanna.com>"# This would be handy, but it assumes the source device is already# available, which in this case it isn't.#start on mounting MOUNTPOINT=/mnt/cache# Run after /proc and /dev are finalizedstart on virtual-filesystemstaskscript # Setup the /dev/mapper/hdd-origin entity so that mountall will automount it after reading fstab dmsetup create ssd-metadata --table '0 20992 linear /dev/nvme0n1p1 0' dmsetup create ssd-cache --table '0 209694208 linear /dev/nvme0n1p1 20992' dmsetup create hdd-origin --table '0 1953513472 cache /dev/mapper/ssd-metadata /dev/mapper/ssd-cache /dev/sda2 512 1 writeback default 0' dmsetup resume hdd-originend script
把以上两个文件放到/etc/init下。
停用Cache
先清空,然后才可以停用
$ sudo umount /dev/mapper/hdd-origin$ sudo dmsetup table hdd-origin0 1953513472 cache 252:0 252:1 8:2 512 1 writeback default 0$ sudo dmsetup status hdd-origin0 1953513472 cache 8 817/2624 512 7/409559 104 46 1 0 0 7 0 1 writeback 2 migration_threshold 2048 smq 0 rw - $ sudo dmsetup suspend hdd-origin$ sudo dmsetup reload hdd-origin --table '0 1953513472 cache 252:0 252:1 8:2 512 0 cleaner 0'$ sudo dmsetup resume hdd-origin$ sudo dmsetup wait hdd-origin<wait for dirty data blocks to be written out>$ dmsetup remove hdd-origin$ dmsetup remove ssd-cache$ dmsetup remove ssd-metadata
完成后可以使用以下命令来检测文件系统
$ sudo fsck /dev/sda2
参考文档
Device Mapper Documention
Device Mapper - Cache
Device Mapper - Cache Policies
0 0
- 使用dm-cache,将SSD用作HDD的Cache
- dm-cache
- [转]Linux块设备加速缓存bcache和dm-cache:使用SSD来加速服务器
- ssd-cache
- dm-cache 与 bcache
- ssd-cache 不错的kv系统总结
- SSD和HDD的区别
- SSD和HDD的区别
- 缓存的使用Cache
- Query Cache 的使用
- 关于Cache的使用
- Cache的使用
- cache-control的使用
- Spring的Cache使用
- device-mapper 之 dm-cache分析
- cache使用
- .NET中Cache的使用
- .NET中Cache的使用
- 网页输出的种种bug
- 当CollapsingToolbarLayout与ToolBar如何设置Title居中
- 2017-04-09人人网鄙视题后三道原创正解,后续补分析!!!!
- jQuery事件之表单事件
- servlet实现简单的聊天室
- 使用dm-cache,将SSD用作HDD的Cache
- 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)
- 优化 | 重要的MySQL开发规范都在这了
- leetcode题目:gas-station 使用start/end方法的个人理解
- 【CF GYM101341I】Matrix God 题解
- 【模式串个数匹配】+ KMP
- NYOJ 1237 最大岛屿(DFS)
- 一个止步于64强的小白对于2017年华为挑战赛的总结(java+spfa+最小代价最大流+启发式算法)
- iframe访问父级页面、子级页面