tmpfs(5)

НАИМЕНОВАНИЕ
tmpfs - файловая система в виртуальной памяти

ОПИСАНИЕ
Свойство tmpfs позволяет создавать файловые системы, чьё содержимое находится в виртуальной памяти. Так как файлы в таких файловых системах, обычно, располагаются в оперативной памяти, то доступ к файлах очень быстр.

Файловая система создаётся автоматически при монтировании с типом tmpfs с помощью команды следующего вида:

    $ sudo mount -t tmpfs -o size=10M tmpfs /mnt/mytmpfs

Файловая система tmpfs имеет следующие свойства:

•   Файловая система может задействовать пространство подкачки, если это требуется из-за нагрузки на физическую память.

•   Файловая система потребляет физическую память и пространство подкачки только для хранения текущего содержимого файловой системы.

•   При операции перемонтирования (mount -o remount), размер файловой системы можно изменить (без потери имеющегося содержимого файловой системы).

При размонтировании файловой системы tmpfs её содержимое уничтожается (теряется).

  Параметры монтирования
Файловая система tmpfs поддерживает следующие параметры монтирования:

size=байт
    Specify an upper limit on the size of the filesystem. The size is given in bytes, and rounded up to entire pages. The limit is removed if the size is 0.

    У размера может быть указан суффикс k, m или g единиц измерения Ki, Mi, Gi (двоичный кило (kibi), двоичный мега (mebi) и двоичный гига (gibi) -байт).

    Также у размер может быть указан суффикс %, задающий размер экземпляра в процентах от физической оперативной памяти.

    Если size или nr_blocks не заданы, то по умолчанию используется size=50%.

nr_blocks=блоков
    То же, что и size, но считается в блоках PAGE_CACHE_SIZE.

    У блоков может быть задан суффикс k, m или g, как у size, но нельзя задать суффикс %.

nr_inodes=инод
    The maximum number of inodes for this instance. The default is half of the number of your physical RAM pages, or (on a machine with highmem) the number of lowmem RAM pages, whichever is smaller. The limit is removed if the number is 0.

    У инод может быть задан суффикс k, m или g, как у size, но нельзя задать суффикс %.

noswap(since Linux 6.4)
    Disables swap. Remounts must respect the original settings. By default swap is enabled.

mode=права
    Назначить начальные права на корневой каталог.

gid=gid (начиная с Linux 2.5.7)
    Назначить начальный идентификатор группы на корневой каталог.

uid=uid (начиная с Linux 2.5.7)
    Назначить начальный идентификатор пользователя на корневой каталог.

huge=huge_option (начиная с Linux 4.7.0)
    Set the huge table memory allocation policy for all files in this instance (if CONFIG_TRANSPARENT_HUGEPAGE is enabled).

    Значением huge_option может быть одно из:

    never
        Не выделять огромные страницы. По умолчанию.

    always
        Каждый раз пытаться выделить огромные страницы при необходимости в новой странице.

    within_size
        Only allocate huge page if it will be fully within i_size. Also respect fadvise(2) and madvise(2) hints

    advise
        Only allocate huge pages if requested with fadvise(2) or madvise(2).

    deny
        Запретить включение огромных страниц у всех монтирований, используется в экстренных случаях.

    force
        Принудительно включить огромные страницы у всех монтирований; полезно при отладке.

mpol=mpol_option (начиная с Linux 2.6.15)
    Задать алгоритм выделения памяти NUMA для всех файлов в этом экземпляре (если включён CONFIG_NUMA).

    Значением mpol_option может быть одно из:

    default
        Использовать алгоритм выделения из процесса (смотрите set_mempolicy(2)).

    prefer:узел
        Отдавать предпочтение выделению памяти из указанного узла.

    bind:список_узлов
        Выделять память только на узлах из списка_узлов.

    interleave
        Выделять на каждом узле по очереди.

    interleave:список_узлов
        Выделять на каждом узле по очереди из списка_узлов.

    local
        Отдавать предпочтение выделению памяти из локального узла.

    Здесь список_узлов — это список перечисленных через запятую десятичных чисел идиапазонов, указывающие узлы NUMA. Диапазон задаётся парой десятичных чисел через тире, наименьший и наибольший номера узлов диапазона. Пример: mpol=bind:0-3,5,7,9-15.

ВЕРСИИ
Свойство tmpfs было добавлено в Linux 2.4 как последователь старого свойства ramfs, в котором отсутствует возможность проверки ограничения и использования пространства подкачки.

ПРИМЕЧАНИЯ
Чтобы пользовательские инструменты и приложения могли создавать файловые системы tmpfs ядро должно быть собрано с параметром CONFIG_TMPFS.

Файловая система tmpfs поддерживает расширенные атрибуты (смотрите xattr(7)), но расширенные атрибуты user не допускаются.

Для общей памяти System V shmget(2)) и общих анонимных отображений (mmap(2) с флагами MAP_SHARED и MAP_ANONYMOUS) используется внутренняя файловая система общей памяти. Эта файловая система доступна независимо от того, собрано ли ядро с параметром CONFIG_TMPFS.

Файловая система tmpfs, смонтированная в /dev/shm, используется для реализации общей памяти POSIX (shm_overview(7)) и семафоров POSIX (sem_overview(7)).

Объём памяти, использованной во всех файловых системах tmpfs показывается в поле Shmem файла /proc/meminfo и в поле shared, показываемом free(1).

Свойство tmpfs раньше называлось shmfs.

СМОТРИТЕ ТАКЖЕ
df(1), du(1), memfd_create(2), mmap(2), set_mempolicy(2), shm_open(3), mount(8)

Файлы исходного кода ядра Documentation/filesystems/tmpfs.txt и Documentation/admin-guide/mm/transhuge.rst.

ПЕРЕВОД
Русский перевод этой страницы руководства разработал(и) Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitry Bolkhovskikh <d20052005@yandex.ru>, Yuri Kozlov <yuray@komyakino.ru>, Иван Павлов <pavia00@gmail.com> и Kirill Rekhov <krekhov.dev@gmail.com>

Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков (<debian-l10n-russian@lists.debian.org>).