Ramdisk Ubuntu 10.04

12

Я использую Ubuntu 10.04 (64bit) для моего рабочего стола.
Машина имеет 5 ГБ оперативной памяти.

Я хочу использовать RAM-диск (1G или 2G), но я не знаю, как я могу это сделать.

Есть ли продукт с открытым исходным кодом RAM-диска?

Вениамин
источник

Ответы:

18

Технология встроена в ядро, вам не нужны никакие дополнительные инструменты. На самом деле у вас уже есть несколько RAM-дисков (которые вы не должны использовать, они зарезервированы для системы), которые вы можете увидеть, выполнив

grep -w tmpfs /proc/mounts

Чтобы установить подключенный RAM-диск объемом 2 ГБ /ramdisk, добавьте следующую строку в /etc/fstab:

ramdisk  /ramdisk  tmpfs  mode=1777,size=2g

Затем подключите диск с помощью команды mount /ramdisk(это будет сделано автоматически при перезагрузке).

Указанный размер является максимальным, диск использует только столько памяти, сколько файлов на нем.


Вы можете изменить, /tmpчтобы быть RAM-диском. В /etc/fstabстроке выше поставьте /tmpвместо /ramdisk, затем перезагрузите.

В первый раз, когда вы перезагружаетесь после /tmpустановки диска RAM, файлы, которые были на нем, /tmpбудут скрыты. Это безвредно, за исключением того, что они тратят немного дискового пространства. Вы можете очистить их ( после перезагрузки с /tmpRAM-диска), выполнив

mount --bind / /mnt
rm -r /mnt/tmp/* /mnt/tmp/.*
umount /mnt

Команда mount --bindсоздает /mntдублирующее представление вашей корневой файловой системы; но в то время как RAM-диск теперь скрывается /tmpв корневом представлении, ничего не скрывается /mnt/tmp.

ДОБАВЛЕНО : Вы можете переключиться /tmpна RAM-диск без перезагрузки, это немного сложнее. Добавьте строку, /etc/fstabкак указано выше, а затем выполните следующие команды:

mkdir /tmp.old
mount --bind /tmp /tmp.old
mount /tmp
cd /tmp
ln -s /tmp.old/* /tmp/.* .

Затем удалите /tmp.oldпосле следующей перезагрузки.

Причина, по которой вы не можете просто переместить файлы /tmp.oldв, /tmpзаключается в том, что в некоторых критически важных программах открыты файлы /tmp, например, /tmp/.X11-unix/X0которые прослушивает X-сервер, и каждая программа с графическим интерфейсом открывается при запуске. Перемещение файла в другую файловую систему означает его копирование и удаление старого, так что в конечном итоге X-сервер все еще прослушивает, /tmp.old/.X11-unix/X0но X-клиенты /tmp/.X11-unix/X0напрасно связываются. На сервере вы можете избежать неприятностей, если будете осторожны.

Жиль "ТАК - перестань быть злым"
источник
@giles: есть ли способ сделать это без изменения fstab и перезагрузки? Я предполагаю, что есть соответствующий метод mkfs, за которым следует mount, но «man mkfs» не очень помог.
Хотей
1
@hotei: Перезагрузка только для переключения /tmpк tmpfs. Это не обязательно, и я отредактировал свой ответ, чтобы объяснить, как это сделать, но это более сложно. В этом нет необходимости, mkfsпотому что нет места для подготовки, ядро ​​все обрабатывает.
Жиль "ТАК - перестань быть злым"
@giles: Спасибо за обновление. Мне не хватало той части, где происходит "волшебство" во время чтения маунта строки fstab. Я верю, что понимаю, почему это работает сейчас.
Хотей
Могу ли я спросить, приводит ли это к заметному ускорению?
Роберт Массайоли
@ Роберт: Я думаю, что это вызвало заметное ускорение очень медленного SSD моего нетбука (главным образом потому, что синхронизация может длиться несколько секунд, а /tmpна диске увеличивает частоту синхронизаций), но это ненадежное субъективное впечатление. Я никогда не пытался измерять.
Жиль "ТАК - перестань быть злым"