Отказоустойчивое решение для ОЗУ
Я ищу производственное решение для создания ОЗУ, которое будет безопасно синхронизироваться с жестким диском.
У меня есть специальное программное обеспечение с большой нагрузкой ввода-вывода (это какая-то проприетарная БД, ориентированная на документы), и мне нужно значительно ускорить его. Я не могу изменить или избавиться от самого программного обеспечения, поэтому приходится делать горизонтальное или вертикальное масштабирование. Программное обеспечение не поддерживает горизонтальную разметку блока, поэтому я сначала смотрю на вертикальное масштабирование.
Основная идея проста - мы покупаем много ОЗУ (96 ГБ) и помещаем все это в ОЗУ. Но это должно быть отказоустойчиво, потеря любых данных при перезагрузке сервера не вариант. Поэтому я ищу решение, которое будет поддерживать прозрачную синхронизацию между RAM-накопителем и жестким диском.
Грязное решение, такое как копирование файлов через bash-скрипт, не вариант, нужно что-то более надежное.
Теоретически, как я вижу, какой-то распределенный ФС, подобный описанному здесь, может использоваться странным образом - для синхронизации двух разделов на одном компьютере. Но я сомневаюсь, что это сработает на практике, и никогда не пробовал этого.
Итак, есть ли идеи о готовом решении для RAM-диска с прозрачной синхронизацией с HDD?
данные UPD:
- Предполагаемый объем данных, которые мне нужно будет хранить в оперативной памяти, составляет около 50 ГБ.
- Серверы выделены HP DL320, 8 ЦП, 16 ГБ ОЗУ (до 96 ГБ).
- Профиль ввода / вывода аналогичен приложению базы данных - много операций чтения с произвольным доступом, меньше операций записи.
3 ответа
Я спросил об имеющемся у вас оборудовании, потому что можно получить устройства с низкой задержкой и большим количеством операций ввода-вывода в секунду, чтобы преодолеть ограничения ваших дисков.
Однако вы не предоставили оценку размера вашего рабочего набора данных. Это имеет огромное значение. У нас нет достаточно информации в настоящее время. Каков профиль ввода / вывода приложения? Написать предвзятым? Читайте предвзятым? Какова текущая настройка хранилища?
Общее предложение будет использовать массив SSD-накопителей. Другой вариант - использовать PCIe-ускоритель, такой как FusioIO.
Может быть, даже рассмотреть DRBD в асинхронном режиме...
Более эзотерическим решением было бы использование общего хранилища, которое имеет некоторую степень многоуровневого хранения, которое может хранить часто используемые данные в ОЗУ или на твердотельных накопителях. Хорошим примером является файловая система ZFS и ее использование ускорения записи ZIL и кэширования чтения L2ARC.
И еще более эзотерическим решением является программный подход к кешированию, такой как " В конечном итоге постоянный диск" (EPRD). Это создает диск RAM с файловой поддержкой в файловой системе FUSE и может быть хорошим выбором для ускорения ввода-вывода вашего приложения. Это может быть то, что вы хотите...
Из документации по конфигурации:
You can however also create a ramdisk that will have it's
changes flushed to disk every N seconds and instead of keeping
everything in ram it only allocated 512M for caching.
./eprd_setup -f /data/saverimg -s 10G -m 3 -c -p512M
In this example the data is flushed to disk every 3 seconds.
Редактировать:
Если это системы HP ProLiant DL320, я предполагаю, что это модели G6. У вас есть контроллер Smart Array P410 и кэш-память с батарейным питанием или флэш-памятью? Если нет, то это первый шаг, который вы должны сделать, прежде чем приступить к настройке RAM-диска. Это имеет значение!
Вы не хотите иметь фактический RAM-диск, который синхронизируется с жестким диском - вам нужна карта PCIe на основе RAM с резервной батареей и NV-кешем. В основном, карта FusionIO.
Вы не можете сделать это сегодня, вы хотите 'отказоустойчивый', но хотите использовать оперативную память, которая по своей природе небезопасна, поэтому NVRAM сделан - но это стоит. Я использую FusionIO и, конечно, это недешево, но этот сегмент рынка хранения быстро меняется, и цены падают, посмотрите на некоторых других поставщиков, продающих флэш-память на основе PCIe, и вы найдете менее зрелые продукты, но по гораздо более дешевым ценам.
Да, и никакая умная синхронизация с быстрым приводом не будет работать идеально, в какой-то момент вы получите повреждение.