67.10. 启用缓存来提高逻辑卷性能
您可以在 LVM 逻辑卷中添加缓存以提高性能。LVM 然后使用快速设备(如 SSD)将 I/O 操作缓存到逻辑卷中。
下面的过程会从快速设备创建一个特殊的 LV,并将这个特殊 LV 附加到原始 LV,以便提高性能。
67.10.1. LVM 中的缓存方法 复制链接链接已复制到粘贴板!
LVM 提供以下缓存类型。每种模式适合逻辑卷中的不同类型的 I/O 模式。
dm-cache
这个方法可通过在更快的卷上缓存数据来加快频繁使用数据的访问速度。这个方法会缓存读写操作。
dm-cache
方法创建类型为缓存
的逻辑卷。dm-writecache
这个方法只缓存写操作。使用快速卷进行写入操作,然后将其迁移到后台较慢的磁盘中。快速卷通常是一个 SSD 或持久内存(PMEM)磁盘。
dm-writecache
方法创建类型为writecache
的逻辑卷。
67.10.2. LVM 缓存组件 复制链接链接已复制到粘贴板!
LVM 支持向 LVM 逻辑卷添加缓存的支持。LVM 缓存使用以下 LVM 逻辑卷类型:
- 主 LV
- 较大、较慢且原始的卷。
- 缓存池 LV
-
可用于缓存主 LV 数据的复合 LV。它有两个子 LV:存储缓存数据的数据和管理缓存数据的元数据。您可以为数据和元数据配置特定的磁盘。您只能使用具有
dm-cache
的缓存池。 - Cachevol LV
-
可用于缓存主 LV 数据的线性 LV。您无法为数据和元数据配置单独的磁盘。
cachevol
只能与dm-cache
或dm-writecache
一起使用。
所有这些关联的 LV 必须位于同一卷组中。
您可以将主逻辑卷(LV)与更快速、通常是较小的保存缓存数据的 LV 相结合。快速 LV 是从快速块设备(如 SSD 驱动器)创建的。当您为逻辑卷启用缓存时,LVM 会重新命名并隐藏原始卷,并显示由原始逻辑卷组成的新逻辑卷。新逻辑卷的组成取决于缓存方法以及您是否使用 cachevol
或 cachepool
选项。
cachevol
和 cachepool
选项会公开对缓存组件的放置不同级别的控制:
-
使用
cachevol
选项,快速设备会同时存储数据块的缓存副本以及用于管理缓存的元数据。 使用
cachepool
选项,单独的设备可以存储数据块的缓存副本以及用于管理缓存的元数据。dm-writecache
方法与cachepool
不兼容。
在所有配置中,LVM 会公开一个生成的设备,它会将所有缓存组件组合在一起。得到的设备的名称与原来的较慢的逻辑卷的名称相同。
67.10.3. 为逻辑卷启用 dm-cache 缓存 复制链接链接已复制到粘贴板!
这个过程使用 dm-cache
方法启用逻辑卷中常用数据缓存。
先决条件
-
您希望使用
dm-cache
加快的逻辑卷存在于系统中。 - 包含较慢逻辑卷的卷组还包含在快速块设备中未使用的物理卷。
流程
在快速设备中创建
cachevol
卷:lvcreate --size cachevol-size --name <fastvol> <vg> </dev/fast-pv>
# lvcreate --size cachevol-size --name <fastvol> <vg> </dev/fast-pv>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 替换以下值:
cachevol-size
-
cachevol
卷的大小,如5G
fastvol
-
cachevol
卷的名称 vg
- 卷组名称
/dev/fast-pv
快速块设备的路径,如
/dev/sdf
例 67.3. 创建一个
cachevol
卷lvcreate --size 5G --name fastvol vg /dev/sdf
# lvcreate --size 5G --name fastvol vg /dev/sdf Logical volume "fastvol" created.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
将
cachevol
卷附加到主逻辑卷以开始缓存:lvconvert --type cache --cachevol <fastvol> <vg/main-lv>
# lvconvert --type cache --cachevol <fastvol> <vg/main-lv>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 替换以下值:
fastvol
-
cachevol
卷的名称 vg
- 卷组名称
main-lv
较慢的逻辑卷名称
例 67.4. 将
cachevol
卷附加到主 LVlvconvert --type cache --cachevol fastvol vg/main-lv
# lvconvert --type cache --cachevol fastvol vg/main-lv Erase all existing data on vg/fastvol? [y/n]: y Logical volume vg/main-lv is now cached.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证新创建的逻辑卷是否启用了
dm-cache
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
67.10.4. 使用 cachepool 为逻辑卷启用 dm-cache 缓存 复制链接链接已复制到粘贴板!
这个过程可让您单独创建缓存数据和缓存元数据逻辑卷,然后将卷合并到缓存池中。
先决条件
-
您希望使用
dm-cache
加快的逻辑卷存在于系统中。 - 包含较慢逻辑卷的卷组还包含在快速块设备中未使用的物理卷。
流程
在快速设备中创建
cachepool
卷:lvcreate --type cache-pool --size <cachepool-size> --name <fastpool> <vg /dev/fast>
# lvcreate --type cache-pool --size <cachepool-size> --name <fastpool> <vg /dev/fast>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 替换以下值:
cachepool-size
-
cachepool
的大小,如5G
fastpool
-
cachepool
卷的名称 vg
- 卷组名称
/dev/fast
到快速块设备的路径,如
/dev/sdf1
注意您可以使用
--poolmetadata
选项指定创建 cache-pool 时池元数据的位置。例 67.5. 创建一个
cachepool
卷lvcreate --type cache-pool --size 5G --name fastpool vg /dev/sde
# lvcreate --type cache-pool --size 5G --name fastpool vg /dev/sde Logical volume "fastpool" created.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
将
cachepool
附加到主逻辑卷中开始缓存:lvconvert --type cache --cachepool <fastpool> <vg/main>
# lvconvert --type cache --cachepool <fastpool> <vg/main>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 替换以下值:
fastpool
-
cachepool
卷的名称 vg
- 卷组名称
main
较慢的逻辑卷名称
例 67.6. 将
cachepool
附加到主 LVlvconvert --type cache --cachepool fastpool vg/main
# lvconvert --type cache --cachepool fastpool vg/main Do you want wipe existing metadata of cache pool vg/fastpool? [y/n]: y Logical volume vg/main is now cached.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
检查具有
cache-pool
类型的新创建的设备卷:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
67.10.5. 为逻辑卷启用 dm-writecache 缓存 复制链接链接已复制到粘贴板!
这个过程允许使用 dm-writecache
方法将 I/O 操作缓存到逻辑卷中。
先决条件
-
您希望使用
dm-writecache
加快的逻辑卷存在于系统中。 - 包含较慢逻辑卷的卷组还包含在快速块设备中未使用的物理卷。
- 如果较慢的逻辑卷处于活跃状态,请停用它。
流程
如果一个较慢的逻辑卷是活跃的,取消激活它:
lvchange --activate n <vg>/<main-lv>
# lvchange --activate n <vg>/<main-lv>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 替换以下值:
vg
- 卷组名称
main-lv
- 较慢的逻辑卷名称
在快速设备中创建一个已停用的
cachevol
卷:lvcreate --activate n --size <cachevol-size> --name <fastvol> <vg> </dev/fast-pv>
# lvcreate --activate n --size <cachevol-size> --name <fastvol> <vg> </dev/fast-pv>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 替换以下值:
cachevol-size
-
cachevol
卷的大小,如5G
fastvol
-
cachevol
卷的名称 vg
- 卷组名称
/dev/fast-pv
快速块设备的路径,如
/dev/sdf
例 67.7. 创建一个停用的
cachevol
卷lvcreate --activate n --size 5G --name fastvol vg /dev/sdf
# lvcreate --activate n --size 5G --name fastvol vg /dev/sdf WARNING: Logical volume vg/fastvol not zeroed. Logical volume "fastvol" created.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
将
cachevol
卷附加到主逻辑卷以开始缓存:lvconvert --type writecache --cachevol <fastvol> <vg/main-lv>
# lvconvert --type writecache --cachevol <fastvol> <vg/main-lv>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 替换以下值:
fastvol
-
cachevol
卷的名称 vg
- 卷组名称
main-lv
较慢的逻辑卷名称
例 67.8. 将
cachevol
卷附加到主 LVCopy to Clipboard Copied! Toggle word wrap Toggle overflow
激活生成的逻辑卷:
lvchange --activate y <vg/main-lv>
# lvchange --activate y <vg/main-lv>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 替换以下值:
vg
- 卷组名称
main-lv
- 较慢的逻辑卷名称
验证
检查新创建的设备:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
67.10.6. 为逻辑卷禁用缓存 复制链接链接已复制到粘贴板!
这个过程禁用 dm-cache
或 dm-writecache
缓存,该缓存在逻辑卷中当前启用。
先决条件
- 在逻辑卷中启用了缓存。
流程
取消激活逻辑卷:
lvchange --activate n <vg>/<main-lv>
# lvchange --activate n <vg>/<main-lv>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用卷组名称替换 vg,使用启用了缓存的逻辑卷的名称替换 main-lv。
分离
cachevol
或cachepool
卷:lvconvert --splitcache <vg>/<main-lv>
# lvconvert --splitcache <vg>/<main-lv>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 替换以下值:
使用卷组名称替换 vg,使用启用了缓存的逻辑卷的名称替换 main-lv。
例 67.9. 分离
cachevol
或cachepool
卷lvconvert --splitcache vg/main-lv
# lvconvert --splitcache vg/main-lv Detaching writecache already clean. Logical volume vg/main-lv writecache has been detached.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
检查逻辑卷不再连接在一起:
lvs --all --options +devices <vg>
# lvs --all --options +devices <vg> LV Attr Type Devices fastvol -wi------- linear /dev/fast-pv main-lv -wi------- linear /dev/slow-pv
Copy to Clipboard Copied! Toggle word wrap Toggle overflow