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的缓存作用,加速了磁盘的读写性能。
原文地址:https://www.cnblogs.com/jfLin/p/9542812.html