Как установить и использовать flashcache / bcache для кэширования жесткого диска на SSD?

52

Я хочу знать, есть ли кто-нибудь, кто пытался установить и запустить свое ядро, созданное с помощью flashcache или bcache для SSD-кэширования?

Как тебе удалось это сделать?

kapad
источник
Хороший вопрос. Я предлагал flashcache в некоторых моих ответах ( 1 , 2 ). Кажется , в инструмент для работы, рядом с дм-кэша. Это также актуально для всех тех, кто ищет альтернативу Intel Smart Response для Ubuntu / Linux.
gertvdijk
Я тоже смотрю на это как на альтернативу Intel SRT. Арка вики здесь говорит, в нескольких словах, что это не для слабонервных. Проблема в том, что я планирую поиграть с ним на своем единственном ПК как для работы, так и для игры :), так что был напуган и надеялся узнать, как это сделать. Как вы думаете, будет ли возможно запустить Ubuntu на виртуальной машине и иметь один диск (на основе файлов) на диске, один на SSD (опять же на основе файлов) для тестирования. Готов попробовать! :)
kapad
Хороший вопрос, но считается ли ответ, в котором виртуальные машины используются в качестве испытательного стенда, полным? У многих людей нет необходимого оборудования, чтобы действительно ответить на этот вопрос.
RobotHumans
4
уже пробовал это для Flashcache? gerrit-tamboer.net/...
жасмин
4
Теперь dm-cache включен в стабильный релиз ядра Linux версии 3.9. Я думаю, что этот вопрос с 26 голосами заслуживает ответа сейчас. :)
gertvdijk

Ответы:

10

Ну, мы получили ответ bcache, но не ответ на flashcache. Я выбрал flashcache, потому что у меня уже была существующая установка, поэтому о bcache не могло быть и речи. Мне это казалось проще в настройке. Я выбрал метод DKMS, чтобы не зацикливаться на перестройке модуля / инструментов при каждом обновлении ядра.

Эти шаги описаны в README-DKMS на Github.

Сборка модуля

  1. Первое, что вы делаете, это устанавливаете необходимые условия для здания:

    sudo apt-get install dkms build-essential linux-headers-$(uname -r) git
    
  2. Тогда поймайте источник:

    git clone git://github.com/facebook/flashcache; cd flashcache
    
  3. Сборка и установка модулей:

    make -f Makefile.dkms
    

Создание устройства flashcache

(В этом примере я использую кэширование с обратной записью - по умолчанию - но flashcache может также выполнять запись и перезапись)

Кэширование некорневого (не смонтированного на /) устройства

sudo flashcache_create -p back fcache /dev/sdbX /dev/sdaX Где fcache - это созданное устройство (/ dev / mapper / fcache), / dev / sdaX - это раздел SSD (или весь диск), а / dev / sdbX - это раздел жесткого диска.

Кеширование вашего корневого устройства

Есть еще несколько шагов, если вы кэшируете свое корневое устройство. Вам понадобится Ubuntu LiveCD / USB для этого раздела.

  1. cd /path/to/flashcache/source

  2. make -f Makefile.dkms boot_conf

  3. Отредактируйте /boot/grub/grub.cnf и / etc / fstab для загрузки из / dev / mapper / fcache (я не верю, что этот шаг действительно необходим, но он говорит об этом). Обязательно запишите UUID вашего исходного корневого устройства.

  4. Перезагрузитесь с LiveCD / LiveUSB.

  5. Смонтируйте ваше корневое устройство: mount /dev/sda4 /mnt(/ dev / sda4 - мой корневой раздел Linux)

  6. cd /mnt/path/to/flashcache/source

  7. sudo apt-get install dkms build-essential linux-headers-$(uname -r)

  8. make; sudo make install Нет необходимости выполнять полную настройку DKMS в реальной среде

  9. Размонтировать корневое устройство sudo umount /mnt

  10. sudo flashcache_create -p back fcache /dev/sdbX /dev/disk/by-uuid/[UUID] Где fcache - это созданное устройство (оно должно быть таким же, как вы положили в / etc / fstab и /boot/grub/grub.cnf, в моем случае это был fcache), / dev / sdbX - это раздел SSD (или весь диск ) и [UUID] - это UUID вашего корневого раздела.

  11. Перезагрузка!

Предостережения при использовании корневого устройства

Одна небольшая неприятность, когда flashcache используется для корневого устройства, заключается в том, что grub-probe не может обнаружить корневое устройство и может испортить ваше загрузочное меню, чтобы у вас было два входа в Ubuntu. Но это не должно иметь значения, какой вы используете во всей реальности, так как make -f Makefile.dkms boot_confшаг выше устанавливает некоторые скрипты в вашем initrd, которые будут обнаруживать и использовать устройство flashcache.

Чак Р
источник
2
Я вижу, что по крайней мере в raring есть пакеты для flashcache-dkms и flashcache-utils. Как изменится установка?
13
Да неужели? Я не заметил Я также использую Raring, но установил его из репозитория Git. Мне пришлось бы взглянуть на пакет, но я могу представить, что вы сможете пропустить первые пару разделов и все же пройти через процесс загрузки корневого устройства.
Чак Р
1
Пакет flashcache-dkms в ubuntu 13.10 не включает в себя модули flashcache и двоичные файлы для initramfs, поэтому, если вы заархивируете свой root, вы не сможете его загрузить. Я создал ошибку: bugs.launchpad.net/ubuntu/+source/flashcache/+bug/1290148 Я создал flashcache из исходного кода, как описано выше, и мне удалось загрузить следующую цепочку: sda7 -> flashcache -> dm- crypt -> lvm -> ext4. Просто добавьте разработчика flashcache в / etc / crypttab и обновите-initramfs -u
Martin Vysny
Можете ли вы добавить комментарий с изменениями, которые вы должны были внести в файл grub.
Капад
Я больше не изменяю grub.cfg, в этом нет необходимости. Тем не менее, вы делаете такое изменение: linux /boot/vmlinuz-3.19.0-51-lowlatency root=UUID=0a540b91-5990-4df0-bc99-5d6e2cd3fed6 ro recovery nomodesetto linux /boot/vmlinuz-3.19.0-51-lowlatency root=/dev/mapper/fcache ro recovery nomodeset(то есть измените параметр root =)
Chuck R
12

