我的系统中有一个 64GB SSD 和一个 3TB 硬盘,运行的是 Ubuntu 14.04。SSD 有一个小的根分区,其余设备分配给 LVM 物理卷。从该 LVM 物理卷中我分配了两个逻辑卷,一个用于 /usr,一个用于 /root。(/home 位于 3TB 硬盘上。)
由于我目前有大约 25GB 的 SSD 未使用,因此我认为尝试将其用作 bcache 缓存设备并以 /home 作为后备设备会很有趣。
我使用 SSD 上 LVM 物理卷的剩余空间创建了一个新的逻辑卷。结果如下:
# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 VG4 lvm2 a-- 53.57g 0
/dev/sdb2 VG6 lvm2 a-- 2.69t 0
# lvs
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
VG4-usr VG4 -wi-ao--- 19.31g
VG4-var VG4 -wi-ao--- 9.31g
bcache VG4 -wi-ao--- 24.95g
home VG6 -wi-ao--- 2.69t
然后我做了:
# make-bcache -C /dev/mapper/VG4-bcache
系统立即完全锁定。(因此,以上是重建,我不再有我执行的实际命令。)
我是不是在不知不觉中做了什么蠢事?这是受支持的配置吗?我想知道是否值得将其报告为错误。似乎没有任何东西因崩溃而受到永久损害。
答案1
我你绝对认为你应该提交一个错误。我从未想过使用 LV 作为 bcache,只使用 PV。也许(只是也许)你是第一个尝试的人……而且可能没有处理……
您想让我继续进行 SysBck 并亲自尝试一下吗?(今天不行:太累了!)
你有没有系统备份???(您的用户类型为 4)
答案2
是的。我不小心把设置弄反了。我将 lvm 设置为缓存设备,将 ramdrive 设置为备份设备。但是,回答你的问题,它确实有效。
但我应该提到,lvm2 有一个缓存功能,你不妨选择使用它(我就是这么做的),然后如果你想将 lvm 缓存到内存中,则使用 bcache
答案3
就我的情况而言,问题是由于设备已在 bcache 中被积极使用,这一点已得到证实bcache-super-show
。
$ make-bcache -B /dev/ssd/cache
Can't open dev /dev/ssd/cache: Device or resource busy
$ make-bcache -C /dev/ssd/cache
Can't open dev /dev/ssd/cache: Device or resource busy
$ pvs
PV VG Fmt Attr PSize PFree
/dev/mapper/md100-crypt hdd lvm2 a-- 3.64t 186.30g
/dev/mapper/md101-crypt ssd lvm2 a-- 119.17g 32.23g
/dev/md0 system lvm2 a-- 13.81g 4.50g
$ lvs
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
data hdd -wi-ao--- 3.46t
cache ssd -wi-ao--- 29.75g
data ssd -wi-ao--- 57.20g
root system -wi-ao— 9.31g
似乎在以下方面失败了
open("/dev/ssd/cache", O_RDWR|O_EXCL) = -1 EBUSY (Device or resource busy)
在那次失败之前,以下做法似乎取得了成功;
open("/dev/ssd/cache", O_RDONLY) = 4
ioctl(4, BLKSSZGET, 512) = 0
close(4) = 0
这使我相信是O_EXCL
导致这个问题的原因EBUSY
,表明也许另一个进程正在锁定该设备,但我可以确认/dev/ssd/cache
没有安装、打开或正在使用(如 lsof 或 fuser 中所示),并且重新启动不能解决问题。
尝试从设备映射器中删除它也没有进展;
$ dmsetup remove ssd-cache
device-mapper: remove ioctl on ssd-cache failed: Device or resource busy
运行后lsblk
我可以看到以下内容;
sdb 8:16 0 119.2G 0 disk
└─sdb1 8:17 0 119.2G 0 part
└─md101 9:101 0 119.2G 0 raid1
└─md101-crypt (dm-3) 252:3 0 119.2G 0 crypt
├─ssd-data (dm-4) 252:4 0 57.2G 0 lvm /mnt/ssd/data
└─ssd-cache (dm-5) 252:5 0 29.8G 0 lvm
└─bcache0 251:0 0 29.8G 0 disk
如您所见,bcache0 是所讨论设备的子设备,快速检查可以证实这一点;
$ bcache-super-show /dev/ssd/cache
sb.magic ok
sb.first_sector 8 [match]
sb.csum 9F5D50331A2A10B9 [match]
sb.version 1 [backing device]
dev.label (empty)
dev.uuid 8ba675a3-d9e4-4d47-8403-655c226f578f
dev.sectors_per_block 1
dev.sectors_per_bucket 1024
dev.data.first_sector 16
dev.data.cache_mode 0 [writethrough]
dev.data.cache_state 0 [detached]
cset.uuid c006c316-d396-40cf-bde8-8bd4d0a017e8
因此,就我的情况而言,根本问题是设备本身已经是 bcache 的一部分,但make-bcache
无法检测到这一点。
希望这将来对其他人有用。