4

Мой сервер Ubuntu имеет 24 ГБ оперативной памяти. Я хочу автоматически создать ramdisk при загрузке и загрузить файлы из папки /home/user1/ramdisk . Когда система выключается, мне нужно загрузить файлы с ramdisk обратно в этот каталог.

Как мне этого добиться?

2 ответа2

0

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

Рассмотрим случай, когда теряется сила. Невозможно, чтобы машина реагировала на это и быстро перемещала ваши данные с виртуального диска в другое хранилище.

Это означает: это не будет безопасно для данных.

Учитывая, что вы хотите смонтировать его, вам нужны привилегии суперпользователя, что означает, что вы также можете хранить изменчивые данные непосредственно в /dev/shm который создается при запуске системы.

0

Как указывает status_access_denied в своем ответе, это небезопасно для данных, так как они будут потеряны в случае отключения питания или другого неконтролируемого отключения.

Кроме того, вам часто лучше позволить ОС решать, что хранить в оперативной памяти. Если вы посвятите кусок оперативной памяти определенным файлам, таким как этот, то он не сможет использовать его для других целей, таких как кэширование других файлов, память виртуальной машины, базы данных и все, что еще делает ваш сервер.

Если вы хотите удостовериться, что данные находятся в кэше при загрузке (где они будут оставаться, если память действительно никогда не понадобится для чего-либо еще, вы можете запустить что-то вроде:

find /path/to/directory -type f | xargs cat > /dev/null

при загрузке. Приведенная выше команда приведет к тому, что все файлы будут прочитаны и, следовательно, пропущены через подсистему кэширования. Debian и Ubuntu (и, возможно, другие дистрибутивы) запускают скрипт /etc/rc.local в конце процесса загрузки, так что это, пожалуй, самое простое место для ввода команды. Если объем загружаемых данных велик и / или распределен по многим большим файлам, вы можете ограничить скорость чтения, чтобы это не мешало чему-либо еще происходящему (т.е. если вы входите в систему напрямую после загрузки, или другие службы все еще запускаются) с чем-то вроде:

find /path/to/directory -type f | xargs pv --rate-limit 1M --quiet > /dev/null

Вы найдете pv в стандартных репозиториях. --rate-limit делает то, что говорит на жестком диске (в данном случае ограничение скорости до 1 Мбайт / с), а --quiet говорит, что не стоит беспокоиться о индикаторе выполнения и другом отображении.

Вы можете добавить команду в задание cron, если вы хотите, чтобы сервер иногда перечитывал файлы, чтобы повторно заполнить их в кеше, если они были вытеснены чем-то другим.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .