Создание рам диска 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-диска будет сохранен при выключении системы с помощью следующей команды:

Теперь создайте файл системной службы с помощью следующей команды:

Источник

Как создать RAM-диск в Linux — CloudSavvy IT

Shutterstock / Suncheli ProjectЕсли вам интересно, RAM-диски и экземпляры tmpfs — это не одно и то же. Эта статья объяснит разницу и покажет вам, как создать RAM-диск в Linux с помощью командной строки. Настройте быстрый RAM-накопитель за считанные минуты!

Что такое RAM-диск?

Чипы оперативной памяти вашего компьютера могут использоваться для хранения виртуального диска. В этом случае этот диск сохраняется не на жестком диске, а в оперативной памяти. Мало того, что скорость этого виртуального диска будет значительно выше, чем у обычного диска (и особенно по сравнению с вращающимся диском более старого типа, поскольку физическое движение частей внутри вращающегося диска вызывает дополнительные задержки), чипы RAM не изнашиваются так быстро как диски, и опять же, особенно и тем более с физическими дисками старого типа.

Звучит слишком хорошо, чтобы быть правдой? Что ж, здесь действительно есть нюанс; если вы случайно перезагрузите компьютер или он выйдет из строя, все ваши данные исчезнут. RAM (оперативная память), микросхемы памяти в вашем компьютере, требуют постоянного питания для сохранения информации. Хранилище ОЗУ считается энергозависимым.

Другими словами, RAM-диски подходят для временных приложений или для определенных оптимизаций. Например, когда мы используем тестовые серверы для тестирования программного обеспечения, мы настраиваем RAM-диск, чтобы ускорить выполнение множества параллельных тестов. И даже если бы сервер потерял мощность, потеряно было бы немного; мы бы просто начали еще один тестовый прогон.

Другое приложение — предварительная загрузка часто используемых данных в RAM-диск. Например, если у вас есть сервер, который постоянно обращается к данной базе данных, доступной только для чтения (чтение-запись может быть более сложным, если данные необходимо сохранить), который обычно находится на диске, то вы можете скопировать базу данных, доступную только для чтения, в RAM автоматически (например, с помощью некоторых автоматических сценариев при запуске сервера или с помощью задания cron), а затем позволить серверу базы данных использовать эти данные.

Другими словами, можно резюмировать два основных варианта использования, один из которых относится к кэшированию (как в нашем примере с базой данных R / O), а другой — к «бесценному» хранилищу данных (как в нашем примере тестирования). Затем вы можете сделать еще один шаг (третий вариант использования, если хотите) и синхронизировать данные обратно на диск с заданными интервалами. Например, в примере тестирования, который также включает запись в ОЗУ, можно записывать сводные и / или тестовые данные обратно на диск (постоянное хранилище) в конце каждого завершения теста.

Еще одно предостережение в отношении дисков RAM заключается в том, что они ограничены размером памяти в вашей системе и, вероятно, меньше, поскольку вам нужна другая память для работы операционной системы и другого программного обеспечения.

При увеличении размера RAM-диска до более чем — скажем, произвольных 80-85% системной памяти — могут возникнуть проблемы. Конечно, если у вас есть 256 ГБ ОЗУ на вашем сервере, то даже 90%, выделенное для RAM-диска, все равно оставит более 25 ГБ для операционной системы и приложений. Имея всего 4 ГБ, при выделении 90% оперативной памяти останется 0,4 ГБ (400 МБ), что, скорее всего, вызовет проблемы. Таким образом, это в некоторой степени зависит от того, каков общий объем памяти машины и сколько потребуется для другого программного обеспечения.

Читайте также:  Шлем виртуальной реальности lenovo explorer windows mixed reality headset

Кроме того, RAM-диск не работает так же, как выделение / экземпляр tmpfs.

RAM Drive против экземпляра tmpfs

Файл tmpfs также может, но не обязательно, храниться в микросхемах оперативной памяти вашего компьютера. Обычное отображение / dev / shm tmpfs, автоматически настраиваемое при установке большинства, если не всех операционных систем Linux, удобно, но не работает так же, как RAM-диск.

Разница между ними заключается в том, что RAM-диск (на ум приходит термин жесткий) на 100% хранится в реальных микросхемах RAM, тогда как tmpfs хранится в пуле памяти ядра Linux, который может включать такие вещи, как пространство подкачки, которое регулярно располагается. на диске. Хотя ядро, вероятно, оптимизирует весь доступ к пулу, оно по-прежнему дает возможность записи данных либо в физическую ОЗУ, либо на физический ДИСК. И, если он попадет на диск, будет медленнее.

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

Создать RAM-диск относительно просто. Вы можете создать небольшой скрипт под названием ramdrive.sh со следующим кодом:
#! / bin / bash если [ «$(mount | grep -o «/mnt/ram»)» != «/mnt/ram» ]; затем sudo mkdir -p / mnt / ram sudo mount -t ramfs -o size = 1g ramfs / mnt / ram sudo chown -R $ (whoami): $ (whoami) / mnt / ram fi mount | grep ram

