Поддерживает ли bcache использование логического тома LVM в качестве устройства кэширования?
У меня есть SSD на 64 ГБ и жесткий диск на 3 ТБ в моей системе под управлением Ubuntu 14.04. SSD имеет небольшой корневой раздел с остальной частью устройства, выделенной для физического тома LVM. Из этого физического тома LVM у меня есть два логических тома, один для /usr и один для /root. (/home находится на жестком диске объемом 3 ТБ.)
Поскольку у меня было около 25 ГБ SSD, которое в настоящее время не используется, я подумал, что было бы интересно попробовать использовать его в качестве устройства кэширования bcache с / home в качестве устройства поддержки.
Я создал новый логический том, используя оставшееся пространство на физическом томе LVM на SSD. Это оставило вещи, выглядящие так:
# 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
Система сразу заблокирована полностью. (Таким образом, вышесказанное является реконструкцией, у меня больше нет фактической команды, которую я выполнил.)
Я сделал что-то глупое, не осознавая этого? Это поддерживаемая конфигурация? Мне интересно, стоит ли сообщать об этом как об ошибке или нет. Похоже, что в результате аварии ничто не пострадало.
3 ответа
Я определенно думаю, что вы должны сообщить об ошибке. Я никогда даже не думал об использовании LV в качестве bcache, только PV. И может быть (просто может быть) ты первый, кто когда-либо пробовал... И это, вероятно, не обрабатывается...
Вы хотите, чтобы я продолжил SysBck и попробовал это сам? (Больше не сегодня: слишком устал!)
У вас есть резервная копия системы??? (вы используете тип 4)
В моем случае проблема была в том, что устройство уже активно используется в 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
не удалось обнаружить это.
Надеюсь, это будет полезно для кого-то еще в будущем.
Да, это так. Я случайно сделал мои настройки задом наперед. Я установил свой lvm как устройство кеширования, а мой ramdrive как устройство поддержки. Но все же, чтобы ответить на ваш вопрос, это работает.
Но я должен отметить, что в lvm2 есть функция кеширования, вы можете также использовать это (что я и сделал), а затем использовать bcache, если вы хотите кэшировать lvm в ram.