Маленький RAM-ориентированный /tmp

Маленький RAM-ориентированный /tmp

Веб-интерфейс конфигурации моего VPS-хоста предоставляет мне раскрывающийся список для настройки моего /tmp.

Значение по умолчанию — «16 МБ ОЗУ», альтернатива — «жёсткий диск».

Возможно ли, что наличие всего 16 МБ /tmpсвободной памяти может вызвать проблемы для какого-то программного обеспечения? Или нет?

решение1

Возможно ли, что наличие всего лишь 16 МБ /tmp может вызвать проблемы в работе какого-либо программного обеспечения?

Да, если какая-то часть программного обеспечения хочет записать, /tmpи она или какая-то другая часть программного обеспечения уже заполнили раздел. Обычно это указывает либо на плохую конфигурацию системы, либо на законное ограничение доступных ресурсов, либо на неправильное поведение какой-то другой части программного обеспечения — в любом случае, программное обеспечение, которое хочет записать, вряд ли попытается найти решение самостоятельно и выдаст ошибку.

Некоторое программное обеспечение предполагает, что может записывать большие файлы в /tmp, что, честно говоря, является справедливым предположением. Эта проблема попадает под категорию ошибок "плохая конфигурация".

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

  • Система в любом случае кэширует часто используемые файлы в ОЗУ. Уменьшение объема ОЗУ, доступного для этого кэша, чтобы вы могли его /tmpтуда поместить, немного глупо, поскольку это означает, что редко используемые файлы /tmpвытеснят часто используемые файлы в кэше.

  • Приложения уже могут свободно хранить вещи в RAM, что в целом проще, чем хранить их в файле, поэтому если они помещают что-то в файл tmp, то вряд ли это будет что-то, что выиграет от нахождения в RAM. Если вы посмотрите на то, что на самом деле находится в вашем /tmp, то, скорее всего, это в основном сокеты и fifo или небольшие фрагменты данных IPC. Доступ к ним через файловую систему на основе RAM концептуально более аккуратен, но я сомневаюсь, что это имеет какое-либо реальное значение.

В таком случае, зачем /tmpреализовывать это в оперативной памяти?

  1. Это упрощает реализацию предпочтительного свойства /tmp, а именно его стирание при завершении работы.

  2. Это может немного снизить износ оборудования. Это гораздо более существенно в контекстах, где есть только дешевая флэш-память с ограниченным сроком службы для хранения или вообще нет записываемого хранилища (например, встроенные системы).

  3. Если /tmpне злоупотреблять, то использование оперативной памяти задействует обычно огромный объем памяти современного оборудования — то есть, эта информация могла бы с тем же успехом находиться в оперативной памяти, если предположить, что она именно такая, какой ей положено быть.

16 МБмогдостаточно, но все равно не так много, если какой-то процесс выходит из строя -- и /tmpдолжен быть доступен для записи любому. Однако, если какой-то процесс выходит из строя, записывая что-то в /tmp, будет ли лучше, если он в конечном итоге заполнит жесткий диск или быстрее покажет красный флаг, потому что исчерпал раздел RAM?

Если вы уверены в используемом программном обеспечении, последний вариант имеет больше смысла, поэтому вы можете выбрать раздел RAM. /tmpСначала вам следует немного изучить фактическое использование на случай, если происходит что-то необычное (например du -h /tmp). Вы можете придумать «нормальный порог» и проверить его с помощью задания cron, чтобы предупредить кого-то и/или выполнить экстренную очистку, когда он будет превышен.

К сожалению, некоторые приложения могут время от времени сбрасывать то, /tmpчто не удаляется, если они внезапно выходят из строя, и на сервере, который не часто выключается, это может остаться там на неопределенный срок. Я думаю, это может произойти очень безобидно, например, когда кто-то входит в систему и использует что-то, затем соединение произвольно закрывается или отменяется.

Так что не-RAM /tmpбезопаснее. Злоупотребление может оставаться незамеченным дольше, но только потому, что оно не так существенно, как было бы с RAM. Более того, если что-то действительно вызывает проблему, на диске останется дымящийся пистолет, указывающий на источник проблемы.

Связанный контент