Существует инструмент преобразования для включения bcache на существующем устройстве (раскрытие: я написал его). Это также способ перейти к новым установкам, поскольку современные установщики дистрибутивов не знают, как создавать устройства bcache (в этом случае: начните с установки на жесткий диск).

Смотрите инструкции по преобразованию вашей корневой файловой системы в bcache в blocksREADME.

bcache требует Linux 3.10 или более поздней версии , которая является дерзкой и может быть установлена ​​вручную с http://kernel.ubuntu.com/~kernel-ppa/mainline/?C=M;O=D (ищите новейшую версию с тегами , в настоящее время v3.11.5-saucyи установить дэбы, которые соответствуют вашей архитектуре).

bcache-toolsи blocksможет быть установлен из моего хранилища ppa .

Габриель
источник
1
Этот инструмент не работает для текущей (15.04) версии Ubuntu; см. github.com/g2p/maintboot/issues/1 и github.com/g2p/blocks/issues/13
Жан Джордаан
На самом деле сам инструмент в настоящее время не сломан (проверено вчера на жестком диске емкостью 350 ГБ). Однако текущие версии не могут быть использованы для преобразования системных дисков ( /, /home, /usr/...) в то время как система работает (как maintboot сломана). В качестве альтернативы вы можете использовать живую USB-флешку, установить ее blocksи использовать для конвертации ваших дисков. Однако помните, что этот инструмент работает только с первичными таблицами разделов MBR и GPT и требует 1 МБ дополнительного пространства перед каждым разделом.
ntninja
5

Предварительное предупреждение: bcache нельзя использовать для существующей установки Ubuntu. Если вам требуется SSD-кэширование для вашей операционной системы, вам следует дождаться будущей или специальной версии установщика Ubuntu, которая могла бы настроить ваш SSD-кеш. Смотрите этот ответ Оли здесь: bcache требует новой установки?

Для всех, кто хочет использовать диск bcache для данных не из ОС:

Первое, что нужно сделать, это обновить ваше ядро, если вы используете 13.04 или более раннюю версию, использующую ядро ​​PPA ядра. Инструкции по использованию этого можно найти здесь:

https://wiki.ubuntu.com/Kernel/MainlineBuilds

Убедитесь, что вы выбрали ядро ​​3.9 или выше при загрузке, иначе оно не будет работать, и ваш диск исчезнет.

Установите bcache-tools, на данный момент вам придется установить из репозитория git:

git clone http://evilpiepirate.org/git/bcache-tools.git

Если вам удастся сделать пакет bcache-toolsдля Debian, сообщите нам, и этот вопрос будет обновлен для вас. ( bcache-toolsВ зависимости от сборки есть uuid-devи libblkid-dev. Они должны быть установлены, чтобы построить bcache-tools.)

Когда у вас есть все инструменты на месте, вы готовы попробовать и следовать руководству здесь:

http://atlas.evilpiepirate.org/git/linux-bcache.git/tree/Documentation/bcache.txt

В этом руководстве показано, как отформатировать диски (твердотельный накопитель и жесткий диск), а затем соединить их вместе, чтобы создать новый блок устройства с помощью bcache. Оставьте комментарий, если вы сочтете инструкции непонятными, и я дополню этот ответ упрощениями.

Мартин Оуэнс -доктормо-
источник
Можно ли создать загрузочный диск с ядром 3.9, а затем создать диск bcache и установить Ubuntu поверх этого диска?
Капад
kapad - это должно быть возможно, но вы должны убедиться, что при установке ubuntu были установлены правильные драйверы, доступные во время загрузки, и вам, возможно, придется выполнить загрузку вне bcache, чтобы grub мог его найти.
Мартин Оуэнс -доктормо-
2

Я думал, что приду сюда и прокомментирую, что произошло со мной, когда я установил новое ядро. Я использовал flashcache только для моего раздела / home / folder. Я установил новое ядро, загрузился в него, и он остановился во время загрузки и сказал, что не может найти / dev / mapper / home_cached, у вас есть 3 варианта, когда вы получаете это сообщение, и я выбираю опцию входа в систему как root и попытаться это исправить. Сначала я попытался загрузить модуль flashcache, и он сказал, что не может его найти. Поэтому я подумал, что мне придется скомпилировать и установить его для этого нового ядра, которое я только что установил. у меня все еще была папка / flashcache /, расположенная в / root /, поэтому я перешел в нее и запустил

make -f Makefile.dkms boot_conf

потом я побежал

make install

Затем я загрузил модуль flashcache

modprobe flashcache

тогда я просто должен был загрузить мое существующее устройство flashcache, которое было

flashcache_load /dev/sdb1

затем просто смонтируйте мой домашний раздел с помощью

mount /home

затем выйдите из системы как root с выходом в командной строке, и загрузка продолжится как обычно. все сделано!

Ubu Технический Гуру
источник
мне интересно, если это все еще работает, я закончил тем, что переключился и больше не использовал flashcache, я просто установил Arch на SSD на 64 ГБ (ядро linux думает, что это только 32 ГБ) из-за внутренней прошивки. Я мог видеть, что это полезно в качестве кеширующего диска для некоторых паровых игр.
Ubu Технический гуру