Нещодавно за службовим обов'язком довелося зіткнуться з цікавою віртуальною файлової системою UnionFS. У цій статті хотілося б розглянути детальніше що з себе представляє UnionFS і в яких ситуаціях дана ФС може бути корисною.
трохи теорії
Отже, що ж пише вікіпедія з приводу UnionFS.
UnionFS - допоміжна файлова система для Linux і FreeBSD. виробляє каскадно-об'єднане монтування інших файлових систем. Це дозволяє файлам і каталогам ізольованих файлових систем, відомих як гілки, прозоро перекриватися, формуючи єдину пов'язану файлову систему. Каталоги, які мають той же шлях в об'єднаних гілках, буде спільно відображати вміст в об'єднаному каталозі нової віртуальної файлової системи.
Коли гілки монтуються, то вказується пріоритет однієї гілки над іншою. Отже, коли обидві гілки містять файл з ідентичним ім'ям, одна гілка матиме більший пріоритет.
Тепер розглянемо реальні приклади використання UnionFS.
Маємо NFS-доступний каталог з дістфайламі (архівами початкових кодів) портів на сервері (оновлюється рідко). На одній з мережевих машин також є каталог / usr / ports / distfiles. в якому знаходяться більше нові версії дістфайлов. Проблема в тому, що в серверному NFS-сховище знаходиться дуже багато файлів, потрібних для складання всього і вся, вони рідко змінюють свої версії. А на мережевий машині тільки те, що вона скачала сама з Мережі.
Як би зробити так, щоб мережева машина могла використовувати не тільки свої дістфайли, але і дістфайли сервера?
На мережевий машині робимо:
$ Mount_nfs -o ro server: / usr / ports / distfiles / mnt / server / distfiles
$ Mount_unionfs -o below / mnt / server / distfiles / usr / ports / distfiles
Таким чином, на мережевий машині ми отримали повне дерево портів з усіма дістфайламі. Нові файли будуть збережуться локально (зручно, якщо NFS-каталог для нас read-only). Будь-які змінені файли в NFS-каталозі будуть скопійовані в локальне сховище (/ usr / ports / distfiles мережевий машини) з подальшим застосуванням змін. Ці виключення описані параграфом в mount_unionfs (8).
Змонтувати CD-ROM і «записувати» у нього інформацію
$ Mount -t cd9660 -o ro / dev / acd0 / cdrom
$ Mount -t unionfs -o noatime / var / cdrom / cdrom
Тепер каталог / var / cdrom примонтовано на верху / cdrom і з ним можна працювати як зі звичайним розділом жорсткого диска.