Как создать 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-диска

Создать 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: шестнадцатеричные»!

Наслаждаться!

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *