Итак, пока что опишу сумбурно. Завтра загляну и допишу. Если создал не там - простите, не нашел куда. Имеется "сервак" всё лежит на ноутбуке :'( следующей конфы: Для тех, кому интересно CPU: Intel Pentium Dual-Core T3400 @ 2.0 Ghz MainBoard: Intel PM45 Express RAM: 3 Гбайт DDR2 @ 800 Mhz HDD: WD 320 Гбайт @ 5400 об./мин Всё настроено по инструкции "Идеальный сервер - Ubuntu 11.04 [iSPConfig 3]"+ я поставил memcache, nginx, eaccelerator... Долгое время юзал memcache+nginx и был доволен, но сегодня в "заду" загорелось и решил поискать я что-то эдакое. Эдаким оказалась TMPFS. В кратце - это файловая система, целиком сидящая в RAM, отличия от RAMFS в том, что RAMFS может динамично увеличиваться, пока не "съест" всю память и не использует swap (если я всё правильно понял). Короче, заинтересовался я и начал рыть. Нашел вот этот пост. В нём меня дико заинтересовала фраза:
Теперь вопрос: Как это всё настроить так, чтобы всё было прозрачно? То есть чтобы при создании сайта или базы в ISPconfig они ложились в TMPFS раздел, который бы монтировался при включении и сохранялся при выключении. Попробовал - получилось. Перенёс сайт на Opencart, но на глаз не сильно понял что же поменялось... Подумал, подумал и решил, что виновата база. Рискнул и перенёс всю папку /var/lib/mysql Итог - всё просто летает. Изменений в fstab не вносил, то есть при ребуте всё сотрётся и надо будет монтировать и переносить опять. Продолжая рыть нашел такой пост. В нём уже гораздо интересней, так как есть возможность:
Теперь вопрос: Как это всё настроить так, чтобы всё было прозрачно? То есть чтобы при создании сайта или базы в ISPconfig они ложились в TmPFS раздел, который бы монтировался при включении и сохранялся при выключении. Я знаю что: 1. У меня в есть около 1,5гб свободной оперативы. 2. Есть /var/www 3. Сайты, которые там лежат вместе с базами, спокойно уместятся в 1,5гб Ну что, попробуем?! ================================UPDATE================================ MySQL в TMPFS Итак, только что у меня получилось завести MySQL в TMPFS. Я делал это на Ubuntu 13.04 Всё делалось с помощью статей, приведённых в первом посте, и методом тыка. Так что любые дополнения и улучшения приветствуются. 1. Первым делом создаём две директории: "mysql_tmp" - рабочая папка MySQL в TMPFS и "mysql_arch" - папка для сохранения на жестком диске.
mkdir /var/lib/mysql_tmp
mkdir /var/lib/mysql_arch
2. Далее назначаем владельца рабочей папки, и делаем её доступной для записи
chown mysql:mysql /var/lib/mysql_tmp/tmp/mysql_tmp
chmod 777 -R /var/lib/mysql_tmp
3. Копируем файлы из нынешней рабочей папки, в новую (TMPFS).
rsync -a /var/lib/mysql/ /var/lib/mysql_tmp/
rsync -a /var/lib/mysql/ /var/lib/mysql_arch/
4. Чтоб при включении перенести файлы из mysql_arch в mysql_tmp добавил в /etc/init.d/rc.local команду "rsync -a /var/lib/mysql_arch/ /var/lib/mysql_tmp/":
nano /etc/init.d/rc.local
И допишите в конец файла
rsync -a /var/lib/mysql_arch/ /var/lib/mysql_tmp/
5.Теперь нужно-же сохранять изменения в mysql_arch при выключении сервера. Тут немного сложнее. В /etc/init.d кидаем файлик такого содержания:
#!/bin/sh
rsync -a /var/lib/mysql_tmp/ /var/lib/mysql_arch/
exit 0
Обзываем S00ramdisk-sync-shutdown и ставим права на выполнение.
nano /etc/init.d/ramdisk-sync-shutdown
#Вставляем содержимое
chmod 7777 /etc/init.d/S00ramdisk-sync-shutdown
Теперь в папку /etc/rc0.d и /etc/rc6.d делаем символические ссылки с нашего файла: S00ramdisk-sync-shutdown.
ln -s /etc/init.d/S00ramdisk-sync-shutdown /etc/rc0.d
ln -s /etc/init.d/S00ramdisk-sync-shutdown /etc/rc6.d
Все, теперь при выключении или перезагрузке содержимое нашего TMPFS будет сохранено на HDD в mysql_arch. 6. Ну и на последок не забываем про форсмажор - добавим задание в cron, чтобы копирование происходило каждых 20 минут.
crontab -e
и в конец файла вставить:
*/20 * * * * rsync -a /var/lib/mysql_tmp/ /var/lib/mysql_tmp_arch/
7. Теперь осталось добавить монтирование в fstab
nano /etc/fstab
Добавить в конец
tmpfs /var/lib/mysql_tmp tmpfs size=1024m 0 0
8. Теперь окончательно - поменяйте рабочий путь в файле конфигурации MySQL my.cnf
nano /etc/mysql/my.cnf
В секции "datadir = /var/lib/mysql_tmp" Итак, вроде бы всё работает. Пока так и не понял насколько помогло - только обновил сервер, сайты ещё не перенёс, поэтому пока сказать не могу. Если вдруг после ребута mysql откажется запускаться - попробуйте дать права на папку повторно.
chown mysql:mysql /var/lib/mysql_tmp/
chmod 777 -R /var/lib/mysql_tmp