我目前在 Ubuntu 安装上设置了 LVM 缓存,如中所述https://rwmj.wordpress.com/2014/05/22/using-lvms-new-cache-feature/。 (我确实必须安装一些生动/建议的软件包才能使其正常工作,但我成功了。)
我能够通过以下方式成功将我的逻辑卷之一转换为缓存卷:
# lvconvert --type cache --cachepool anson-TA75MH2/lv_cache anson-TA75MH2/root
Logical volume anson-TA75MH2/root is now cached.
但是,执行此操作后,我无法调整缓存分区的大小。
当我尝试扩展缓存分区(在本例中名为root
,因为它将成为我的文件系统的根)时,我收到一条错误消息:
# lvextend anson-TA75MH2/root -L +250G
Unable to resize logical volumes of cache type.
如何重新关闭缓存,以便调整其大小?
以供参考:
sda 是我的主 1TB 硬盘,包含一个大的 LVM 分区和一个缩小的 ext4 分区,我计划将其移至 lvm 中。 sdb 是一款便宜的 32GB SSD,具有 500MB ext2 /boot 分区、一个大 lvm 分区和 8GB 交换空间。
# vgs
VG #PV #LV #SN Attr VSize VFree
anson-TA75MH2 2 3 0 wz--n- 803.46g 499.96g
# pvs
PV VG Fmt Attr PSize PFree
/dev/sda1 anson-TA75MH2 lvm2 a-- 782.47g 499.96g
/dev/sdb2 anson-TA75MH2 lvm2 a-- 21.00g 0
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home anson-TA75MH2 -wi-ao---- 250.47g
lv_cache anson-TA75MH2 Cwi---C--- 20.96g
root anson-TA75MH2 Cwi-aoC--- 32.00g lv_cache [root_corig]
或者,如果有一种方法可以使用相同的缓存来缓存多个 LV,那将是首选(尽管我仍然想知道如何将其关闭)。但是,当我尝试时,它拒绝:
# lvconvert --type cache --cachepool anson-TA75MH2/lv_cache anson-TA75MH2/home
lv_cache is already in use by root
答案1
lvconvert --uncache anson-TA75MH2/root
似乎比
lvremove anson-TA75MH2/lv_cache
但正如手册页所说,这些是主要选项。
答案2
lvmcache(7) 联机帮助页描述了如何在不删除其原始卷的情况下删除缓存池:
删除缓存池 LV 而不删除其链接的原始 LV
必要时,这会将数据从缓存池写回原始 LV,然后删除缓存池 LV,留下未缓存的原始 LV。
lvremove VG/CachePoolLV
例子:
# lvs vg LV VG Attr LSize Pool Origin cache0 vg Cwi---C--- 10.00g lvol0 vg Cwi-a-C--- 100.00g cache0 [lvol0_corig] # lvremove vg/cache0 # lvs vg LV VG Attr LSize Pool Origin lvol0 vg -wi-a----- 100.00g
所以就我而言,我会这样做lvremove anson-TA75MH2/lv_cache
。这确实需要从头开始重新创建缓存池,但这没关系,只是有点麻烦。 (如果没有人发布更好的内容,我计划在接下来的几分钟内完成此操作。)