Archive

Posts Tagged ‘unionfs’

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).

Tags: