Перейти до вмісту

tmpfs

Матеріал з Вікіпедії — вільної енциклопедії.

tmpfs — тимчасове файлове сховище у багатьох Unix-подібних операційних системах. Призначена для монтування файлової системи, але розміщується в оперативній пам'яті замість фізичного диска. Подібна конструкція є RAM-диском.

Семантика

[ред. | ред. код]

Всі дані в tmpfs є тимчасовими в тому сенсі, що жодного файлу не буде створено на твердому диску. Після перезавантаження всі дані, що містяться в tmpfs, будуть втрачені.

Пам'ять, яка використовується для tmpfs, варіюється в розмірах залежно від кількості розміщених файлів в ній і може бути розширена за рахунок swap. Багато дистрибутивів Unix використовують tmpfs за замовчуванням для розміщення /tmp або для поділу пам'яті. Це можна побачити у виведенні команди df, наприклад:

Filesystem            Size  Used Avail Use% Mounted on
tmpfs                 256M  688K  256M   1%  /tmp

Реалізації

[ред. | ред. код]

SunOS / Solaris

[ред. | ред. код]

SunOS 4 включала ранні розробки Tmpfs; вона вперше з'явилася в SunOS 4.0 в кінці 1987, разом з новим ортогональним управлінням адресним простором, що дозволяє розмістити будь-який об'єкт в пам'яті.[1][2]

У Solaris /tmp розміщувалася в Tmpfs, що стало стандартом в Solaris 2.1, що вийшов у листопаді 1994. Вивід команди df в Solaris показував swap як файлову систему будь-якого Tmpfs розділу:

 # df -k
 Filesystem  kbytes  used   avail capacity  Mounted on
 swap        601592     0  601592     0%    /tmp/test

Tmpfs став підтримуватися Linux з версії 2.4.[3] Tmpfs (так само відома як shmfs) відрізняється від Linux RAM диска динамічним виділенням пам'яті і переміщенням невикористовуваних сторінок у swap. RAMfs, навпаки, не використовує swap (це може бути як перевагою, так і недоліком). До того ж, MFS і деякі старі версії RAMfs, не змінювали свій розмір динамічно, а залишалися того розміру, як і були примонтовані.

Використання Tmpfs, наприклад:

mount -t tmpfs -o size=1G,nr_inodes=10k,mode=0700 tmpfs /space

яка буде зростати до 1 GiB з 10240 інодами в пам'яті/swap і доступна тільки власникові теки /space. Максимальний розмір файлової системи може бути змінений "на льоту", наприклад:

mount -o remount,size=2G /space

У Tmpfs можуть бути розміщені будь-які теки, що зберігають тимчасові дані, які видаляються при перезавантаженні системи: /var/lock, /var/run, /tmp та інші. Крім того, для зменшення кількості дискових операцій (в цілях максимального підвищення продуктивності системи або економії ресурсу твердотільних накопичувачів) в Tmpfs іноді розміщують директорії, які зазвичай зберігають дані між перезавантаженнями, наприклад, /var/tmp (ця директорія нерідко очищається, хоча рекомендовано цього не робити [4] ) або директорії кешування деяких програм (веббраузерів).

Tmpfs була реалізована в NetBSD версії 4.0, котра вийшла 10 вересня 2005.[4] У FreeBSD 7.0 з'явилася портована з NetBSD Tmpfs.[5] У DragonFly BSD, з версії 2.5.1, теж є портована з NetBSD реалізація Tmpfs.

Microsoft Windows

[ред. | ред. код]

У Windows є приблизний аналог Tmpfs у вигляді "тимчасових файлів". Файли, створені з атрибутом FILE_ATTRIBUTE_TEMPORARY і прапором FILE_FLAG_DELETE_ON_CLOSE розміщуються в оперативній пам'яті і записуються на твердий диск тільки якщо системі не вистачає оперативної пам'яті. Таким чином, "тимчасові файли" аналогічні Tmpfs, за винятком того, що при нестачі пам'яті вони записуються за вказаним при їхньому створенні шляхом, а не в файл підкачки. Цей метод часто використовується на серверах з TransmitFile для підготовки контенту і його буферизації перед відправкою клієнтові.

Виноски

[ред. | ред. код]
  1. Peter Snyder. tmpfs: A Virtual Memory File System (PDF). Архів оригіналу (PDF) за 1 травня 2012. Процитовано 2 липня 2010.
  2. Hal L. Stern. SunOS 4.1 Performance Tuning (GZipped PostScript). Архів оригіналу за 1 травня 2012. Процитовано 2 липня 2010. [Архівовано 2012-02-07 у Wayback Machine.]
  3. Daniel Robbins (1 вересня 2001). Advanced filesystem implementor's guide. Архів оригіналу за 1 травня 2012. Процитовано 2 липня 2010. Стаття, що описує реализації в Linux
  4. Julio M. Merino Vidal (24 лютого 2006). NetBSD-SoC: Efficient memory file-system. Архів оригіналу за 1 травня 2012. Процитовано 2 липня 2010. [Архівовано 2012-02-23 у Wayback Machine.]
  5. Derek Morr (2 грудня 2008). FreeBSD tmpfs manpage. Архів оригіналу за 1 травня 2012. Процитовано 2 липня 2010.

Посилання

[ред. | ред. код]