Переміщення / tmp до оперативної пам’яті


16

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

  • /var/tmpНЕ слід розміщувати tmpfs, оскільки він повинен пережити перезавантаження

  • не монтуватись /tmpяк окремий tmpfs, а покладатися на /dev/shmабо/run/shm

Однак змінилися між 2.6 і 3.2 ядрами:

Зміни в конфігурації та за замовчуванням файлових систем tmpfs

На ядрі 3.2 використовуйте RAMTMP=yesв /etc/default/tmpfs.

Моє запитання: як я можу досягти цієї мети за допомогою старих ядер?

Мій вибір - ні змінювати / etc / fstab, ні це:

mkdir /dev/shm/tmp
chmod 1777 /dev/shm/tmp
mount --bind /dev/shm/tmp /tmp

Чи є щось на кшталт RAMTMP2.6 ядер?


1
tmpfsвважається шкідливим . Їжа для роздумів.
sr_

8
@sr_ Вибачте, я категорично не згоден із пов’язаною статтею. /tmpможна і потрібно використовувати для тимчасових файлів, у цьому вся суть. /tmpне повинен переживати перезавантаження (використовувати /var/tmpдля цього), і хто створює електронну пошту в половину розміру оперативної пам’яті + своп (не зберігаючи її)?
Марко

@ Марко впевнений, я просто кидав щось, що я вважав пов'язаним.
sr_

Більше контексту: fedoraproject.org/wiki/Features/tmp-on-tmpfs
Немо

Відповіді:


19

Вам не доведеться робити все це, ви можете просто змонтувати, /tmpяк tmpfsза допомогою рядка на зразок наступного в /etc/fstab:

tmpfs /tmp tmpfs mode=1777,nosuid,nodev 0 0

Ви також можете це робити в прямому ефірі (але майте на увазі, що в даний момент у /tmpвашій поточній файловій системі не можна отримати доступ, за винятком дескрипторів файлів inode та відкритих файлів, тому ви дійсно повинні це зробити, змінивши /etc/fstabта перезавантаживши):

mount -o mode=1777,nosuid,nodev -t tmpfs tmpfs /tmp

Зауважте, що tmpfsможна поміняти місцями Якщо ви хочете по-справжньому файлову систему лише для ОЗУ, використовуйте ramfs.


Кріс, моя думка - "найкращі практики". Розробники ставлять нативну підтримку для монтажу / tmp над ... / shm; Я читав, що краще повторно використовувати ті самі tmpfs.
Массімо

3
@Massimo Моя думка, що найкраща практика - не прив'язувати кріплення. Це додає зайвої складності.
Кріс Даун

5
@Massimo Де ви знаходите цю найкращу практику? Єдина причина, яку я бачу проти монтажу /tmpяк tmpfs - це те, що тепер у вас є 2 потенційні файлові системи tmpfs, які можуть заповнювати та використовувати більше пам'яті ( /tmpі /dev/shm). Але якщо ви дійсно занепокоєні заповненням 2 кріплень tmpfs, ви можете зменшити максимальний розмір кріплення tmpfs.
Патрік

@ChrisDown, що поганого в Bind mount? Також наявність єдиного tmpfs може спростити справи?
CMCDragonkai

2
@CMCDragonkai Встановити прив'язку - це все просто, але всередині просто, вони містять досить багато неінтуїтивних застережень, яких ви, мабуть, не маєте наміру (особливо розрекламованим є те, що оточує драма, яка вимагає повторного підключення для монтажу лише для читання). Просто використовуйте два tmpfsкріплення замість цього.
Кріс Даун

17

/etc/default/tmpfsє для sysvinit, для systemd(Debian за замовчуванням, оскільки jessie) вам потрібно лише зробити:

systemctl enable tmp.mount

і на Debian Stretch

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

дивіться журнал змін на https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=787542#74


Спасибі! Це правильний спосіб перейти / tmp до tmpfs в Джессі.
Ясіру Г

Дуже дякую! на gentoo я не розумів, чому мій / tmp монтується tmpfs. системний скрипт tmp.mount робить це.
ufk

4

Я знаю, що це досить давно, але в налаштуваннях дистрибутивів Debian налаштування RAMTMP, RAMRUN і RAMLOCK в / etc / default / tmpfs (/ etc / default / rcS або до wheezy) виконує ту саму роботу.

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