Создание RAM-диска в Linux


Не секрет, что виртуальный диск размещенный в памяти иногда очень и очень 
выручает в трудных ситуациях. В ОС FreeBSD такие штуки делаются с помощью 
mdconfig, а вот в Linux... Оказалось, совсем не так. Возникла в общем ситуация, 
когда web-программистам понадобился сервер с быстрым-быстрым диском. Memcache 
само собой был, но вот еще и диск хотелось попользовать. На серваке сначала стоял 
CentOS, но его зависимости в виде ImageMagick-GnomeLibs, x64_86 - i386 меня давно 
раздражали, я разозлился и поставил Debian - там кривизны намного меньше. 
Впрочем, это всё лирика - RAM диск делается одинаково и там и там. Сейчас сделаем 
в Ubuntu.

Сначала - прописываем /boot/grub/menu.lst - опцию ядра. Ядро кстати, и по 
умолчанию создает ram-девайсы вида /dev/ram0, /dev/ram1, но размеры этих девайсов 
достаточно маленькие. Мы будем делать диск в памяти размером 1G (на сервере их 
все равно 16G).

root            (hd0,0)                                                         
kernel          /kernel-name root=/dev/mapper/VolGroup-VolRoot ro quiet splash ramdisk_size=1048576
initrd          /image-name

Дальше - всего 1 шаг. В стартовый скрипт включаем инициализацию и разметку диска, 
а также его монтирование к нужной папке. У меня стартовый скрипт называется 
/etc/rc.local, но это не важно:

# RAMDISK
/sbin/mke2fs -q -m 5 -b 1024 /dev/ram0 1048576
/bin/mount -t tmpfs /dev/ram0 /ram -o size=1g,rw
/bin/chown user:user /ram
/bin/chmod 0755 /ram

Теперь где были косяки. Когда я не указывал размер блока -b 1024 ... 1048576 и 
размер диска size, то у меня всегда RAM-диск приобретал объем в 4G. 4G было жалко 
- пришлось покопаться в мануалах и заставить RAM выдавать правильные размеры. 

Еще момент. Читаем /usr/src/linux/Documentation/filesystems/. Оказывается - tmpfs 
может быть сброшена в swap, если памяти кому-то не хватит. Обнаруживаем - вместо 
tmpfs можно использовать ramfs с небольшими модификациями - ее в своп не 
сбросишь:

mount -t ramfs -o maxsize=256M none /mnt

Бонусы (у себя я сделал все-таки tmpfs). Мои SATA-вины в RAID5 с кешированием 
показывают около 150Мб/сек реальной скорости чтения. А RAM-диск показывает 1Гб/
сек реальной скорости записи (!). Т.е. бонусы есть. Осталось только правильно ими 
воспользоваться.