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

После просмотра комментария от Anonymous по вопросу Как очищается каталог / 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.

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

94
задан 13 April 2017 в 15:24

2 ответа

В системах, использующих systemd, у вас есть возможность использовать системный файл systemd вместо 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

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

0
ответ дан 13 April 2017 в 15:24
1116 Вы абсолютно правы. Соответствующая запись в 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

[ 117]

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

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

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

0
ответ дан 13 April 2017 в 15:24

Другие вопросы по тегам:

Похожие вопросы: