Previous Entry Share Next Entry
Краткая заметка о переезде на bcache
Cola with Ice
sanmai
SATA HDD

Напишу по свежей памяти о переходе на bcache под Debian "jessie".

На bcache я засматривался давно, но ждал того момента когда всё необходимое появится в штатных репозиториях Debian. В итоге дождался только ядра с нужным модулем, а утилиты собрал вручную и установил с помощью CheckInstall (наверное было можно умнее, но некогда было возиться).

Начальная ситуация: Система на двух дисках по терабайту в интеловском рейде. Есть два новых диска по два терабайта и mSATA SSD на 32GB.

Конечная ситуация: Система на двух дисках по два терабайта в интеловском рейде с корневым разделом, завернутым в bcache.

Шаг 1.

Собрал по офису "ненужные" SATA кабеля (ну кто сейчас смотрит DVD?), прикупил разветвитель питания для SATA дисков, подключил новые диски к портам контроллера. Это было просто.

Шаг 2.

С созданием нового массива пришлось повозиться. Ни официальная инструкция, ни Linux Raid Wiki толком не объясняли тонкостей наименования новых массивов. Всё заработало как только я поименовал контейнер и массив внутри /dev/md/ так:

mdadm --create --verbose /dev/md/imsm1 /dev/sd[de] --raid-devices 2 --metadata=imsm
mdadm --create --verbose /dev/md/xraid /dev/md/imsm1 --raid-devices 2 --level 1

Шаг 3.

Скопировать разделы на новый диск было проще простого:

sgdisk --backup=GPT /dev/md/raid
sgdisk --load-backup=GPT /dev/md/xraid 
sgdisk --randomize-guids /dev/md/xraid

Шаг 4.

Создать кешируемую сборку очень просто:

make-bcache -B /dev/md/xraid4 -C /dev/sdb

Но тут есть закавыка: если вы будете создавать кеш и хранилище отдельно, то модуль их автоматом подхватит и создаст полупустое кеширующее устройство захватив доступ к используемым в нём дискам с последующими ошибками вида:

Can't open dev /dev/sdb: Device or resource busy
Лечится это или ручным добавлением недостающих устройств в кеширующую сборку (как это сделать смотрите в документации), или удалением сборки и пересозданием заново одним махом. Удаление делается через sysfs:

echo 1 > /sys/fs/bcache/*-*-*-*-*/unregister 

Шаг 5.

Нужно убедиться что кеш-сборка видна из initramfs. Для этого нужно к строке загрузки ядра прямо из grub дописать break=init, затем проверить что файл сборки на месте. В моём случае его на месте не было так как bcache из одного SSD создается до инициализации mdadm. Помог такого скрипт в initramfs:

#!/bin/sh
#/etc/initramfs-tools/scripts/local-top/bcache
echo /dev/md/xraid4 > /sys/fs/bcache/register_quiet
exit 0
Нужно не забыть добавить этот скрипт и другие скрипты из пакета bcache-tool с помощью update-initramfs.

Шаг 6.

После всех тестов дописываем к строке загрузки break=premount в самом grub, инициализируем массивы в mdadm, подключаем кеш-сборку и копируем все разделы на новый диск с помощью dd.

mdadm --assemble --scan
echo /dev/md/xraid4 > /sys/fs/bcache/register_quiet
dd if=/dev/md/raid1 of=/dev/md/xraid1
dd if=/dev/md/raid2 of=/dev/md/xraid2
dd if=/dev/md/raid4 of=/dev/bcache0

Шаг 7.


Перезагружаемся без продолжения загрузки, отключаем старые диски, включаем питание... Из меню grub для нашего ядра указываем root=/dev/bcache0, затем дожидаемся окончания загрузки и наслаждаемся скоростью.

Про очевидные вещи такие как пересоздание swap-разделов и установку-настройку grub и initramfs я думаю говорить не стоит: если вы дошли до последнего этапа, то для вас это всё должно быть очевидно.

  • 1
Но зачем использовать именно интеловский формат массива?

Исторически так получилось. Интеловский формат удобен при первоначальной настройке и установке. Потом, в случае чего, конечно, придётся побегать с бубном. С другой стороны mdadm видит его как родной и каких-то особых проблем быть не должно.

Edited at 2013-11-04 08:51 am (UTC)

Такой подход применяется для серверных нужд или же есть смысл применения его и для, скажем, домашнего десктопного использования?

Для десктопа - самое оно. На сервере я бы такое не стал использовать. Через года два-три - может быть.

Для десктопа, обычным юзерам, проще купить гибридный диск или ноутбук, поддерживающий создание гибридного диска из обычного + msata ssd.

Или ноутбук с SSD.

Для сервера сие будет достаточно костыльным решением. Для недорогого/самосборочного сервера тогда уж лучше посмотреть гибрид типа http://www.seagate.com/au/en/internal-hard-drives/solid-state-hybrid/desktop-solid-state-hybrid-drive/#Specs.
Или посмотреть на 10k/15k rpm hdd.
Если СХД, то тут обычно уже не так смотрят на экономию (СХД само по себе уже удовольствие с ценой). Средненькие СХД уже умеют делать data tiering, так что они сами могут порулить, что отправить на SSD, а что на обычных винтах оставить.

А чем гибрид лучше? Статистики по кешу никакой, размер кеша фиксированный и довольно скромный. Используемые алгоритмы не известны.

Единственный не оспоримый плюс гибрида это то что его можно воткнуть в любую систему, не требуется ни лишнего порта, ни поддержки софтом.

Ну заводское изделие. Как правило, работают лучше самосборок. Меньше проблем с запуском сего хозяйства.
Под кэш 8 Гб вполне достаточно, имо.
Да и надо ли знать для работы, какой алгоритм там используется? Если только эта работа, конечно, не зависит от данного факта.
Да. Ещё цену забыл. Гибрид стоит от 100 долларов. SSD сейчас с той же планки начинается.
Правда тут чёрный ящик, как себя накопитель поведёт, когда начнёт ssd часть сыпаться. А она начнётся, потому как используют менее живучую mlc технологию, поскольку она значительно дешевле долгоиграющей slc.

Edited at 2013-11-04 03:09 pm (UTC)

мы используем на серверах ввиде flashcache. Давно. Очень позитивно.

Я абсолютно не в теме,но всё равно не прошёл.....любопытство меня угробит.....

  • 1
?

Log in

No account? Create an account