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

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

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] ) або директорії кешування деяких програм (веб-браузерів).

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

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). Архів оригіналу за 2012-05-01. Процитовано 2010-07-02. 
  2. Hal L. Stern. «SunOS 4.1 Performance Tuning» (GZipped PostScript). Архів оригіналу за 2012-05-01. Процитовано 2010-07-02. 
  3. Daniel Robbins (September 1, 2001). «Advanced filesystem implementor's guide». Архів оригіналу за 2012-05-01. Процитовано 2010-07-02.  Стаття, що описує реализації в Linux
  4. Julio M. Merino Vidal (February 24, 2006). «NetBSD-SoC: Efficient memory file-system». Архів оригіналу за 2012-05-01. Процитовано 2010-07-02. 
  5. Derek Morr (December 2, 2008). «FreeBSD tmpfs manpage». Архів оригіналу за 2012-05-01. Процитовано 2010-07-02. 

Посилання[ред.ред. код]