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

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

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

Мой вопрос заключается в следующем:

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

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

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

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

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

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

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

Пожалуйста, обратите внимание:

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

Учитывая это, размер 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 опция монтирования, поскольку эта папка и ее вложенные папки уже смонтированы в tmpfs по умолчанию.

В системах, использующих systemd, у вас есть возможность использовать модульный файл systemd вместо fstab для достижения цели использования tmpfs для установки tmp. В моей системе Ubuntu 16.04 я запустил:

sudo cp /usr/share/systemd/tmp.mount /etc/systemd/system/tmp.mountsudo systemctl enable tmp.mountsudo 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 DirectoryDocumentation=man:hier(7)Documentation=http://www.freedesktop.org/wiki/Software/systemd/APIFileSystemsConditionPathIsSymbolicLink=!/tmpDefaultDependencies=noConflicts=umount.targetBefore=local-fs.target umount.targetAfter=swap.target[Mount]What=tmpfsWhere=/tmpType=tmpfsOptions=mode=1777,strictatime[Install]WantedBy=local-fs.target

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

Чтобы установить максимальный предел для оперативной памяти, как было предложено, нужно было бы добавить size=512M к Options строка, разделенная запятой.

это также хорошая идея, если у вас есть и SSD, так как вы не будете “потреблять” его бесполезными записями…

Ха-ха, точно такой же вопрос привел меня сюда : D