TMPFS(5)

ИМЯ
tmpfs - файловая система в виртуальной памяти

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

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

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

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

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

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

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

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

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

size=байт
    Задать максимальный размер файловой системы. Указывается в байтах и округляется до полного размера страницы.

    У размера может быть указан суффикс 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=инод
    Максимальное количество инод в экземпляре. Значением по умолчанию является или половина количества страниц оперативной памяти, или (для машины с highmem) количество страниц памяти lowmem, выбирается меньшее.

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

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

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

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

huge=huge_option (начиная с Linux 4.7.0)
    Задать алгоритм выделения огромной табличной памяти для всех файлов в этом экземпляре (если включён CONFIG_TRANSPARENT_HUGE_PAGECACHE).

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

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

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

    within_size
        Выделять огромную страницу только, если в ней займётся i_size. Также учитываются подсказки fadvise(2)/madvise(2).

    advise
        Выделять огромные страницы только, если они запрашиваются с помощью fadvise(2)/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/vm/transhuge.txt.