LVM Raid 1 + SSD 缓存

LVM Raid 1 + SSD 缓存

我有三个磁盘:

  • /dev/sda 硬盘速度慢
  • /dev/sdb 硬盘速度慢
  • /dev/sdc 快速固态硬盘
  • /dev/vg0 卷组包含/dev/sd{a,b,c}

每个逻辑卷(lv)应该是raid1镜像和ssd缓存。

使用以下命令,我可以在 vg0 上创建一个名为 test 的镜像 raid1 lv。

lvcreate --type raid1 -m 1 -L 1G -n test vg0
  • 我需要在上一个命令中更改什么,以便它仅将慢速硬盘用于 raid1 镜像?我可以@hdd, @ssd为此使用 LVM 标签系统 ( ) 吗?
  • 我找到了一些教程,解释了如何使用 LVM 缓存功能。但看起来我需要为每个 lv 创建一个自己的缓存池。是否可以为整个 vg0 创建一个大的缓存池,以便 vg0 中的所有 lv 都将被缓存?或者我可以安全地将现有的缓存池重用于其他 lv 吗?

答案1

根据lvmcache 手册页看起来缓存完全是逻辑卷的事情,而不是可以在卷组级别实现的事情。无法缓存整个 VG 确实很烦人,但这似乎是一种架构限制。

关于强制仅使用特定 PV 创建 LV,您可以在命令末尾指定 PV lvcreate

以下是手册页中的概要,删除了多余的选项:

lvcreate  <...> [VolumeGroup{Name|Path} [/ExternalOrigin  |  Origin  |  Pool}LogicalVolumeName]  [PhysicalVolumePath[:PE[-PE]]...]

我认为很多人都忽略了这一点,因为这个概要非常“复杂”。但这个功能在创建缓存时实际上是必需的,因为您需要能够强制缓存 LV 位于 SSD PV 上。

旁注:快速搜索结果表明,LVM 镜像通常被认为比 Linux 软件 RAID 慢得多。但我认为,通过一些调整,您可以恢复部分性能损失。

答案2

一个有趣的项目是bcache:https://bcache.evilpiepirate.org/

使用 bcache,您可以将 ssd 设置为慢速(旋转)较大磁盘的快速缓存。这样,最常访问的块将从较快的 ssd 读取(如果配置如此,则写入),同时在较慢的磁盘上保留较大的文件系统。

相关内容