Як я можу використовувати пам'ять оперативної пам’яті для каталогу / tmp та як встановити для неї максимальний обсяг оперативної пам’яті?


92

Після перегляду коментаря від 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файл конфігурації.

Якщо це правильне рішення, як я можу перетворити цю команду mount у рядок /etc/fstab?


це також гарна ідея, якщо у вас є і SSD, оскільки ви не будете "споживати" це з не корисними написаннями ...
Postadelmaga

Ха-ха, саме таке питання привело мене сюди: D
Тедді Марков

Відповіді:


80

Ви абсолютно праві. Запис fstab виглядатиме так:

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

Будь ласка, запиши:

По мірі tmpfsзаповнення він буде вести себе як будь-який фізичний жорсткий диск, даючи помилку "недостатньо місця". Поки перезавантаження (і таким чином випорожнення кешу) це виправить, ви можете зіткнутися з проблемою, коли одна операція вимагає більше місця для початку, ніж для цього місця tmpfs. У такому випадку ваш комп'ютер почне перемикатися з оперативної пам’яті на диск, що призведе до того, що ваша система завершиться повзанням, якщо, звичайно, у вас є розділ swap для початку.

Враховуючи це, розмір 512 МБ може бути набагато меншим в даний час, оскільки набагато більше оперативної пам’яті існує в сучасних машинах, і це стало набагато дешевше. Оскільки у вас вже є 16 ГБ оперативної пам’яті, використання стандартного значення половини вашого барана tmpfsмає бути більш ніж достатньо для майже всіх сценаріїв. Щоб використовувати значення за замовчуванням, просто не залиште size=512Mзапис у вашому /etc/fstabфайлі.

Ще одна примітка:

Ви також можете легко монтувати інші системні папки в рамковий диск, наприклад, на

/var/cache

/var/games

/var/log/apt(використовувати лише defaults,noatimeбез mode=або nosuid)

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

Від редакції: я видалив /runв tmpfsопції монтування , так як ця папка і її підпапки вже встановлені в tmpfsза замовчуванням.


11
Якщо я не помиляюся, / var / tmp / - це збереження файлів після перезавантаження. У цьому головна відмінність цього та / tmp /, тому ВАС не повинен рухатися / var / tmp до таран.

3
Якщо Ubuntu закінчиться 4 Гб tmpfs, чи буде він використовувати мій 20 Гб SWAP-розділ?
loostro

3
Так, мені теж потрібно додати це. Як тільки tmpfs перевищить свої межі, він пошириться на swap розділ (дайте, чи є такий).
FuzzyQ

5
Чи означає виділення половини оперативної пам’яті на це, що половина вашої оперативної пам’яті зарезервована для RAMDISK, або це лише обмеження на те, що RAMDISK може споживати, і все, що не використовується, це безкоштовна оперативна пам’ять, яка призначається будь-якій програмі, яка потребує оперативної пам’яті ??
мат

6
@matt Це лише шапка.
FuzzyQ

35

У системах, що використовують 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

Використовуючи підхід fstab FuzzyQ, systemd динамічно переводить ваші записи fstab у модулі кріплення. Я не думаю, що будь-який підхід є кращим.

Для того , щоб встановити максимальну межу для оперативної пам'яті , як запитав, чи можна було б необхідно додати size=512Mдо Optionsрядку, через кому.


2
Вам знадобиться systemctl enable tmp.mountпісля виходу з ладу cp else systemctl з повідомленням " Failed to start tmp.mount: Unit tmp.mount not found."
vimdude

4
@ Rick, ще краще використовувати це, systemctl edit tmp.mountщо було б нейтральним. Це вносить ваші зміни в override.conf, щоб ви не змінювали типовий tmp.mount і ви могли легко видалити override.conf, щоб повернутися до конфігурації за замовчуванням.
Булат М.

Визначте, що Булат сказав про використання системиctl для редагування, а також використовуйте, ln -sа не cpна першому кроці.
Майкл Граттон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.