The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Раздел полезных советов: Использование FlashCache для кэширо..."
Отправлено auto_tips, 26-Сен-11 14:26 
Весной 2010 года компания Facebook [[https://www.opennet.ru/opennews/art.shtml?num=26440 открыла]] код проекта [[https://github.com/facebook/flashcache/ FlashCache]], представляющего собой модуль для ядра Linux, позволяющий заметно ускорить работу MySQL и других интенсивно работающих с диском приложений. Увеличение производительности достигается за счет организации процесса прозрачного кэширования наиболее активно используемых данных на быстрых SSD-накопителях.

С точки зрения организации работы ничего не меняется, добавляется новое блочное устройство, которое при чтении выдает данные из быстрого кэша, а при записи дублирует их в кэше и на диске, обеспечивая прежний уровень надежности. Поддерживается также менее надежный режим увеличения скорости записи, при котором сначала осуществляется запись на хранилище SSD, а затем в фоне производится  синхронизация данных на обычное хранилище. Поддерживаются функции зеркалирования кэша на несколько SSD-накопителей и  задействование команды ATA TRIM для более оптимального распределения данных по SSD.


++ Установка.

Устанавливаем сопутствующие пакеты для Debian/Ubuntu:

   $ apt-get install git-core dkms build-essential linux-headers-`uname -r`


Для CentOS/RHEL подключаем репозитории [[http://fedoraproject.org/wiki/EPEL EPEL]] и репозиторий [[http://mirror.centos.org/centos/$releasever/updates/SRPMS/ SRPMS]].
Устанавливаем необходимые пакеты:

   $ yum install dkms gcc make yum-utils kernel-devel

Так как для сборки FlashCache требуются некоторые внутренние заголовочные файлы, которые не входят в состав пакета kernel-headers/devel требуется загрузить и установить полный код ядра:

   $ yumdownloader --source kernel-`uname -r`
   $ sudo rpm -ivh kernel-`uname -r`.src.rpm

Загружаем исходные тексты FlashCache:

   $ git clone https://github.com/facebook/flashcache.git

Работа FlashCache протестирована с ядрами Linux с 2.6.18 по 2.6.38, для более новых ядер могут наблюдаться проблемы.

Собираем модуль с использованием DKMS (Dynamic Kernel Module Support):

   $ cd flashcache
   $ sudo make -f Makefile.dkms

   install -o root -g root -m 0755 -d /var/lib/dkms/flashcache/1.0-101-g4bceda86d13d/source
   rsync -r src/ /var/lib/dkms/flashcache/1.0-101-g4bceda86d13d/source/
   sed "s/PACKAGE_VERSION=/PACKAGE_VERSION=1.0-101-g4bceda86d13d/" src/dkms.conf > "/var/lib/dkms/flashcache/1.0-101-g4bceda86d13d/source/dkms.conf"
   dkms build -m flashcache -v 1.0-101-g4bceda86d13d

   Kernel preparation unnecessary for this kernel.  Skipping...

   Building module:
   cleaning build area....
   KERNEL_TREE=/lib/modules/2.6.32-33-generic/build make modules.......
   cleaning build area....

   DKMS: build Completed.
   make -C src/utils install
   ...
   install -d -m 755 /sbin/
   install -m 755 flashcache_create flashcache_destroy  flashcache_load /sbin/
   make[1]: Выход из каталога `/home2/home/mc/soft/flashcache/flashcache/src/utils'
   dkms install -m flashcache -v 1.0-101-g4bceda86d13d

   flashcache.ko:
   Running module version sanity check.
    - Original module
      - No original module exists within this kernel
    - Installation
      - Installing to /lib/modules/2.6.32-33-generic/updates/dkms/

   depmod.........

   Updating initrd
   Making new initrd as /boot/initrd.img-2.6.32-33-generic
   (If next boot fails, revert to the .bak initrd image)
   update-initramfs....

все, теперь модуль flashcache.ko установлен и готов к использованию.


++ Режимы кэширования

Поддерживается три режима кэширования:

Writethrough - самый надежный режим, при котором все операции записи сразу переносятся на диск и сохраняются на SSD. Кэшируются только операции записи. При перезагрузке или при отключении накопителя содержимое кэша не теряется и может быть использовано сразу, без траты дополнительного времени на его заполнение.

Writearound - надежный режим, при котором данные при выполнении операции записи сохраняются только на диск и не отражаются на SSD. Кэш на SSD-накопителе обновляется только на основании выполнения операций чтения с диска (кэшируются только операции чтения). Режим подходит в ситуации, когда запись на диск производится быстрее, чем на SSD. После перезагрузки или отключения накопителя кэш начинает заполняться с нуля.

Writeback - наиболее быстрый, но менее надежный режим. Данные вначале записываются на SSD, а потом в фоне перекидываются на диск. Кэшируются как операции записи, так и чтения. При экстренном отключении питания не исключено пропадание не синхронизированных на диск данных.

++ Использование

Для управления FlashCache подготовлены три утилиты:

flashcache_create - создание нового дискового раздела с кэшированием;

flashcache_load - подключение ранее созданного раздела с кэшем в режиме  writeback;

flashcache_destroy - очистка содержимого кэша, созданного в режиме  writeback.

Для режимов writethrough и writebehind утилиты flashcache_load и flashcache_destroy не требуются, так как кэш очищается при переподключении раздела.


Предположим, что в системе имеется жесткий диск /dev/sdb и быстрый SSD-накопитель /dev/sdc. Для организации кэширования в режиме writeback, с размером блока 4 Кб и общим размером кэша 1 Гб следует выполнить:

   flashcache_create -p writeback -s 1g -b 4k cachedev /dev/sdc /dev/sdb

После выполнения этой команды будет создано виртуальное блочное устройство с именем "cachedev", при монтировании раздела через которое будет автоматически использовано кэширование.

Для загрузки прошлого содержимого кэши или очистки кэша в режиме writeback можно выполнить команды:

   flashcache_load /dev/sdc
   flashcache_destroy /dev/sdc

Для удаления и просмотра статистики для уже созданных виртуальных блочных устройств следует использовать утилиту dmsetup.

Удаляем устройство cachedev:

   dmsetup remove cachedev

Смотрим статистику:

   dmsetup status cachedev
   dmsetup table cachedev

или

   cat /proc/flashcache/cachedev/flashcache_errors
   cat /proc/flashcache/cachedev/flashcache_stats

Для тонкого управления режимами кэширования поддерживается большое число специальных sysctl-вызовов, описание которых можно найти в [[https://github.com/facebook/flashcache/blob/master/doc/flash... документации]].

URL: https://github.com/facebook/flashcache/blob/master/doc/flash... https://github.com/facebook/flashcache/blob/master/README-DKMS
Обсуждается: https://www.opennet.ru/tips/info/2629.shtml

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру