5.2. 缓存逻辑卷
您可以使用 dm-cache
或 dm-writecache
目标缓存逻辑卷。
DM-cache
使用更快的存储设备(SSD)作为较慢的存储设备(HDD)的缓存。它缓存读取和写入数据,从而优化频繁使用的数据的访问时间。在混合工作负载环境中,增强读写操作可带来显著的性能改进。
DM-writecache
使用更快的存储介质(SSD)来临时保存写入数据来优化写操作,然后再将其提交到主存储设备(HDD)。对于写入性能可能会减慢数据传输过程的写密集型应用程序来说,这非常有用。
5.2.1. 使用 dm-cache 缓存逻辑卷
当使用 dm-cache
缓存 LV 时,会创建一个缓存池。缓存池是组合了缓存数据的 LV,它存储了实际缓存的内容,以及缓存元数据,跟踪缓存中存储的内容。然后,这个池与特定 LV 关联,以缓存其数据。
DM-cache
以两种块类型为目标:经常访问(热)块移动到缓存中,而不太频繁访问(折叠)块保留在较慢的设备上。
先决条件
- 管理访问权限.
流程
显示您要缓存的 LV 及其卷组:
# lvs -o lv_name,vg_name LV VG LogicalVolumeName VolumeGroupName
创建缓存池:
# lvcreate --type cache-pool --name CachePoolName --size Size VolumeGroupName /FastDevicePath
将 CachePoolName 替换为缓存池的名称。使用缓存池的大小替换 Size。将 VolumeGroupName 替换为卷组的名称。将 /FastDevicePath 替换为快速设备的路径,如 SSD 或 NVME。
将缓存池附加到 LV:
# lvconvert --type cache --cachepool VolumeGroupName/CachePoolName VolumeGroupName/LogicalVolumeName
验证
验证 LV 现在是否已缓存:
# lvs -o lv_name,pool_lv LV Pool LogicalVolumeName [CachePoolName_cpool]
其他资源
-
lvcreate (8)
,lvconvert (8)
,lvs (8)
man pages
5.2.2. 使用 dm-writecache 缓存逻辑卷
当使用 dm-writecache
缓存 LV 时,逻辑卷和物理存储设备之间的缓存层会被创建。dm-writecache
通过将写入操作临时存储在更快速的存储介质中(如 SSD),然后再最终将其写回主存储设备,从而优化写入密集型工作负载。
先决条件
- 管理访问权限.
流程
显示您要缓存的逻辑卷及其卷组:
# lvs -o lv_name,vg_name LV VG LogicalVolumeName VolumeGroupName
创建缓存卷:
# lvcreate --name CacheVolumeName --size Size VolumeGroupName /FastDevicePath
将 CacheVolumeName 替换为缓存卷的名称。使用缓存池的大小替换 Size。将 VolumeGroupName 替换为卷组的名称。将 /FastDevicePath 替换为快速设备的路径,如 SSD 或 NVME。
将缓存卷附加到 LV:
# lvconvert --type writecache --cachevol CacheVolumeName VolumeGroupName/LogicalVolumeName
将 CacheVolumeName 替换为缓存卷的名称。将 VolumeGroupName 替换为卷组的名称。使用逻辑卷的名称替换 LogicalVolumeName。
验证
验证 LV 现在是否已缓存:
# lvs -o lv_name,pool_lv LV Pool LogicalVolumeName [CacheVolumeName_cvol]
其他资源
-
lvcreate (8)
,lvconvert (8)
,lvs (8)
man pages
5.2.3. 取消缓存逻辑卷
使用两种主要方法从 LV 中删除缓存。
- 分割
- 您可以从 LV 中分离缓存,但保留缓存卷本身。在这种情况下,LV 将不再受益于缓存机制,但缓存卷及其数据将保持不变。虽然缓存卷被保留,但缓存中的数据无法被重复使用,并将在下次在缓存设置中使用时擦除。
- 取消缓存
- 您可以从 LV 中分离缓存,并完全删除缓存卷。此操作有效销毁缓存,从而释放空间。
先决条件
- 管理访问权限.
流程
显示缓存的 LV:
# lvs -o lv_name,pool_lv,vg_name LV Pool VG LogicalVolumeName [CacheVolumeName_cvol] VolumeGroupName
分离或删除缓存的卷:
要分离缓存的卷,请使用:
# lvconvert --splitcache VolumeGroupName/LogicalVolumeName
要分离和删除缓存的卷,请使用:
# lvconvert --uncache VolumeGroupName/LogicalVolumeName
将 VolumeGroupName 替换为卷组的名称。使用逻辑卷的名称替换 LogicalVolumeName。
验证
验证 LV 是否没有缓存:
# lvs -o lv_name,pool_lv
其他资源
-
lvconvert (8)
,lvs (8)
手册页