И еще один скрипт umount_ram.sh со следующим кодом:
#! / bin / bash sudo umount / mnt / ram

Посмотрим на первый сценарий. Во-первых, мы указываем, что хотим использовать Bash в качестве интерпретатора команд с помощью символа Shebang (#!). Если вы хотите узнать больше о Shebang, взгляните на Bash Automation & Scripting Basics, нашу трехчастную статью об автоматизации и сценариях Bash.

После этого мы проверяем, есть ли у нас монтирование в / mnt / ram (каталог, который мы будем использовать для монтирования нашего RAM-диска), используя grep-only (grep -o) для / mnt / ram в полном объеме. список «в настоящее время смонтирован», отображаемый командой mount. Если то же самое не найдено, мы выполняем три команды sudo. Все три требуют sudo, хотя и по разным причинам.

Первая команда требует sudo, поскольку она делает каталог, возможно, корневым и, по крайней мере, / mnt, которые являются привилегированными / защищенными каталогами. Следующая команда, фактическое монтирование и создание RAM-диска, требует sudo, поскольку монтирование является привилегированной операцией. Мы устанавливаем размер 1 ГБ, используя size = 1g. Мы также указываем, что нам нужен диск типа ramfs (-t ramfs), исходящий от устройства ramfs (как указано вторым ramfs), и, наконец, указываем точку монтирования как / mnt / ram.

В третьей команде с поддержкой sudo мы меняем владельца каталога / mnt / ram (теперь наш RAM-диск, наша точка монтирования ramfs) на текущего пользователя и собственную группу текущего пользователя, дважды используя команду whoami. Вы можете изменить это на конкретную и / или конкретную группу, которая будет использовать ramdrive, или на более широкую группу, если больше пользователей будут использовать ramdrive.

После этого мы завершаем нашу условную команду if .. fi и выполняем последний вызов для монтирования с помощью grep for ram, чтобы убедиться, что сценарий сообщает, что уже было смонтировано с точки зрения ОЗУ, или что было смонтировано только что в качестве скрипт выполнен. Это удобная / быстрая проверка успешности выполнения сценария.

Наш вторичный сценарий, umount_ram.sh, размонтирует диск RAM с точкой монтирования / mnt / ram, то есть диск ramfs, который мы только что создали. ПРЕДУПРЕЖДЕНИЕ: выполнение этого немедленного сброса / удаления всех данных, хранящихся в энергозависимой памяти, и повторное подключение диска RAMFS не вернет этого; он просто создаст новый, но пустой RAM-диск. Пожалуйста, имейте в виду!

Подведение итогов

В этой статье мы обсудили диски RAM / ramfs (одно и то же) и экземпляры / распределения tmpfs. Затем мы создали диск ramfs объемом 1 ГБ в / mnt / ram, используя небольшой скрипт для монтирования или RAM-диска.

Если вы хотите продолжить чтение по Linux, ознакомьтесь с нашими статьями «Запись экрана в Linux с помощью SimpleScreenRecorder» или «Биты, байты и двоичные данные» или «От 0 до F: шестнадцатеричные»!

Источник

Как создать ramdisk в Linux или виртуальный диск в RAM

Иногда попадаются задачи, когда нужно работать с большим количеством мелких файлов или некоторое небольшое время хранить объемные данные и делать это по возможности быстро, без завязок на медленную файловую подсистему и/или диски. Многие вспомнят, что есть такой виртуальный диск, он же – RAM-дисках (ramdisk), а сделать ramdisk в *nix системах можно очень быстро и просто.

Изначально, в ядре должна быть поддержка tmpfs.

Читайте также:  Установка дополнительного программного обеспечения linux

Как создать диск:
В первую очередь создаем новую точку монтирования:

и даём все права на использование.

После этого даём команду на монтирование, для примера, я создам диск на 1 Gb

где 1024M – это и есть размер RAMdisk в Мегабайтах.

Аккуратнее с размером и не размахивайтесь слишком широко: если вы попросите создать ramdisk больше, чем имеете оперативной памяти, система начнёт сгружать всё в swap-файл и дела пойдут очень медленно и грустно. Кстати, если ОЗУ в системе достаточно, swap можно и вовсе отключить, см. Как отключить SWAP

Если же вы хотите изменить размер ramdisk – это просто:

При этом содержимое RAM-диска не пропадёт, но и его размер тут же увеличится (при уменьшении также ничего не пропадёт, если только данных не больше, чем диск).

ВАЖНО.
RAM-диск это хранение в OЗУ, и это значит, что всё его содержимое после отключения питания машины будет безвозвратно потеряно. По возможности используйте резервное питание, что бы успеть сохранить важные данные.

Источник

Записки дебианщика

В этом блоге публикуются заметки и решения, найденные в процессе работы, освоения и жизни в дистрибутиве 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

Читайте также:  Как правильно удалять linux

— это _настоящая_ 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/)

Источник

Оцените статью