我有三个磁盘:
/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 读取(如果配置如此,则写入),同时在较慢的磁盘上保留较大的文件系统。