UnionFS
March 5th, 2009
No comments
Используется для объединения содержимого нескольких каталогов в одном.
Монтирование:
1 2 3 4 5 6 7 8 9 10 11 12 | [root@case.net.ru]$ ls -l dir1 total 12 -rw-r--r-- 1 root wheel 5 5 мар 11:20 file1 -rw-r--r-- 1 root wheel 5 5 мар 11:20 file2 -rw-r--r-- 1 root wheel 5 5 мар 11:20 file3 [root@case.net.ru]$ ls -l dir2 total 0 -rw-r--r-- 1 root wheel 0 5 мар 11:41 file1 -rw-r--r-- 1 root wheel 0 5 мар 11:20 file2 -rw-r--r-- 1 root wheel 0 5 мар 11:20 file3 [root@case.net.ru]$ mount -t unionfs dir1 dir3 [root@case.net.ru]$ mount -t unionfs dir2 dir3 |
Каталог примонтированный первым (dir1) – становится каталогом нижнего уровня. Каталог примонтированный последним (dir2) – каталогом верхнего уровня. Данные верхнего уровня полностью перекрывают нижний.
1 2 3 4 5 | [root@case.net.ru]$ ls -l dir3 total 0 -rw-r--r-- 1 root wheel 0 5 мар 11:41 file1 -rw-r--r-- 1 root wheel 0 5 мар 11:20 file2 -rw-r--r-- 1 root wheel 0 5 мар 11:20 file3 |
Если удалить файл, который имеется в обоих каталогах, удалится он из верхнего уровня (dir2). На нижнем уровне он останется без изменений, но уже и не будет доступен для просмотра и работы.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | [root@case.net.ru]$ rm dir3/file1 [root@case.net.ru]$ ls -l dir3 total 0 -rw-r--r-- 1 root wheel 0 5 мар 11:20 file2 -rw-r--r-- 1 root wheel 0 5 мар 11:20 file3 [root@case.net.ru]$ ls -l dir1 total 12 -rw-r--r-- 1 root wheel 5 5 мар 11:20 file1 -rw-r--r-- 1 root wheel 5 5 мар 11:20 file2 -rw-r--r-- 1 root wheel 5 5 мар 11:20 file3 [root@case.net.ru]$ ls -l dir2 total 0 -rw-r--r-- 1 root wheel 0 5 мар 11:20 file2 -rw-r--r-- 1 root wheel 0 5 мар 11:20 file3 |
При создании файла или изменении файла, который находится на нижнем уровне – файл создается (копируется) в верхний уровень.
1 2 3 4 5 6 7 8 | [root@case.net.ru]$ echo 'some_data' > dir3/file1 [root@case.net.ru]$ ls -l dir3/file1 -rw-r--r-- 1 root wheel 10 5 мар 11:46 dir3/file1 [root@case.net.ru]$ ls -l dir2/file1 -rw-r--r-- 1 root wheel 10 5 мар 11:46 dir2/file1 [root@case.net.ru]$ ls -l dir1/file1 -rw-r--r-- 1 root wheel 5 5 мар 11:20 dir1/file1 [root@case.net.ru]$ |
Где можно попробовать на практике: jail.
Ссылки: Unionfs во FreeBSD: разбираемся в текущей реализации (Сергей Супрунов, №50 / 01.2007).
