Tmpfs: различия между версиями

Материал из ALT Linux Wiki
м (→‎Использование: link pam_mktemp)
мНет описания правки
 
(не показано 16 промежуточных версий 5 участников)
Строка 1: Строка 1:
[[Категория:Admin]]
{{DISPLAYTITLE:tmpfs}}
[[Категория:Devel]]
[[Категория:Devel]]
[[Категория:Hasher]]
== Что это и зачем? ==
[[enwp:Tmpfs#Linux|<tt>tmpfs</tt>]] — файловая система, предназначенная для быстрого и ненадёжного хранения временных данных.


== Что это и зачем? ==
Организовывается в виртуальной памяти (RAM+swap), поэтому:
tmpfs — файловая система, предназначенная для быстрого и ненадёжного хранения временных данных. Организовывается в виртуальной памяти (RAM+swap), поэтому при отмонтировании, перезагрузке или выключении теряет содержимое полностью. Не озадачивается долетанием данных до пластин в случае использования свопа на дисках, поэтому работает быстрее настоящих ФС даже в случае активного использования диска.
* при отмонтировании, перезагрузке или выключении теряет содержимое полностью;
* не озадачивается долетанием данных до пластин в случае использования свопа на дисках — вследствие чего работает в разы быстрее настоящих ФС даже в случае активного использования свопа;
* размер tmpfs может превышать размер доступной RAM.


Подходит, например, для <tt>/tmp</tt> и сборок ПО.
Хорошо подходит для {{path|/tmp}} и массовой [[hasher|сборки пакетов]]/[[mkimage|образов]].


== Создание ==
== Создание ==
Предполагает наличие достаточного объёма виртуальной памяти (для активного использования рекомендуется RAM, а своп — желательно на отдельном диске).
Предполагает наличие достаточного объёма виртуальной памяти (для активного использования рекомендуется RAM, а своп — желательно на отдельном диске).


Без опции <tt>size</tt> файловая система конфигурируется на объём, равный половине RAM (при этом эта часть не резервируется, а используется по мере надобности, так что дефолт вполне разумный).
Без опции <tt>size</tt> файловая система конфигурируется на объём, равный половине RAM (при этом эта часть не резервируется, а используется по мере надобности, так что дефолт вполне разумный). С ручным заданием <tt>size</tt> можно не очень стесняться, поскольку в худшем разе получим свопинг и <tt>No space left on device</tt>.
 
В дистрибутивах ALT Linux 4.0 и выше /tmp по умолчанию размещается на tmpfs, поэтому может быть достаточно создать при установке (или добавить позже) своп необходимого<ref>Для личного hasher может быть достаточно одного-двух гигабайт; для создания DVD при помощи mkimage — восемь-десять; для многопользовательского случая соответственно умножаем.</ref> объёма, указать в /etc/fstab желаемый размер tmpfs:
 
  tmpfs /tmp tmpfs size=3g,nosuid 0 0


В дистрибутивах ALT Linux 4.0 и выше {{path|/tmp}} по умолчанию размещается на tmpfs (с помощью [[pam_mktemp]]), поэтому может быть достаточно создать при установке (или добавить позже) своп необходимого<ref>Для личного hasher может быть достаточно одного-двух гигабайт; для создания DVD при помощи mkimage — восемь-десять; для многопользовательского случая соответственно умножаем.</ref> объёма, указать в {{path|/etc/fstab}} желаемый размер (size можно указать в %):
  tmpfs /tmp tmpfs size=4g,nr_inodes=1m,nosuid 0 0
и перемонтировать ФС:
и перемонтировать ФС:
   mount -o remount /tmp
   mount -o remount /tmp


== Использование ==
Существует специально обученный пакет {{pkg|livecd-tmpfs}}, который постарается подобрать «на лету» при загрузке подходящий размер tmpfs, исходя из доступной памяти и некоторых эвристик (либо конфигурационного файла).
Использование tmpfs для сборки предполагается <tt>hasher-priv</tt> из 4.0/branch и выше — <tt>/etc/hasher-priv/system</tt> «из коробки» содержит следующую настройку допустимых префиксов рабочего каталога:
 
  prefix=~:/tmp/.private


что даёт возможность помимо домашнего использовать и конфигурируемый автоматически при использовании <tt>[[pam_mktemp]]</tt> частный каталог <tt>$TMP</tt> (<tt>/tmp/.private/$USER</tt>).
При необходимости временно добавить свопа (например, для сборки крупного пакета) можно воспользоваться swap-файлами:
fallocate -l 1G /home/swap.img
chmod 600 /home/swap.img
mkswap /home/swap.img
swapon /home/swap.img
swapon -s


== Проблемы ==
== Проблемы ==
Известны [http://lists.altlinux.org/pipermail/devel/2006-April/125129.html проблемы со стабильностью] даже той условной сохранности данных, которая декларируется tmpfs; так, при существенной нагрузке на VM во времена 2.6.18 могли наблюдаться невоспроизводимые (случайные) пропадания файлов и сбой сборки по этой причине. К выходу Server 4.0 часть таких проблем была исправлена, но при странностях следует попробовать воспроизвести сборку на реальной ФС (или выполнить несколько прогонов на tmpfs и оценить воспроизводимость места сбоя).
Известны [http://lists.altlinux.org/pipermail/devel/2006-April/125129.html проблемы со стабильностью] даже той условной сохранности данных, которая декларируется tmpfs; так, при существенной нагрузке на VM во времена 2.6.18 могли наблюдаться невоспроизводимые (случайные) пропадания файлов и сбой сборки по этой причине. К выходу Server 4.0 часть таких проблем была исправлена, но при странностях следует попробовать воспроизвести сборку на реальной ФС (или выполнить несколько прогонов на tmpfs и оценить воспроизводимость места сбоя).
== Примечания ==
<references/>
{{Category navigation|title=Файловые системы|category=FileSystems|sortkey={{SUBPAGENAME}}}}

Текущая версия от 22:56, 27 октября 2017

Что это и зачем?

tmpfs — файловая система, предназначенная для быстрого и ненадёжного хранения временных данных.

Организовывается в виртуальной памяти (RAM+swap), поэтому:

  • при отмонтировании, перезагрузке или выключении теряет содержимое полностью;
  • не озадачивается долетанием данных до пластин в случае использования свопа на дисках — вследствие чего работает в разы быстрее настоящих ФС даже в случае активного использования свопа;
  • размер tmpfs может превышать размер доступной RAM.

Хорошо подходит для /tmp и массовой сборки пакетов/образов.

Создание

Предполагает наличие достаточного объёма виртуальной памяти (для активного использования рекомендуется RAM, а своп — желательно на отдельном диске).

Без опции size файловая система конфигурируется на объём, равный половине RAM (при этом эта часть не резервируется, а используется по мере надобности, так что дефолт вполне разумный). С ручным заданием size можно не очень стесняться, поскольку в худшем разе получим свопинг и No space left on device.

В дистрибутивах ALT Linux 4.0 и выше /tmp по умолчанию размещается на tmpfs (с помощью pam_mktemp), поэтому может быть достаточно создать при установке (или добавить позже) своп необходимого[1] объёма, указать в /etc/fstab желаемый размер (size можно указать в %):

 tmpfs /tmp tmpfs size=4g,nr_inodes=1m,nosuid 0 0

и перемонтировать ФС:

 mount -o remount /tmp

Существует специально обученный пакет livecd-tmpfs, который постарается подобрать «на лету» при загрузке подходящий размер tmpfs, исходя из доступной памяти и некоторых эвристик (либо конфигурационного файла).

При необходимости временно добавить свопа (например, для сборки крупного пакета) можно воспользоваться swap-файлами:

fallocate -l 1G /home/swap.img
chmod 600 /home/swap.img
mkswap /home/swap.img
swapon /home/swap.img
swapon -s

Проблемы

Известны проблемы со стабильностью даже той условной сохранности данных, которая декларируется tmpfs; так, при существенной нагрузке на VM во времена 2.6.18 могли наблюдаться невоспроизводимые (случайные) пропадания файлов и сбой сборки по этой причине. К выходу Server 4.0 часть таких проблем была исправлена, но при странностях следует попробовать воспроизвести сборку на реальной ФС (или выполнить несколько прогонов на tmpfs и оценить воспроизводимость места сбоя).

Примечания

  1. Для личного hasher может быть достаточно одного-двух гигабайт; для создания DVD при помощи mkimage — восемь-десять; для многопользовательского случая соответственно умножаем.