SSD缓存方案之LVM cache

Posted jflin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSD缓存方案之LVM cache相关的知识,希望对你有一定的参考价值。

SSD作缓存方案之LVM cache

1. 前言

最近因为工作的需要,接触了一些SSD作缓存相关的知识。所谓SSD作缓存就是使用fast device(例如SSD),给slow device(例如机械硬盘)做缓存,以提高计算机整体的I/O存储性能。

目前在个人计算机中,使用的比较多的是机械硬盘和固态硬盘(SSD)。机械硬盘具有容量大,价格便宜,容错性好,寿命较长等优点;缺点是读写性能相对机械硬盘有比较大的差距。固态硬盘的优点是读写性能较好,特别是随机读写性能;缺点是价格比较昂贵,容量小,写入寿命有限,一旦损坏数据难以恢复等。

因此,有些情况下我们希望结合两者优点,于是SSD缓存技术方案应运而生。

2. 需求

假设:

  • 有一个容量比较小的fast device(例如SSD);
  • 有一个以及以上的大容量机械硬盘;
  • 有比较大的数据需要存储;
  • 对数据读写性能有一定的要求。

那么这个时候,我们就可以考虑把SSD作缓存来使用。

3. 常见方案

就从缓存方案来说,常见的有DM-cache、bcache、LVM cache、flashCache、EnhanceIO等,本文主要介绍LVM cache。

4. LVM cache

在RHEL6.7之后,LVM提供对LVM缓存逻辑卷的支持,它是基于dm-cache,LVM缓存逻辑卷使用快速设备(例如SSD驱动器)组成的小型逻辑卷,来提高容量更大但更慢逻辑卷的性能。下面在虚拟机上演示如何创建及使用。

注意:因为是在个人主机安装的虚拟机上演示,无法体现性能,仅仅演示创建过程,若需要测试其性能,请在实体机上使用真实的存储设备测试

4.1 创建

技术分享图片
如图所示,因为是测试,所以用虚拟机上的/dev/sdb和/dev/sdd分别作为fast device和slow device来演示创建过程。

4.1.1 分区

(以创建sdb分区为例)

fdisk /dev/sdb

回车进入分区操作, 输入n表示创建分区,然后回车选择默认选项,选项选择完毕后,输入w表示保存退出。
fdisk之后选项常用参数有:

  • m:帮助信息
  • p:显示分区表
  • d:删除一个分区表
  • l:列出已知的分区类型
  • n:新建一个分区表
  • q:退出不保存
  • w:保存并退出
  • t:修改分区表系统id

分区结果如下图所示:
技术分享图片

4.1.2 创建物理卷

pvcreate /dev/sdb1 /dev/sdd1

技术分享图片

4.1.3 创建卷组vg

vgcreate vg /dev/sdb1 /dev/sdd1

技术分享图片

4.1.4 创建逻辑卷

  • 创建data逻辑卷
lvcreate -n data -L 6G vg /dev/sdd1

创建存储数据的逻辑卷data,划分/dev/sdd1物理卷的空间。

  • 创建cache逻辑卷
lvcreate -n cache -L 6G vg /dev/sdb1

创建缓存数据的逻辑卷cache,划分/dev/sdb1物理卷的空间。

  • 创建meta逻辑卷
lvcreate -n meta -L 64M vg /dev/sdb1

创建缓存数据的逻辑卷meta,划分/dev/sdb1物理卷的空间。

结果如下:
技术分享图片

技术分享图片

lvm cache总共包括三部分:data、cache、meta,其中meta的size需要大于千分之一的cache;data是存储数据,cache和meta共同构成缓存

4.1.5 创建缓存池

(注意cache和meta的顺序不能颠倒)

lvconvert --type cache-pool --poolmetadata vg/meta vg/cache

技术分享图片

4.1.6 将存储卷加入缓存池

lvconvert --type cache --cachepool vg/cache --cachemode writeback vg/data

技术分享图片

技术分享图片

注意:cachemode有writeback和writethrough两种模式,默认为writethrough,此处测试设置为writeback。writeback的读写性能会好一些,但是在某些极端情况下会丢失数据

4.1.7 格式化与挂载

mkfs.ext3 /dev/vg/data
mkdir data
mount /dev/vg/data ./data/

技术分享图片

最后,就可以在./data/目录下存储数据了。在该目录读写数据时,实际上有fast device的缓存作用,加速了磁盘的读写性能。









以上是关于SSD缓存方案之LVM cache的主要内容,如果未能解决你的问题,请参考以下文章

智汇华云 | Ceph的正确玩法之SSD作为HDD的缓存池

Yii2片段缓存详解

yii使用之缓存

Ceph Cache Tier

Proxmox VE LVM扩容

基于本地存储LVM新建虚机方案