- Создаём RAMdisk на Ubuntu 18.04
- Подключение RAM-диска на UBUNTU 18.04 автоматически, при загрузке системы
- Сохранение данных RAM-диска:
- Using the RAM disk block device with LinuxВ¶
- 1) OverviewВ¶
- 2) ParametersВ¶
- 3) Using “rdev”¶
- 4) An Example of Creating a Compressed RAM DiskВ¶
- Записки дебианщика
- Виртуальный диск в памяти: как создать ramdisk в Linux?
Создаём RAMdisk на Ubuntu 18.04
Создаем папку для рамдиска (точку монтирования):
ВНИМАНИЕ: Здесь: size=2G это значит, что рамдиск будет иметь размер 2 Гб. Для создание рамдиска размером 256Мб следует вписать:
size=256M
После чего проверяем правильность создания рамдиска командой:
И видим следующий результат:
Теперь вы можете использовать рамдиск как вы используете обычные разделы жесткого диска. Вы даже можете редактировать любые файлы прямо из РАМДИСКА.
Чтобы отключить виртуальный диск (РАМДИСК), выполните следующую команду (все ваши файлы на этом разделе будут моментально удалены):
Подключение RAM-диска на UBUNTU 18.04 автоматически, при загрузке системы
Вы можете использовать файл /etc/fstab для автоматического монтирования виртуального диска при загрузке системы.
Во-первых, сделайте резервную копию файла /etc/fstab. Можно с помощью следующей команды:
Резервная опия файла /etc/fstab сохранится в /etc/fstab.backup. Теперь если что-то случится в процессе, вы сможете просто восстановить файл /etc/fstab.
Открываем файл /etc/fstab:
После чего в конце файла добавляем следующую строчку:
После чего перезагружаем сервер командой:
После загрузки системы РАМдиск должен быть автоматически смонтирован (нужно проверить):
Сохранение данных RAM-диска:
Далее я покажу, как сохранить данные рамдиска на десткий диск при завершении работы системы и загрузить данные с жесткого диска в RAM-диск при загрузке системы.
Для этого создадим каталог, где диск будет смонтирован и где резервные копии данных будут сохраняться должны иметь одинаковый набор прав доступа к файлам.
Сначала создайте каталог, где данных RAM-диска будет сохранен при выключении системы с помощью следующей команды:
Теперь создайте файл системной службы с помощью следующей команды:
Источник
Using the RAM disk block device with LinuxВ¶
1) OverviewВ¶
The RAM disk driver is a way to use main system memory as a block device. It is required for initrd, an initial filesystem used if you need to load modules in order to access the root filesystem (see Using the initial RAM disk (initrd) ). It can also be used for a temporary filesystem for crypto work, since the contents are erased on reboot.
The RAM disk dynamically grows as more space is required. It does this by using RAM from the buffer cache. The driver marks the buffers it is using as dirty so that the VM subsystem does not try to reclaim them later.
The RAM disk supports up to 16 RAM disks by default, and can be reconfigured to support an unlimited number of RAM disks (at your own risk). Just change the configuration symbol BLK_DEV_RAM_COUNT in the Block drivers config menu and (re)build the kernel.
To use RAM disk support with your system, run вЂ./MAKEDEV ram’ from the /dev directory. RAM disks are all major number 1, and start with minor number 0 for /dev/ram0, etc. If used, modern kernels use /dev/ram0 for an initrd.
The new RAM disk also has the ability to load compressed RAM disk images, allowing one to squeeze more programs onto an average installation or rescue floppy disk.
2) ParametersВ¶
2a) Kernel Command Line Parameters
Size of the ramdisk.
This parameter tells the RAM disk driver to set up RAM disks of N k size. The default is 4096 (4 MB).
2b) Module parameters
/dev/ramX devices created.
Maximum partition number.
3) Using “rdev”¶
“rdev” is an obsolete, deprecated, antiquated utility that could be used to set the boot device in a Linux kernel image.
Instead of using rdev, just place the boot device information on the kernel command line and pass it to the kernel from the bootloader.
You can also pass arguments to the kernel by setting FDARGS in arch/x86/boot/Makefile and specify in initrd image by setting FDINITRD in arch/x86/boot/Makefile.
Some of the kernel command line boot options that may apply here are:
If you make a boot disk that has LILO, then for the above, you would use:
4) An Example of Creating a Compressed RAM DiskВ¶
To create a RAM disk image, you will need a spare block device to construct it on. This can be the RAM disk device itself, or an unused disk partition (such as an unmounted swap partition). For this example, we will use the RAM disk device, “/dev/ram0”.
Note: This technique should not be done on a machine with less than 8 MB of RAM. If using a spare disk partition instead of /dev/ram0, then this restriction does not apply.
Decide on the RAM disk size that you want. Say 2 MB for this example. Create it by writing to the RAM disk device. (This step is not currently required, but may be in the future.) It is wise to zero out the area (esp. for disks) so that maximal compression is achieved for the unused blocks of the image that you are about to create:
Make a filesystem on it. Say ext2fs for this example:
Mount it, copy the files you want to it (eg: /etc/* /dev/* …) and unmount it again.
Compress the contents of the RAM disk. The level of compression will be approximately 50% of the space used by the files. Unused space on the RAM disk will compress to almost nothing:
Put the kernel onto the floppy:
Put the RAM disk image onto the floppy, after the kernel. Use an offset that is slightly larger than the kernel, so that you can put another (possibly larger) kernel onto the same floppy later without overlapping the RAM disk image. An offset of 400 kB for kernels about 350 kB in size would be reasonable. Make sure offset+size of ram_image.gz is not larger than the total space on your floppy (usually 1440 kB):
Make sure that you have already specified the boot information in FDARGS and FDINITRD or that you use a bootloader to pass kernel command line boot options to the kernel.
That is it. You now have your boot/root compressed RAM disk floppy. Some users may wish to combine steps (d) and (f) by using a pipe.
Источник
Записки дебианщика
В этом блоге публикуются заметки и решения, найденные в процессе работы, освоения и жизни в дистрибутиве Debian GNU/Linux.
Виртуальный диск в памяти: как создать ramdisk в Linux?
Бывают задачи, когда нужно работать с большим количеством мелких файлов и делать это по возможности быстро, без завязок на меееедленную файловую подсистему. Ветераны вспомнят о том, что есть такой виртуальный диск , он же — RAM-дисках ( ramdisk ) и будут совершенно правы — это действительно выход, а сделать ramdisk в Linux можно буквально в один клик на клавиатуре .
Собственно, в ядре должна быть поддержка tmpfs, и если вы (или авторы вашего дистрибутива) не любители усложнять себе жизнь, она там должна быть.
Быстренько создаём новую точку монтирования:
# mount -t tmpfs -o size= xxx M tmpfs /mnt/tmpfs/
или
$ sudo mount -t tmpfs -o size= xxx M tmpfs /mnt/tmpfs/
где xxx M есть размер RAMdisk в Мегабайтах.
Будьте осторожны и не размахивайтесь слишком широко: если вы попросите создать ramdisk больше, чем имеете оперативной памяти, система начнёт сгружать всё в swap-файл и дела пойдут очень медленно и грустно.
Если же вы хотите изменить размер ramdisk — это просто:
# mount -o remount -o size= yyy M /mnt/tmpfs/
или
$ sudo mount -o remount -o size= yyy M /mnt/tmpfs/
При этом содержимое диска не пропадёт, но его размер тут же увеличится (при уменьшении также ничего не пропадёт, если только данных не больше, чем диск).
Другие способы создания виртуальных дисков в памяти хорошо описываются в англоязычном посте.
Предупреждаю особо горячих финских парней: это RAM-диск, а это значит, что всё его содержимое после отключения питания машины будет безвозвратно потеряно. Будьте бдительны.
Ссылки
Есть толковые посты о том, как в Linux сделать виртуальный диск в памяти здесь и тут.
15 комментариев: |высказаться!| RSS-лента дискуссии.|
Хм. Я в блоге тоже не так давно писал об этом.
Кстати говоря, это никакой не ramdisk. Это особенность ядра Linux и называется она tmpfs.
virens комментирует. 15 мар. 2010 г., 16:30:00
@bosha пишет.
Хм. Я в блоге тоже не так давно писал об этом.
А что ж ссылочку в посте не привели? Себя не похвалишь — никто не похвалит. В ваших блогах ничего сходного не нашел, увы.
Кстати говоря, это никакой не ramdisk.
Это понятно, просто для моих коллег, работающих под виндой, это самая близкая аналогия. Ну и в общем-то это можно и диском назвать 🙂
Анонимный комментирует. 15 мар. 2010 г., 16:41:00
Не знаю насколько хорошая это идея, но /tmp и каталог временных файлов для havp я так и монтирую, в tmpfs.
Правда полгига под это дело нервируют жабу:)
Alexey комментирует. 15 мар. 2010 г., 16:55:00
здорово, спасибо. А для чего конкретно вы используете tmpfs?
Omeh2003 комментирует. 15 мар. 2010 г., 17:31:00
Спасибо за инструкцию. Я в последнее время подумываю над тем что лучше базу с мускулом в памяти держать. Так что для меня инструкция в тему 🙂
Oleg комментирует. 15 мар. 2010 г., 18:58:00
К стати для особо горячих финских парней можно еще добавить, что использовать это надо с осторожностью при нехватки памяти. Ибо уйдет в своп и весть профит от использования может сойти на нет. 😉
Dormestmass комментирует. 15 мар. 2010 г., 21:23:00
В большинстве современных дистров tmpfs уже примонтирован в /dev/shm. Так что можно эту ФС сразу использовать без дополнительных телодвижений.
По поводу использования. tmpfs очень удобно использовать для хранения lock-файлов, используемых в скриптах, т.к. в случае неожиданного ребута они сами-собой удалятся.
Алексей Плутахин комментирует. 16 мар. 2010 г., 01:49:00
Спасибо. Полезная информация.
Анонимный комментирует. 16 мар. 2010 г., 02:08:00
# mkdir -p /mnt/ram
# mount -t ramfs none /mnt/ram
— это _настоящая_ ram, со всеми ее преимуществами, но целиком.
Если очень надо ограничить объем:
# dd if=/dev/zero of=/mnt/ram/diskimg bs=1024 count=1024
# mke2fs -vFL RAMDisk /mnt/ram/disk.img
# mkdir -p /mnt/ramdisk
# mount -o loop /mnt/ram/disk.img /mnt/ramdisk
Minoru комментирует. 16 мар. 2010 г., 08:22:00
он же RAM-дисках
«он же — RAM-диск»
Для этого быстренько создаём новую точку монтирования:
Это предложение лучше записать так: «Быстренько создаём точку монтирования». А то создаётся впечатление, что ты всё ещё о tmpfs в ядре говоришь.
больше
Откуда и зачем там перевод строки?
при уменьшении так же
Так же предупреждаю особо горячих финских парней
🙂
Вроде как видел советы держать копию профиля Firefox в оперативке — мол, так быстрее работает.
virens комментирует. 16 мар. 2010 г., 09:17:00
@Анонимный, 15.03.2010 8:41:00
Не знаю насколько хорошая это идея, но /tmp и каталог временных файлов для havp я так и монтирую, в tmpfs.
Ну так знакомые виндузятники спросили: а есть в этих линупсах рамдиск!? Вот я им этим постом и ответил. Ясен пень, что это есть уж сто лет как и это не вполне диск (мне выше уже попеняли на это — и в общем-то правильно).
@escantor, 15.03.2010 8:55:00
А для чего конкретно вы используете tmpfs?
Архивирование и обработка большого количества мелких файлов, работа с данными сигналов в текстовом формате (выделение столбцов\строк) — так быстрее.
@Иван, 15.03.2010 9:31:00
Я в последнее время подумываю над тем что лучше базу с мускулом в памяти держать.
Я там про горячих парней уже писал: грохнете базу — чур меня в комментах не проклинать 🙂 А синхронизовать ее потом как с той, что на винчестере?
@Olly Cat, 15.03.2010 10:58:00
К стати для особо горячих финских парней можно еще добавить, что использовать это надо с осторожностью при нехватки памяти.
Каждый уважающий себя горячий пингвиновод должен лично познакомиться с oom_killer 🙂
@Dormestmass
В большинстве современных дистров tmpfs уже примонтирован в /dev/shm.
А хочется свой лесапед с квадратными колесами 🙂 То есть свой каталог, где только твои файлы.
@Анонимный, 15.03.2010 18:08:00
# mount -t ramfs none /mnt/ram
— это _настоящая_ ram, со всеми ее преимуществами, но целиком.
Трюк интересный (я попробую на университетском кластере, который не жалко :-)). Но это вся оперативка — а хочется, чтоб еще осталось приложениями.
Если очень надо ограничить объем:
Конечно, надо, а то все в своп уйдет.
Спасибо тебе, анонимный разум, за столь интересный трюк. Будем пробовать.
@Minoru
И ты здесь, Брут? 🙂
А то создаётся впечатление, что ты всё ещё о tmpfs в ядре говоришь.
Да, увлекся.
Откуда и зачем там перевод строки?
У меня экран Уже, чем окно Scribefire — иногда я переношу слова принудительно, чтобы видеть, что пишу.
🙂
Таки требую отменить это дурное правило 🙂
Вроде как видел советы держать копию профиля Firefox в оперативке — мол, так быстрее работает.
Это тормозное чудовище ничто не спасет. И хотя я пользователь Огнелиса, но факт его тормозов (а в последнее время и несовместимости расширений) меня начинает бесить.
Еще раз спасибо за интересные трюки, идеи, советы и конечно же найденные ошибки 🙂 А коли отыщутся новые — отгружайте в комментарии.
Анонимный комментирует. 24 мар. 2010 г., 02:17:00
>Это тормозное чудовище ничто не спасет.
Прошу прощения, если знаете про VACUUM для фоксовского мускула. Помогало. Кэш фокса в tmps самообман. Меня огнелис уже не бесит. P.S. Сам давно на midori.
/.mozilla/firefox -name ‘*.sqlite’ -print -exec sqlite3 <> «VACUUM; REINDEX;» \;’
Дмитрий комментирует. 29 мар. 2010 г., 08:46:00
Здравствуйте.
Может кто нибудь мне приведет пример, как запускать в потоке два bash-скрипта, script1 делает echo «имя файла» script2 на вход это имя получает и он его, например, копирует куда-нибудь. Поотдельности все работает, script1 печатает «имя», если это имя скопировать подставить параметром в script2 «имя» — нормально копирует. А если
запускаю в одной строке:
# script1 ; script2
— печатает «имя» и все, больше ничего. пусто на входе script2!!
Анонимный комментирует. 18 авг. 2011 г., 09:21:00
С таким уровнем познаний рутом скрипты отлаживаешь.
Можно в обратные кавычки заключить то, что должно выполниться и подставиться вместо себя.
Или использовать xargs
script2 | xargs script1
Анонимный комментирует. 10 сент. 2012 г., 16:35:00
у меня несколько клонов одной проги запущены под вайном под разными префиксами (чтобы могли работать параллельно)
каждой из прог надо для работы 14 гб архивов,
раньше я для каждого вайна создавал жесткую ссылку на файлы с архивами
а после того как я загнал архивы в память, жесткую ссылку создать невозможно.
как мне теперь вообще работать с этими файлами?
согласен на любой костыль.
PS файлы лежат в /dev/shm/ (/run/shm/)
Источник