使用 LVM 新的缓存特性 已翻译 100%

oschina 投递于 2014/05/24 06:41 (共 7 段, 翻译完成于 05-28)
阅读 4743
收藏 10
LVM
2
加载中

如果你有一台带有慢速硬盘和快速SSD的电脑,你想使用SSD作为快速持久缓存用来提升访问硬盘的速度。然而直到最近,你有三个选择:bcachedm-cache都upstream,或者Flashcache/EnhanceIO。Flashcache不是upstream。dm-cache要求你首先坐下来,使用计算器计算块的偏移。bcache是三个选择中最全面的。

但是最近LVM已经增减了缓存的支持(构建在dm-cache之上),因此在理论上,你能让已存在的逻辑卷转换到已缓存的设备。

地狱星星
翻译于 2014/05/25 16:37
1

安装

为了在实践中了解是怎样工作的,我在以前的无盘虚拟群集中添加了3块硬盘。

在镜像配置中有两个2TB的WD硬盘。通过蓝色(冷)线连接。在左侧是三星EVO 250GB SSD,作为缓存的红色(热)盘。

另一个新闻:哦,现在品牌制造商的SSD是真的便宜!

lsblk输出如下,sda和sdb是WD硬盘,sdc是三星SSD:

# 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

地狱星星
翻译于 2014/05/26 16:01
1

性能

在创建 缓存之前,先看看硬盘的速率如何.  以下数据包含了 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) [没有什么能拷贝的地方] 文档指出了一些用到的术语:

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

petert
翻译于 2014/05/24 19:41
1

创建 LVs

文档中很夸张的提到,移除错误的 LV 将会完全颠覆之前的 OriginLV, 为了测试这一特性我 在有几个镜像文件的慢速HDDs上创建了一个 OriginLV:

# lvcreate -L 100G -n testoriginlv vg_guests
  Logical volume "testoriginlv" created
# mkfs -t ext4 /dev/vg_guests/testoriginlv

需要注意的是resizing cached LVs功能目前并未提供 (可能以后出来 — 现在只能先移除缓存,从新分配大小再重新创建缓存).

petert
翻译于 2014/05/24 19:28
1

创建缓存层

从文件的角度来说,这并不明确,但是一切都必须在一个简单的卷组中. 也就是说,你必须创建一个既包括慢速和快速的磁盘卷组 - 它并不是简单工作。

因此,我的第一个步骤是扩大我现有的VG ,包括快盘:

# 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 ) 。

# 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).

村长杨京京
翻译于 2014/05/28 16:05
1

为什么要在PV上留下2.88GB的空间?我也不太清楚,只是第一次使用时,我并没有预留空间,结果执行 lvconvert命令后 [如下] 提示需要1GB的扩展空间。

把 CacheDataLV和CacheMetaLV 放到“缓存池”里 :

# 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来创建最终的缓存工程:

# lvconvert --type cache --cachepool vg_guests/lv_cache vg_guests/testoriginlv
  vg_guests/testoriginlv is now cached.

petert
翻译于 2014/05/24 19:34
1

结果

看起来还不错? 在使用缓存 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.

接下来我会创建一些请求,然后看看他们的性能如何 (就是刚才我提到的问题).

petert
翻译于 2014/05/24 19:31
1
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
加载中

评论(0)

返回顶部
顶部