LVM Cache

发布时间 2023-06-21 16:22:23作者: 凡人半睁眼

一、LVM Cach

1、什么是LVM Cache?

LVM (Logical Volume Manager) 是一种用于在 Linux 系统上管理硬盘分区和逻辑卷的工具。LVM 允许管理员对物理硬盘进行逻辑划分,创建灵活的逻辑卷,并提供高级功能,如快照、在线容量扩展和逻辑卷的动态迁移等。

LVM Cache 是 LVM 的一个功能,它允许将高速缓存设备(如固态硬盘)与普通硬盘组合使用,以提高 I/O 性能。通过将高速缓存设备作为缓存层,LVM Cache 可以显著减少从磁盘读取数据的时间,从而加快系统的响应速度。

使用场景:固态硬盘用做普通硬盘的缓存,以提高 I/O 性能。

2、 LVM Cache 的一些好处

  • 提高 I/O 性能:LVM Cache 使用高速缓存设备来存储热数据,从而加快数据的读取速度,提高系统的响应性能。
  • 灵活性:LVM Cache 允许管理员根据需要动态调整缓存层和后端存储层之间的数据映射,以满足不同工作负载的要求。
  • 数据保护:LVM Cache 可以提供数据的冗余性和保护。如果后端存储设备发生故障,缓存层中的数据可以作为备份,以防止数据丢失。

二、配置 LVM Cache

假设有三块盘机械盘sda、sdb、sdc,一块ssd 盘nvme0n1

1、创建 LVM 逻辑卷(Logical Volume)

格式化分区  

fdisk /dev/sda 

对sdb、sdc、nvme0n1进行相同操作

pvcreate 命令将物理卷(Physical Volume)添加到 LVM

pvcreate /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/nvme0n1p1

并使用 vgcreate 命令创建卷组(Volume Group)

vgcreate vg /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/nvme0n1p1

用 lvcreate 命令创建逻辑卷data

注意:ssd不用操作

lvcreate -n data -L 200G vg /dev/sda1 /dev/sdb1 /dev/sdc1

2、创建逻辑卷缓存cache、逻辑卷meta(此处操作的是ssd盘分区)

lvcreate -n cache -L 30G vg /dev/nvme0n1p1

lvcreate -n meta -L 6G vg /dev/nvme0n1p1

3、lvm cache总共包括三部分:data、cache、meta

其中meta的size需要大于千分之一的cache;data是存储数据,cache和meta共同构成缓存。

4、创建缓存池、将存储卷加入缓存池

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

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

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

5、格式化与挂载

mkfs.xfs /dev/vg/data

mkdir /data

mount /dev/vg/data /data/

补充:

做过raid的组合盘也能做(比如4块4T的机械硬盘组raid5为一块,2块490G的ssd盘做raid1)

6、卸载lvm_cache

取消挂载文件系统:

umount /dev/vg/data

移除逻辑卷data:

lvremove /dev/vg/data

删除卷组vg:

vgremove vg

删除物理卷pv

pvremove /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/nvme0n1p1