dm-cache 与 bcache
- See more at: http://wangxu.me/blog/#sthash.smQmCr76.dpuf
文章来源:http://blog.csdn.net/cybertan/article/details/9475767
Linux块设备加速缓存之bcache
7/25/12 随机测试
- root@utumno:~# fio ~/rw4k
- randwrite: (g=0): rw=randwrite, bs=4K-4K/4K-4K, ioengine=libaio, iodepth=64
- fio 1.59
- Starting 1 process
- Jobs: 1 (f=1): [w] [100.0% done] [0K/49885K /s] [0 /12.2K iops] [eta 00m:00s]
- randwrite: (groupid=0, jobs=1): err= 0: pid=1770
- write: io=8192.3MB, bw=47666KB/s, iops=11916 , runt=175991msec
- cpu : usr=4.33%, sys=14.28%, ctx=2071968, majf=0, minf=19
- IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0%
- submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
- complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.1%, >=64=0.0%
- issued r/w/d: total=0/2097215/0, short=0/0/0
- Run status group 0 (all jobs):
- WRITE: io=8192.3MB, aggrb=47666KB/s, minb=48810KB/s, maxb=48810KB/s, mint=175991msec, maxt=175991msec
- Disk stats (read/write):
- sdb: ios=69/2097888, merge=0/3569, ticks=0/11243992, in_queue=11245600, util=99.99%
- root@utumno:~# fio ~/rw4k
- randwrite: (g=0): rw=randwrite, bs=4K-4K/4K-4K, ioengine=libaio, iodepth=64
- fio 1.59
- Starting 1 process
- Jobs: 1 (f=1): [w] [100.0% done] [0K/75776K /s] [0 /18.5K iops] [eta 00m:00s]
- randwrite: (groupid=0, jobs=1): err= 0: pid=1914
- write: io=8192.3MB, bw=83069KB/s, iops=20767 , runt=100987msec
- cpu : usr=3.17%, sys=13.27%, ctx=456026, majf=0, minf=19
- IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0%
- submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
- complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.1%, >=64=0.0%
- issued r/w/d: total=0/2097215/0, short=0/0/0
- Run status group 0 (all jobs):
- WRITE: io=8192.3MB, aggrb=83068KB/s, minb=85062KB/s, maxb=85062KB/s, mint=100987msec, maxt=100987msec
- Disk stats (read/write):
- bcache0: ios=0/0, merge=0/0, ticks=0/0, in_queue=0, util=0.00%
IO depth of 32: bcache 20.3k iops, raw ssd 19.8k iops
IO depth of 16: bcache 16.7k iops, raw ssd 23.5k iops
IO depth of 8: bcache 8.7k iops, raw ssd 14.9k iops
IO depth of 4: bcache 8.9k iops, raw ssd 19.7k iops
IO depth of 64: bcache 29.5k iops, raw ssd 25.4k iops
IO depth of 16: bcache 28.2k iops, raw ssd 27.6k iops
- # cat /usr/lib/udev/rules.d/61-bcache.rules
- ....
- # Backing devices: scan, symlink, register
- IMPORT{program}="/sbin/blkid -o udev $tempnode"
- # blkid and probe-bcache can disagree, in which case don't register
- ENV{ID_FS_TYPE}=="?*", ENV{ID_FS_TYPE}!="bcache", GOTO="bcache_backing_end"
- ...
- # lsblk -o NAME,MAJ:MIN,RM,SIZE,TYPE,FSTYPE,MOUNTPOINT,UUID,PARTUUID
- NAME MAJ:MIN RM SIZE TYPE FSTYPE MOUNTPOINT UUID PARTUUID
- sda 8:0 0 111.8G disk
- ├─sda1 8:1 0 3G part vfat /esp 7E67-C0BB d39828e8-4880-4c85-9ec0-4255777aa35b
- └─sda2 8:2 0 108.8G part ext2 93d22899-cd86-4815-b6d0-d72006201e75 baf812f4-9b80-42c4-b7ac-5ed0ed19be65
- sdb 8:16 0 931.5G disk
- └─sdb1 8:17 0 931.5G part ntfs FAD2B75FD2B71EB7 90c80e9d-f31a-41b4-9d4d-9b02029402b2
- sdc 8:32 0 2.7T disk bcache 4bd63488-e1d7-4858-8c70-a35a5ba2c452
- └─bcache1 254:1 0 2.7T disk btrfs 2ff19aaf-852e-4c58-9eee-3daecbc6a5a1
- sdd 8:48 0 2.7T disk bcache ce6de517-7538-45d6-b8c4-8546f13f76c1
- └─bcache0 254:0 0 2.7T disk btrfs 2ff19aaf-852e-4c58-9eee-3daecbc6a5a1
- sde 8:64 1 14.9G disk
- └─sde1 8:65 1 14.9G part ext4 / d07321b2-b67d-4daf-8022-f3307b605430 5d0a4d76-115f-4081-91ed-fb09aa2318d
# make-bcache -B /dev/sdc /dev/sdd -C /dev/sda2
# dd if=/dev/zero count=1 bs=1024 seek=1 of=/dev/sda2
- # lsblk -o NAME,MAJ:MIN,RM,SIZE,TYPE,FSTYPE,MOUNTPOINT,UUID,PARTUUID
- NAME MAJ:MIN RM SIZE TYPE FSTYPE MOUNTPOINT UUID PARTUUID
- sda 8:0 0 111.8G disk
- ├─sda1 8:1 0 3G part vfat /esp 7E67-C0BB d39828e8-4880-4c85-9ec0-4255777aa35b
- └─sda2 8:2 0 108.8G part bcache 93d22899-cd86-4815-b6d0-d72006201e75 baf812f4-9b80-42c4-b7ac-5ed0ed19be65
- ├─bcache0 254:0 0 2.7T disk btrfs 2ff19aaf-852e-4c58-9eee-3daecbc6a5a1
- └─bcache1 254:1 0 2.7T disk btrfs 2ff19aaf-852e-4c58-9eee-3daecbc6a5a1
- sdb 8:16 0 931.5G disk
- └─sdb1 8:17 0 931.5G part ntfs FAD2B75FD2B71EB7 90c80e9d-f31a-41b4-9d4d-9b02029402b2
- sdc 8:32 0 2.7T disk bcache 4bd63488-e1d7-4858-8c70-a35a5ba2c452
- └─bcache1 254:1 0 2.7T disk btrfs 2ff19aaf-852e-4c58-9eee-3daecbc6a5a1
- sdd 8:48 0 2.7T disk bcache ce6de517-7538-45d6-b8c4-8546f13f76c1
- └─bcache0 254:0 0 2.7T disk btrfs 2ff19aaf-852e-4c58-9eee-3daecbc6a5a1
- sde 8:64 1 14.9G disk
- └─sde1 8:65 1 14.9G part ext4 / d07321b2-b67d-4daf-8022-f3307b605430 5d0a4d76-115f-4081-91ed-fb09aa2318dd
文章来源:http://blog.csdn.net/liumangxiong/article/details/17839797
Linux内核之bcache简介
- make-bcache -B /dev/sdb
- make-bcache -C /dev/sdc
- make-bcache -B /dev/sda /dev/sdb -C /dev/sdc
- echo /dev/sdb > /sys/fs/bcache/register
- echo /dev/sdc > /sys/fs/bcache/register
- /dev/bcache<N>
- /dev/bcache/by-uuid/<uuid>
- /dev/bcache/by-label/<label>
- mkfs.ext4 /dev/bcache0
- mount /dev/bcache0 /mnt
- echo 1 > /sys/block/sdb/bcache/running
- #echo writeback > /sys/block/bcache0/cache_mode
- #echo 0 > /sys/block/bcache0/bcache/sequential_cutoff
- #echo 4M > /sys/block/bcache0/bcache/sequential_cutoff
- #echo 0 > /sys/fs/bcache/<cache set>/congested_read_threshold_us
- #echo 0 > /sys/fs/bcache/<cache set>/congested_write_threshold_us
文章来源:http://blog.csdn.net/liumangxiong/article/details/18090043
使用 LVM (基于dm-cache) 新的缓存特性
如果你有一台带有慢速硬盘和快速SSD的电脑,你想使用SSD作为快速持久缓存用来提升访问硬盘的速度。然而直到最近,你有三个选择:bcache和dm-cache都upstream,或者Flashcache/EnhanceIO。Flashcache不是upstream。dm-cache要求你首先坐下来,使用计算器计算块的偏移。bcache是三个选择中最全面的。
但是最近LVM已经增减了缓存的支持(构建在dm-cache之上),因此在理论上,你能让已存在的逻辑卷转换到已缓存的设备。
安装
为了在实践中了解是怎样工作的,我在以前的无盘虚拟群集中添加了3块硬盘。
在镜像配置中有两个2TB的WD硬盘。通过蓝色(冷)线连接。在左侧是三星EVO 250GB SSD,作为缓存的红色(热)盘。
另一个新闻:哦,现在品牌制造商的SSD是真的便宜!
lsblk输出如下,sda和sdb是WD硬盘,sdc是三星SSD:
1
2
3
4
5
6
7
8
9
|
# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1.8T 0 disk
└─sda1 8:1 0 1.8T 0 part
└─md127 9:127 0 1.8T 0 raid1
sdb 8:16 0 1.8T 0 disk
└─sdb1 8:17 0 1.8T 0 part
└─md127 9:127 0 1.8T 0 raid1
sdc 8:32 0 232.9G 0 disk
└─sdc1 8:33 0 232.9G 0 part
|
性能
在创建 缓存之前,先看看硬盘的速率如何. 以下数据包含了 ext4 和 LVM overhead (ie. 体现在文件系统里,并非块存储). 我还用了 O_DIRECT.
HDD writes: 114 MBytes/sec
HDD reads: 138 MBytes/sec
SSD writes: 157 MBytes/sec
SSD reads: 197 MBytes/sec
这些数字并没有体现出SSDs的好处 — 就是随机访问硬盘时,性能没有什么区别.
Terminology
lvmcache(7) [没有什么能拷贝的地方] 文档指出了一些用到的术语:
1
2
3
4
5
|
origin LV OriginLV large slow LV
cache data LV CacheDataLV small fast LV for cache pool data
cache metadata LV CacheMetaLV small fast LV for cache pool metadata
cache pool LV CachePoolLV CacheDataLV + CacheMetaLV
cache LV CacheLV OriginLV + CachePoolLV
|
创建 LVs
文档中很夸张的提到,移除错误的 LV 将会完全颠覆之前的 OriginLV, 为了测试这一特性我 在有几个镜像文件的慢速HDDs上创建了一个 OriginLV:
1
2
3
|
# lvcreate -L 100G -n testoriginlv vg_guests
Logical volume "testoriginlv" created
# mkfs -t ext4 /dev/vg_guests/testoriginlv
|
需要注意的是resizing cached LVs功能目前并未提供 (可能以后出来 — 现在只能先移除缓存,从新分配大小再重新创建缓存).
创建缓存层
从文件的角度来说,这并不明确,但是一切都必须在一个简单的卷组中. 也就是说,你必须创建一个既包括慢速和快速的磁盘卷组 - 它并不是简单工作。
因此,我的第一个步骤是扩大我现有的VG ,包括快盘:
1
2
|
# vgextend vg_guests /dev/sdc1
Volume group "vg_guests" successfully extended
|
我创建了快速的SSD两个LVs 。一个是CacheDataLV ,这就是缓存发生。另一个是用于存储被高速缓存在CacheDataLV的数据块的索引的CacheMetaLV 。该文件说, CacheMetaLV应该是千分之一的CacheDataLV的大小,但最少为8MB 。由于我的总可用空间快是232GB ,而我希望有一个1000:1的分裂,我大方的选择一个1GB的CacheMetaLV , 229G的CacheDataLV ,而且会留下一些遗留下来的空间(我最终的分割结果是229:1 ) 。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
# lvcreate -L 1G -n lv_cache_meta vg_guests /dev/sdc1
Logical volume "lv_cache_meta" created
# lvcreate -L 229G -n lv_cache vg_guests /dev/sdc1
Logical volume "lv_cache" created
# lvs
LV VG Attr LSize
lv_cache vg_guests -wi-a----- 229.00g
lv_cache_meta vg_guests -wi-a----- 1.00g
testoriginlv vg_guests -wi-a----- 100.00g
# pvs
PV VG Fmt Attr PSize PFree
/dev/md127 vg_guests lvm2 a-- 1.82t 932.89g
/dev/sdc1 vg_guests lvm2 a-- 232.88g 2.88g
|
(你会发现,我的缓存大于我的测试OriginLV ,但是这很好,因为一旦我已经制定了所有的陷阱,我真正的OriginLV将超过1 TB).
为什么要在PV上留下2.88GB的空间?我也不太清楚,只是第一次使用时,我并没有预留空间,结果执行 lvconvert命令后 [如下] 提示需要1GB的扩展空间。
把 CacheDataLV和CacheMetaLV 放到“缓存池”里 :
1
2
3
|
# lvconvert --type cache-pool --poolmetadata vg_guests/lv_cache_meta vg_guests/lv_cache
Logical volume "lvol0" created
Converted vg_guests /lv_cache to cache pool.
|
接着把缓存池连到OriginLV来创建最终的缓存工程:
1
2
|
# lvconvert --type cache --cachepool vg_guests/lv_cache vg_guests/testoriginlv
vg_guests /testoriginlv is now cached.
|
结果
看起来还不错? 在使用缓存 LV后,得到的数据如下:
LV-cache writes: 114 MBytes/sec
LV-cache reads: 138 MBytes/sec
和原来硬盘的结果一致.
还好没出什么岔子. MikeSnitzer说明了我的dd测试在dm-cache中无效的原因 Mike Snitzer gave me an explanation of why my test usingddisn’t a useful test of dm-cache.
接下来我会创建一些请求,然后看看他们的性能如何 (就是刚才我提到的问题).
英文原文:Using LVM’s new cache feature
文章来源:http://www.oschina.net/translate/using-lvms-new-cache-feature
dm-cache 与 bcache相关推荐
- 【华为云技术分享】[HDC.Cloud]基于鲲鹏平台的Ceph深度性能调优
随着IOT.大数据.移动互联等应用的暴涨,产生的数据也越来越多,整个存储市场总量也逐年增长,预计到2021年分布式存储会占到整个存储市场的50%,到2027年,分布式存储会占到整个市场的70%.Cep ...
- 计算机组成原理勘误,《计算机组成原理》勘误表.doc
<计算机组成原理>勘误表.doc <计算机组成原理>勘误表 页数行数原文修改或说明P8图1.8 P286原码除符号位外,各位取反.末位加1原码除符号位外各位取反.再在末位加1P ...
- linux企业级应用实战运维和调优资源,Linux企业级应用实战、运维和调优
部分 Linux实用生产技能 章 生产常用基础技能 2 1.1 Hostname & Network 3 1.1.1 基础知识 3 1.1.2 Network指令 3 1.1.3 配置以太网静 ...
- MySQL(InnoDB剖析):53---性能调优之(CPU的选择、内存的重要性、磁盘对数据库性能的影响)
一.CPU的选择 用户首先需要清楚当前数据库的应用类型.一般而言,可分为两大类:OLTP(Online Transaction Processing,在线事务处理)和OLAP(Online analy ...
- 【MySQL技术内幕】64-性能优化
性能优化不是一项简单的工作,但也不是复杂的难事,关键在于对 InnoDB存储引擎特性的了解.如果之前各章的内容读者已经完全理解并掌握了,那就应该基本掌握了如何使 InnoDB存储引擎更好地工作.本章将 ...
- MySQL技术内幕-InnoDB存储引擎第2版-学习笔记-02
MySQL技术内幕-InnoDB存储引擎第2版-学习笔记-02 6. 锁 人们认为行级锁总会增加开销.实际上,只有当实现本身会增加开销时,行级锁才会增加开销.InnoDB 存储引擎不需要锁升级,因 ...
- linux控制cache使用值e,[轉]Linux塊設備加速緩存bcache和dm-cache:使用SSD來加速服務器...
在 LSFMM 2013 峰會上,Mike Snitzer, Kent Overstreet, Alasdair Kergon, 和 Darrick Wong 共同主持了一個討論,內容是關於兩個彼此獨 ...
- linux cache控制 内核,linux内核之bcache简介 [转]
bcache是按照SSD特性来设计的,只按擦除桶大小进行分配,使用btree和日志混合方法来跟踪缓存数据,缓存数据可以是桶上的任意一个扇区.bcache最大程度上减少了随机写的代价,它按顺序填充一个桶 ...
- linux内核cache使无效,linux内核之bcache简介
bcache是按照SSD特性来设计的,只按擦除桶大小进行分配,使用btree和日志混合方法来跟踪缓存数据,缓存数据可以是桶上的任意一个扇区.bcache最大程度上减少了随机写的代价,它按顺序填充一个桶 ...
- [转]Linux块设备加速缓存bcache和dm-cache:使用SSD来加速服务器
dm-cache 与 bcache 在 LSFMM 2013 峰会上,Mike Snitzer, Kent Overstreet, Alasdair Kergon, 和 Darrick Wong 共同 ...
最新文章
- 不能跳过的《程序员的职业素养》(The Clean Coder)中的一个章节
- 不可错过!普渡大学最新《机器学习》课程
- 五、【SAP-PM模块】服务采购业务流程
- Yolo-将coco数据集中的json文件转为txt且解决类别不连续问题
- 算法系列之使用赫夫曼编码的实战应用【对文件进行压缩、解压缩】
- nginx http proxy 反向代理
- VMware VSphere 虚拟化云计算学习配置笔记(四)
- 智能家居逐渐融入AI技术 向大众市场扩张仍需时间
- 计算机主机图片开机按钮,解决电脑开机按钮无法使用方法
- 手机python编程文件如何转文档_Python 开发者面向文档编程的正确姿势
- 通过深度学习检测疟疾
- go 基准测试 找不到函数_初学TDD:测试也能推动开发啦!
- java中的递归问题_java 递归问题
- Windows服务工程创建、部署
- atitit.jndi的架构与原理以及资源配置and单元测试实践
- 手机APP游戏/软件/资源下载站/软件盒子源码
- Ubuntu20.04+i3wm折腾笔记
- gaster字体转换器_gaster语言翻译器
- linux万能密码,Linux pam 后门纪录root用户密码以及设置万能密码登录root
- 黑客入侵香港中文大学网 师生资料被盗
热门文章
- 【计算机组成原理】:计算机系统概述
- 默纳克最新解密软件,新时达解密软件,杭州西奥解密,永日默纳克动态密码关闭。
- 红蓝对抗-HW红蓝队基本知识
- notion 科研_Extensions of the notion of overall comonotonicity to partial comonotonicity
- 盛大网盘出现故障,无法正常访问
- 判断身份证号是否合法;验证城市区号,生日
- 单片机延时程序的实现
- 【SQL】SQL中的IN方法:查询多种状态值
- Redhat 6.2(64位) 及 Oracle 11.2.0.4(64位)安装随笔
- 团贷网Android客户端架构演进之路(下)