Я ищу производственное решение для создания RAM-накопителя, который будет безопасно синхронизироваться с HDD.
У меня есть специальное программное обеспечение с большой нагрузкой на ввод-вывод (это своего рода проприетарная документно-ориентированная БД), и мне нужно резко ускорить его. Я не могу изменить или избавиться от самого программного обеспечения, поэтому мне приходится выполнять горизонтальное или вертикальное масштабирование. Программа не поддерживает горизонтальное масштабирование окна, поэтому я сначала рассмотрю вертикальное масштабирование.
Основная идея проста - мы покупаем много оперативной памяти (96 ГБ) и помещаем все это на RAM-накопитель. Но это должно быть отказоустойчивым, потеря любых данных при перезагрузке сервера недопустима. Поэтому я ищу решение, которое будет поддерживать прозрачную синхронизацию между RAM-диском и HDD.
Грязное решение вроде копирования файлов через bash-скрипт не вариант, нужно что-то более надежное.
Теоретически как я вижу, какая-то распределенная ФС вроде описанной Вот может использоваться странным образом - для синхронизации двух разделов на одной машине. Но я сомневаюсь, что это сработает на практике, и никогда не пробовал.
Итак, есть идеи по поводу готового решения для RAM-накопителя с прозрачной синхронизацией с HDD?
данные UPD:
Вы не хотите иметь реальный RAM-диск, который синхронизируется с жестким диском - вам нужна карта PCIe на основе RAM с резервным аккумулятором и кеш-памятью NV. По сути, карта FusionIO.
Я спросил об доступном вам оборудовании, потому что можно получить устройства с низкой задержкой и высоким IOPS, чтобы преодолеть ограничения ваших дисков.
Однако вы не предоставили оценку размера вашего рабочего набора данных. В этом огромная разница. В настоящее время у нас недостаточно информации. Каков профиль ввода-вывода приложения? С пристрастием к записи? Предвзято к чтению? Каковы текущие настройки хранилища?
Общее предложение - использовать массив SSD-накопителей. Другой вариант - использовать ускоритель PCIe, например FusioIO водить машину.
Может даже подумать DRBD в асинхронном режиме ...
Более эзотерическим решением было бы использование общего хранилища с определенной степенью многоуровневости, которое может хранить часто используемые данные в ОЗУ или на SSD. В Файловая система ZFS и его использование ЗИЛ писать ускорение и L2ARC кэширование чтения - хороший пример.
И еще более эзотерическим решением является программный подход к кэшированию, такой как В конечном итоге постоянный RAM-диск (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-диска. Это имеет значение!
Вы не может сделайте это сегодня, вы хотите «отказоустойчивого», но хотите использовать оперативную память, которая по своей сути небезопасна, поэтому делается NVRAM, но это стоит денег. Я использую FusionIO, и, конечно, это не дешево, но этот сегмент рынка хранилищ быстро меняется, и цены падают, посмотрите на некоторых других поставщиков, продающих флэш-память на основе PCIe, и вы найдете менее зрелые продукты, но по гораздо более низким ценам.
О, и никакая умная синхронизация ramdrive не сработает идеально, вы воля получить коррупцию в какой-то момент.