как создать ram диск в linux
Как создать ramdisk в Linux или виртуальный диск в RAM
Иногда попадаются задачи, когда нужно работать с большим количеством мелких файлов или некоторое небольшое время хранить объемные данные и делать это по возможности быстро, без завязок на медленную файловую подсистему и/или диски. Многие вспомнят, что есть такой виртуальный диск, он же – RAM-дисках (ramdisk), а сделать ramdisk в *nix системах можно очень быстро и просто.
Изначально, в ядре должна быть поддержка tmpfs.
Как создать диск:
В первую очередь создаем новую точку монтирования:
и даём все права на использование.
После этого даём команду на монтирование, для примера, я создам диск на 1 Gb
где 1024M – это и есть размер RAMdisk в Мегабайтах.
Аккуратнее с размером и не размахивайтесь слишком широко: если вы попросите создать ramdisk больше, чем имеете оперативной памяти, система начнёт сгружать всё в swap-файл и дела пойдут очень медленно и грустно. Кстати, если ОЗУ в системе достаточно, swap можно и вовсе отключить, см. Как отключить SWAP
Если же вы хотите изменить размер ramdisk – это просто:
При этом содержимое RAM-диска не пропадёт, но и его размер тут же увеличится (при уменьшении также ничего не пропадёт, если только данных не больше, чем диск).
ВАЖНО.
RAM-диск это хранение в OЗУ, и это значит, что всё его содержимое после отключения питания машины будет безвозвратно потеряно. По возможности используйте резервное питание, что бы успеть сохранить важные данные.
Как создать 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 МБ), что, скорее всего, вызовет проблемы. Таким образом, это в некоторой степени зависит от того, каков общий объем памяти машины и сколько потребуется для другого программного обеспечения.
Кроме того, RAM-диск не работает так же, как выделение / экземпляр tmpfs.
RAM Drive против экземпляра tmpfs
Файл tmpfs также может, но не обязательно, храниться в микросхемах оперативной памяти вашего компьютера. Обычное отображение / dev / shm tmpfs, автоматически настраиваемое при установке большинства, если не всех операционных систем Linux, удобно, но не работает так же, как RAM-диск.
Разница между ними заключается в том, что RAM-диск (на ум приходит термин жесткий) на 100% хранится в реальных микросхемах RAM, тогда как tmpfs хранится в пуле памяти ядра Linux, который может включать такие вещи, как пространство подкачки, которое регулярно располагается. на диске. Хотя ядро, вероятно, оптимизирует весь доступ к пулу, оно по-прежнему дает возможность записи данных либо в физическую ОЗУ, либо на физический ДИСК. И, если он попадет на диск, будет медленнее.
Создание RAM-диска
И еще один скрипт umount_ram.sh со следующим кодом:
#! / bin / bash sudo umount / mnt / ram
Посмотрим на первый сценарий. Во-первых, мы указываем, что хотим использовать Bash в качестве интерпретатора команд с помощью символа Shebang (#!). Если вы хотите узнать больше о Shebang, взгляните на Bash Automation & Scripting Basics, нашу трехчастную статью об автоматизации и сценариях Bash.
Первая команда требует sudo, поскольку она делает каталог, возможно, корневым и, по крайней мере, / mnt, которые являются привилегированными / защищенными каталогами. Следующая команда, фактическое монтирование и создание RAM-диска, требует sudo, поскольку монтирование является привилегированной операцией. Мы устанавливаем размер 1 ГБ, используя size = 1g. Мы также указываем, что нам нужен диск типа ramfs (-t ramfs), исходящий от устройства ramfs (как указано вторым ramfs), и, наконец, указываем точку монтирования как / mnt / ram.
В третьей команде с поддержкой sudo мы меняем владельца каталога / mnt / ram (теперь наш RAM-диск, наша точка монтирования ramfs) на текущего пользователя и собственную группу текущего пользователя, дважды используя команду whoami. Вы можете изменить это на конкретную и / или конкретную группу, которая будет использовать ramdrive, или на более широкую группу, если больше пользователей будут использовать ramdrive.
Наш вторичный сценарий, umount_ram.sh, размонтирует диск RAM с точкой монтирования / mnt / ram, то есть диск ramfs, который мы только что создали. ПРЕДУПРЕЖДЕНИЕ: выполнение этого немедленного сброса / удаления всех данных, хранящихся в энергозависимой памяти, и повторное подключение диска RAMFS не вернет этого; он просто создаст новый, но пустой RAM-диск. Пожалуйста, имейте в виду!
Подведение итогов
В этой статье мы обсудили диски RAM / ramfs (одно и то же) и экземпляры / распределения tmpfs. Затем мы создали диск ramfs объемом 1 ГБ в / mnt / ram, используя небольшой скрипт для монтирования или RAM-диска.
Если вы хотите продолжить чтение по Linux, ознакомьтесь с нашими статьями «Запись экрана в Linux с помощью SimpleScreenRecorder» или «Биты, байты и двоичные данные» или «От 0 до F: шестнадцатеричные»!
Записки дебианщика
В этом блоге публикуются заметки и решения, найденные в процессе работы, освоения и жизни в дистрибутиве Debian GNU/Linux.
Виртуальный диск в памяти: как создать ramdisk в Linux?
Собственно, в ядре должна быть поддержка tmpfs, и если вы (или авторы вашего дистрибутива) не любители усложнять себе жизнь, она там должна быть.
Быстренько создаём новую точку монтирования:
где xxx M есть размер RAMdisk в Мегабайтах.
Будьте осторожны и не размахивайтесь слишком широко: если вы попросите создать ramdisk больше, чем имеете оперативной памяти, система начнёт сгружать всё в swap-файл и дела пойдут очень медленно и грустно.
При этом содержимое диска не пропадёт, но его размер тут же увеличится (при уменьшении также ничего не пропадёт, если только данных не больше, чем диск).
Другие способы создания виртуальных дисков в памяти хорошо описываются в англоязычном посте.
Предупреждаю особо горячих финских парней: это RAM-диск, а это значит, что всё его содержимое после отключения питания машины будет безвозвратно потеряно. Будьте бдительны.
Ссылки
Есть толковые посты о том, как в Linux сделать виртуальный диск в памяти здесь и тут.
15 комментариев: |высказаться!| RSS-лента дискуссии.|
Хм. Я в блоге тоже не так давно писал об этом.
Кстати говоря, это никакой не ramdisk. Это особенность ядра Linux и называется она tmpfs.
Кстати говоря, это никакой не ramdisk.
Это понятно, просто для моих коллег, работающих под виндой, это самая близкая аналогия. Ну и в общем-то это можно и диском назвать 🙂
Не знаю насколько хорошая это идея, но /tmp и каталог временных файлов для havp я так и монтирую, в tmpfs.
Правда полгига под это дело нервируют жабу:)
здорово, спасибо. А для чего конкретно вы используете tmpfs?
Спасибо за инструкцию. Я в последнее время подумываю над тем что лучше базу с мускулом в памяти держать. Так что для меня инструкция в тему 🙂
К стати для особо горячих финских парней можно еще добавить, что использовать это надо с осторожностью при нехватки памяти. Ибо уйдет в своп и весть профит от использования может сойти на нет. 😉
В большинстве современных дистров tmpfs уже примонтирован в /dev/shm. Так что можно эту ФС сразу использовать без дополнительных телодвижений.
По поводу использования. tmpfs очень удобно использовать для хранения lock-файлов, используемых в скриптах, т.к. в случае неожиданного ребута они сами-собой удалятся.
Спасибо. Полезная информация.
— это _настоящая_ ram, со всеми ее преимуществами, но целиком.
Если очень надо ограничить объем:
он же RAM-дисках
«он же — RAM-диск»
Для этого быстренько создаём новую точку монтирования:
Это предложение лучше записать так: «Быстренько создаём точку монтирования». А то создаётся впечатление, что ты всё ещё о tmpfs в ядре говоришь.
больше
Откуда и зачем там перевод строки?
при уменьшении так же
Так же предупреждаю особо горячих финских парней
🙂
Вроде как видел советы держать копию профиля Firefox в оперативке — мол, так быстрее работает.
@Olly Cat, 15.03.2010 10:58:00
К стати для особо горячих финских парней можно еще добавить, что использовать это надо с осторожностью при нехватки памяти.
Каждый уважающий себя горячий пингвиновод должен лично познакомиться с oom_killer 🙂
@Dormestmass
В большинстве современных дистров tmpfs уже примонтирован в /dev/shm.
А хочется свой лесапед с квадратными колесами 🙂 То есть свой каталог, где только твои файлы.
Если очень надо ограничить объем:
Конечно, надо, а то все в своп уйдет.
Спасибо тебе, анонимный разум, за столь интересный трюк. Будем пробовать.
@Minoru
И ты здесь, Брут? 🙂
А то создаётся впечатление, что ты всё ещё о tmpfs в ядре говоришь.
Да, увлекся.
🙂
Таки требую отменить это дурное правило 🙂
Вроде как видел советы держать копию профиля Firefox в оперативке — мол, так быстрее работает.
Это тормозное чудовище ничто не спасет. И хотя я пользователь Огнелиса, но факт его тормозов (а в последнее время и несовместимости расширений) меня начинает бесить.
>Это тормозное чудовище ничто не спасет.
Прошу прощения, если знаете про VACUUM для фоксовского мускула. Помогало. Кэш фокса в tmps самообман. Меня огнелис уже не бесит. P.S. Сам давно на midori.
С таким уровнем познаний рутом скрипты отлаживаешь.
Можно в обратные кавычки заключить то, что должно выполниться и подставиться вместо себя.
Или использовать xargs
script2 | xargs script1
у меня несколько клонов одной проги запущены под вайном под разными префиксами (чтобы могли работать параллельно)
каждой из прог надо для работы 14 гб архивов,
раньше я для каждого вайна создавал жесткую ссылку на файлы с архивами
а после того как я загнал архивы в память, жесткую ссылку создать невозможно.
как мне теперь вообще работать с этими файлами?
согласен на любой костыль.
PS файлы лежат в /dev/shm/ (/run/shm/)
How to Easily Create RAM Disk on Debian, Ubuntu, Linux Mint, CentOS
This tutorial will show you how to quickly create a RAM disk in any Linux distro (Debian, Ubuntu, Linux, Fedora, Arch Linux, CentOS, etc). Compared to commercial Windows RAM disk software that costs money, Linux can utilize this cool feature 100% free of charge.
What is RAM Disk?
RAM disk is also known as RAM drive. It’s a portion of your RAM that are formated with a file system. You can mount it to a directory on your Linux system and use it as a disk partition.
Why use RAM disk?
RAM is ultra-fast compared to even the fastest solid state drive (SSD). As you may know, the main performance bottleneck in today’s computer is the speed of hard drive, so moving programs and files to the RAM disk yields super fast computing experience.
You can do a lot of interesting things with RAM disk.
How to Create a RAM Disk in Any Linux Distro
First make a directory which can be anywhere in the file system such as
If you want to let every user on your Linux system use the RAM disk, then change its permission to 777.
Next, check how much free RAM are left on your system with htop command line utility because we don’t want to use too much RAM.
Then all left to do is to specify the file system type, RAM disk size, device name and mount it to the above directory. You can see from the screenshot above that I have plenty of free RAM, so I can easily allocate 1GB for my RAM disk. This can be done with the following one-liner. It will be using tmpfs file system and its size is set to 1024MB. myramdisk is the device name I gave to it.
To allocate 10G for the RAM disk, run this instead.
If we issue the following command
We can see it’s successfully mounted.
Now if I copy my VirtualBox machines file (5.8G) into the RAM disk, my RAM usage suddenly goes up to 9.22G.
If I unmount RAM disk,
Everything in that directory will be lost and RAM usage goes down to original.
This is how you can test if your RAM disk is working.
Test RAM Disk Speed
To test write speed of RAM disk, you can use dd utility.
Which gave me 2.8GB/s write speed.
To test read speed, run:
Which gave me 3.1 GB/s read speed.
I also did a speed test on my SSD. The write speed is 534MB/s and read speed 1.6GB/s.
Auto-mount on System Boot
Edit /etc/fstab file.
Add an entry like this:
x-gvfs-show will let you see your RAM disk in file manager. Save and close the file. Your Linux system will automatically mount the RAM disk when your computer boots up.
To mount it immediately without reboot, run the following command.
How to Run VirtualBox VM on RAM Disk
Note that this requires a large-capacity RAM.
When you create a brand new virtual machine, you should set the machine folder to the RAM disk directory ( /tmp/ramdisk/ ). If you can’t find the Machine folder option, then you need to install the latest version of Virtualbox on your system.
Remember to move your VM back to the original folder before shutting down your computer, or your VM will be deleted.
Wrapping Up
And that’s the basics of creating RAM disk in Linux. If you found this post useful, then subscribe to our free newsletter or follow us Twitter or like our Facebook page. Thanks for visiting!
Создайте RAMDisk в вашем дистрибутиве Linux
Как вы знаете, скорость доступа к памяти очень важна. Узкие места, возникавшие в прошлом между магнитной памятью и процессорами, означали, что необходимо было включить более быструю буферную память, баран. Позже, с развитием микропроцессоров, появился кэш, даже быстрее, чтобы предложить буфер между ОЗУ и регистрами ЦП. Совсем недавно появились жесткие диски SSD, которые быстрее магнитно-механических жестких дисков, поскольку они основаны на флэш-памяти.
Компания Gigabyte несколько лет назад задумалась о создании жесткого диска с оперативной памятью. (RAMDisk, называемый i-RAM), очень быстрая память по сравнению с жесткими дисками, но нечто подобное случилось с Ageia с ее картой PhysX. Они действительно не образовались и в конечном итоге исчезли с рынка, а теперь с твердотельными накопителями (и твердотельными накопителями на основе оперативной памяти) это имеет еще меньше смысла. О чем это? Ну, в основном он использует оперативную память для хранения данных, как если бы это был жесткий диск, поэтому доступ намного быстрее.
Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.
Полный путь к статье: Любители Linux » Общие » Ресурсы » Создайте RAMDisk в вашем дистрибутиве Linux
Вы можете быть заинтересованы
10 комментариев, оставьте свой
Оставьте свой комментарий Отменить ответ
У меня вопрос, после выключения оборудования данные останутся в памяти? Я говорю это, потому что оперативная память непостоянна. Я был бы признателен, если бы вы могли мне это объяснить.
Вы правы, я забыл прокомментировать в статье, что из-за нестабильности он будет удаляться каждый раз при запуске компьютера. Спасибо, что напомнили, я уже добавил это. Это очень важная вещь, которую нельзя упускать из виду, чтобы никто не потерял свои данные.
Ура и надеюсь, что помог. Спасибо.
Я заметил, что есть программы, которые делают этот раздел. Эти программы создают на жестком диске образ данных, находящихся в ОЗУ, чтобы при перезапуске они не были потеряны. Затем, когда система запускается, насколько я понимаю, данные, сохраненные на жестком диске, выгружаются в оперативную память, чтобы мы могли использовать их снова. Спасибо за записку и за быстрый ответ! Привет!
это может работать только с детализацией fs. В моих тестах это сработало только следующим образом:
Невероятные возможности, которые можно сделать с помощью GNU / LINUX. 🙂
Как насчет того, чтобы использовать RAMDisk для раздела «tmp»?
Если вам повезет и вы потащитесь за последние 20 лет, у вас будет 64 ГБ ОЗУ и, таким образом, вы сможете скопировать файл виртуального жесткого диска VirtualBOX (или любой другой виртуальной машины) в ОЗУ; Я предполагаю, что этот файл занимает не более 48 ГБ (чтобы оставить достаточно свободной оперативной памяти для Linux и виртуальной машины). Таким образом виртуальная машина летает, и если вы также хотите, чтобы изменения в виртуальной машине были потеряны (неизменяемость), вам больше не нужно будет терять производительность при создании неизменяемого виртуального жесткого диска машины, потому что перед его запуском вы копируете он из NVMe / SSD / HDD в ОЗУ, а затем отключение всего, что находится в ОЗУ, теряется (именно то, что желательно в этом случае, а именно неизменность).
Таким образом, с таким большим объемом ОЗУ вы можете сделать образ жесткого диска неизменяемым и фиксированного размера, получив максимально возможную производительность при доступе, что вместе с тем фактом, что указанный жесткий диск будет в ОЗУ, это сделает некоторые настоящие прелести при работе с виртуальными машинами (только по одному рывку за раз).
Когда вы закончите использовать виртуальную машину, вы хотите сохранить состояние виртуального жесткого диска, поскольку оно копируется из ОЗУ на NVMe / SSD / HDD.
Я видел, что уже есть несколько NVMe, которые способны читать со скоростью чуть более 5 ГБ / с (да, пять гигабайт в секунду при чтении) и которые используют только один (в RAID0 или аналогичном будет еще быстрее) для копирования. преобразование образа виртуального жесткого диска 48 ГБ в ОЗУ занимает всего около десяти секунд, оле!
Из минусов при выполнении противоположного процесса (из ОЗУ в NVMe) самые быстрые, которые я видел на данный момент, составляют немного больше, чем 3 ГБ / с при записи (да, три гигабайта в секунду при записи), поэтому сохранение образа виртуального жесткого диска 48 ГБ пересылка из ОЗУ в NVMe занимает всего около восемнадцати секунд, опять же огромная оле!
У нас будет один из самых быстрых NVMe и 64 ГБ ОЗУ с Linux и виртуальная машина, например, с Windows 10, это вполне нормально, если ОЗУ используется для размещения жесткого диска виртуальной машины.
Если тот, кто это прочитает, знает, что дистрибутивы Linux загружаются с CD / USB, которые копируются в ОЗУ во время запуска (например, SystemRescueCD и т. Д.), Они будут знать о преимуществах, которые он дает: он всегда запускается одинаково, всегда работает так быстро, как может поскольку все находится в ОЗУ, на физические диски во время запуска или при использовании Linux ничего не записывается (что-то очень полезное для продления срока службы SSD, лично менее чем за месяц и с записанным менее терабайта, некоторые твердотельные накопители уже остались меня, чтобы работать, а именно 120 ГБ марки KingDian), за исключением случаев, когда мы монтируем что-то в режиме чтения и записи и сохраняем что-то там, объединяя это с виртуальной машиной, система « летает » при доступе к диску, поскольку все идут в ОЗУ.
Наличие всего Linux в ОЗУ значительно продлевает срок службы SSD и NVMe, поскольку во время загрузки в них ничего или почти ничего не записывается, а когда-то запускается абсолютно ничего, если только это не делаем мы.
Мои тесты проводились на Ryzen 7 2700X (4.35 ГГц с 8 ядрами и 16 потоками) с 64 ГБ DDR4 3200 МГц и 1050 ГБ NVidia 4 Ti Graphics.
Примечание. Существуют материнские платы, поддерживающие даже 1 ТБ ОЗУ, и микрофоны с 64 потоками, такие как ThreadRipper 2 и т. Д.
Ваш комментарий очень интересен, но мы не должны преувеличивать необходимую оперативную память: у меня есть образ VDI для Windows 10, который весит всего 13 ГБ, с 14 ГБ оперативной памяти он будет работать с полной легкостью.
Я не очень понимаю, как монтировать всю ОС в ОЗУ, потому что это не слишком много. Если у вас есть SSD, отформатированный в BTRFS с включенным сжатием на лету (на диск записывается значительно меньше данных), поскольку при установке пакетов в системный раздел записываются почти только данные (что мы, очевидно, хотим оставить в SSD / диск), файлы конфигурации изменены (текстовые файлы незначительного размера, а сжатие LZO BTRFS оставляет их в еще более незначительном размере) и многое другое, потому что мне кажется, что он убивает мух выстрелами из пушки; имейте в виду, что все современные дистрибутивы motan / tmp в ОЗУ, если у пользователя больше 4 ГБ, я думаю об ОЗУ, поэтому SSD / диск не страдает наименьшим износом для многих временных операций, которые записываются, что было тем, что я использовал несколько лет назад положить больше трости в раздел /.
«Существуют материнские платы, поддерживающие даже 1 ТБ ОЗУ, и микрофоны с 64 потоками, такие как ThreadRipper 2 и т. Д.»
«У меня есть VDI-образ Windows 10, который весит всего 13 ГБ, с 14 ГБ ОЗУ он будет работать с полной легкостью».
Извините, я имел ввиду 24 ГБ. Мой палец перешел к следующей клавише?