Как я могу использовать память RAM для каталога / tmp и как установить для нее максимальный объем использования ОЗУ?

73

После просмотра комментария Анонимный по вопросу Как очищается каталог / tmp? , я обнаружил, что было бы неплохо реализовать в моей системе, так как у меня 16 ГБ ОЗУ, и я никогда не использовал все это.

  

Мои временные файлы никогда не записываются на диск. Они записываются на RAM-диск. Я поставил tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0 в / etc / fstab.

Мой вопрос:

Могу ли я установить максимальное значение для использования ОЗУ для /tmp ? И в таком случае, что произойдет, если максимальная сумма будет превышена, будет ли она записываться в жесткий диск?

Я прочитал решение, в котором говорится:

mkdir -p /tmp/ram
sudo mount -t tmpfs -o size=512M tmpfs /tmp/ram/

Но, по моему мнению, это не будет постоянным решением. Если мне нужно, чтобы он был постоянным, его нужно добавить в файл конфигурации /etc/fstab .

Если это правильное решение, как я могу преобразовать эту команду mount в строку в /etc/fstab ?

    
задан Dan 07.08.2012 в 20:20
источник

2 ответа

68

Вы абсолютно правы. Соответствующая запись fstab будет выглядеть так:

tmpfs /tmp tmpfs defaults,noatime,nosuid,nodev,noexec,mode=1777,size=512M 0 0

Обратите внимание:

По мере заполнения tmpfs он будет вести себя как любой физический жесткий диск, указав ошибку «недостаточно места». Во время перезагрузки (и, таким образом, опуская кеш) это исправит, вы можете столкнуться с трудностями, когда одна операция занимает больше места для начала, чем на tmpfs . В этом случае ваш компьютер начнет сворачивать с ram на диск, что заставит вашу систему сканировать, если вы, конечно, получите раздел подкачки.

Учитывая это, размер 512 Мбайт может быть намного меньше в наши дни, поскольку на современных машинах существует гораздо больше бара, и он стал намного дешевле. Поскольку у вас уже есть 16 ГБ оперативной памяти, использование значения по умолчанию для половины вашего барана для tmpfs должно быть более чем достаточным для почти всех сценариев. Чтобы использовать значение по умолчанию, просто оставьте запись size=512M в файле /etc/fstab .

Другое примечание:

Вы также можете легко установить другие системные папки в ramdisk, например

/var/cache

/var/games

/var/log/apt (используйте только defaults,noatime без mode= или nosuid )

Но будьте осторожны: действуют те же правила, что и выше, нехватка места может вызвать серьезные проблемы. Например. Представьте, что пробег для / var / log / apt сделает невозможным установку каких-либо программ! Кроме того, загрузка /var/log папок в ramdisk приведет к удалению всех файлов журнала при перезагрузке, поэтому вы не сможете отлаживать свою систему, если произойдет что-то неожиданное. Поэтому используйте эти настройки на свой страх и риск!

Редакционное примечание: Я удалил параметр /run в tmpfs mount, так как эта папка и ее подпапки уже установлены в tmpfs по умолчанию.

    
ответ дан FuzzyQ 08.08.2012 в 09:24
источник
18

В системах с использованием systemd у вас есть возможность использовать файл unitd вместо fstab для достижения цели использования tmpfs для монтирования tmp . В моей системе Ubuntu 16.04 я побежал:

sudo cp /usr/share/systemd/tmp.mount /etc/systemd/system/tmp.mount
sudo systemctl enable tmp.mount
sudo systemctl start tmp.mount

Файл /usr/share/systemd/tmp.mount выглядит следующим образом:

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
[Unit]
Description=Temporary Directory
Documentation=man:hier(7)
Documentation=http://www.freedesktop.org/wiki/Software/systemd/APIFileSystems
ConditionPathIsSymbolicLink=!/tmp
DefaultDependencies=no
Conflicts=umount.target
Before=local-fs.target umount.target
After=swap.target

[Mount]
What=tmpfs
Where=/tmp
Type=tmpfs
Options=mode=1777,strictatime

[Install]
WantedBy=local-fs.target

Используя fstab-подход FuzzyQ, системаd динамически переводит ваши записи fstab в единицы монтирования. Я не думаю, что любой подход лучше.

    
ответ дан Rick Ramstetter 13.08.2016 в 21:02