You are on page 1of 39

Linux上目錄暨標籤式檔

案系統研究與實作
Design and Implementation of a Linux-based
Filesystem with Hierarchical And Tags Management

指導教授: 姜美玲教授
組長: 廖祥智
組員: 莊尚益
許洛豪
江明勳
1
報告大綱
► 研究動機
► 系統概述
► 現有解決方法比較
► 系統設計架構
► 系統展示
► 效能測試
► 未來展望

2
研究動機
► 快速地在大量的檔案中做搜尋
► 改善階層式檔案架構 “搜尋” 動作的缺點
ƒ 耗時
ƒ 無法靈活地尋找資料

3
4
5
標籤的概念
► 標籤 ( Tag )
ƒ 是使用者自定的分類
ƒ 一個檔案可以在多個標籤之內
ƒ 可以使用 & 及 | 來做條件式搜尋

6
標籤的使用實例 1
► 在 /data/MV/劉若英
/ 中放著劉若英的
MV

► 其中 35,36 兩首是
和陳昇合唱的

► 怎麼找出劉若英和
陳昇合唱的兩首歌
的MV?

7
標籤的使用實例 1 (Cont’)
► 替這兩個檔案加上
三個標籤屬性。

8
標籤的使用實例 1 (Cont’)
► 找出劉若英和陳昇合唱
的兩首歌的MV?
ƒ (劉若英&陳昇) & MV

9
標籤的使用實例 2
► 劉若英的歌在 /data/MP3/劉若英/
► 劉若英的照片在 /data/Photo/劉若英/
► 劉若英的MV在 /data/MV/劉若英/

10
標籤的使用實例 2 (Cont’)
► 怎麼找出劉若英的歌和MV,但不要照片?
ƒ (音樂 & 劉若英) | (MV & 劉若英 )
ƒ (音樂 | MV ) & 劉若英

11
12
現有檔案管理應用程式
•管理特定類型檔案
► Picasa 圖片管理程式 •與資料移動不同步
•需要學習新的操作環境
•無法用其他軟體開啟檔案
•沒有條件式搜尋功能

13
現有檔案管理應用程式

► iTunes 音樂管理程式
•管理特定類型檔案
•與資料移動不同步
•需要學習新的操作環境
•無法用其他軟體開啟檔案
•沒有條件式搜尋功能

14
現有檔案管理應用程式

► 全文檢索 Google Desktop Search


•與資料移動不同步
•搜尋精確度不夠
•全文檢索造成硬碟負擔

15
系統模塊圖

16
系統架構
► Virtual Filesystem Switch

17
系統架構 (Cont’)
► CAT’s A Tag Filesystem Switch (CatFS)
ƒ 處理磁碟、記體內標籤資料的管理。
ƒ 一系列與底層檔案系統無關標籤操作的 system
call。
ƒ 檔案操作與標籤操作同步管理的中介層。
► Virtual Tag File System
ƒ 作為展現搜尋結果的介面。

18
Virtual Tag File System
► 更改自tmpfs 檔案系統,將 RAM 視為一虛
擬磁碟。
► 將搜尋結果建立於虛擬磁碟中,作為使用者
存取搜尋後檔案的介面。
► 搜尋實例:
ƒ mount –t vtagfs –o search=“銀河天使” none
/mnt/Tags/

19
Virtual Tag File System (Cont’)

20
Virtual Tag File System (Cont’)

21
Virtual Tag File System (Cont’)

22
CatFS 記憶體內資料結構
► 為何不直接儲存檔 Test: Tag MP3:
案及標籤對應的列 /MP3/劉若英
/first/A
表?
/first/B /MP3/南方二重唱
ƒ 被標籤數目(N)以
/first/A
及標籤內檔案多寡
(M) bound。 /first/C
ƒ Linear search: O
(N*M)

23
CatFS 記憶體內資料結構 (Cont’)
► 解決方式
ƒ 採用 hash table tree 來存放標籤及檔案的對應。
► Test 標籤內具有:
ƒ /first/A
ƒ /first/B

24
CatFS 記憶體內資料結構 (Cont’)

25
CatFS 記憶體內資料結構 (Cont’)
► 被標籤數目 (N) 以及路徑深度 (M’) 所
bound。
ƒ Hash : O (1)
ƒ 搜尋 : O ( N * M’ )
► 通常 M’ < M

26
CatFS 磁碟內資料結構
► 以檔案儲存相關標籤資料。
ƒ Machine Independent
ƒ 可以不管底層的檔案系統
►以 B-Tree 做為基本資料結構,以加速存取。
► .CatTags
ƒ 儲存標籤相關資訊。
► .CatFS
ƒ 儲存標籤與檔案的對應。
27
.CatTags 資料結構
struct t_head { struct t_node {
char t_magic[5]; int disk_position;
int t_leaf;
int t_version;
int t_parent;
int t_end_position; int
int t_root_position; t_child_position[20];
int t_freelist_position; int t_key_value[19];
}; int froot_position[19];
char * t_content[19];
};
28
.CatFS 資料結構
struct f_head { struct f_node {
char * f_magic; int disk_position;
int f_leaf;
int f_version;
int f_parent;
int f_end_position; int
int f_freelist_position; f_child_position[20];
}; int f_key_value[19];
char * f_content[19];
};

29
條件式標籤搜尋
► 建立二元樹以進行 &

搜尋。
► 例:
| 劉若英
ƒ (MP3 | 照片) & 劉
若英

MP3 照片

30
效能測試
► 測試環境
ƒ 6,839 個檔案
ƒ 具有標籤的檔案數目
►0
►130
►518
►1024
►6839

► 測試項目
ƒ 移動檔案
31
效能測試 (Cont’)

原始 0 130 518 1024 6839

1 20.95 21.487 22.573 23.199 27.681 49.208


2 21.481 20.64 21.791 23.438 27.243 49.488
3 22.016 21.123 21.962 22.852 27.263 48.999
4 20.382 21.641 21.252 23.423 26.251 49.722
5 20.804 21.623 21.89 24.22 27.83 48.873
平均 21.1266 21.3028 21.8936 23.4264 27.2536 49.258
32
效能測試 (Cont’)
60

50 原始核心
40 0 個檔案
時間(秒)

130 個檔案
30
518 個檔案
20 1024 個檔案
10 6839 個檔案
0
1

33
效能測試 (Cont’)

具有標籤的檔案數目

60
50
40
具有標籤的檔案數
30

20
10
0
0 2000 4000 6000 8000

34
效能測試 (Cont’)
► 原因分析
ƒ 標籤操作時,馬上寫回硬碟,造成效能負擔。
► 解決方式
ƒ 將標籤操作 buffer 起來,等到一定時間或數量後
再寫回硬碟。

35
未來展望
► 改善效能
► 發展成更成熟,適合使
用的版本。
► 推廣 Open Source 的精
神,讓有志之士加入。

36
誠心地感謝所有的評審教授以及
在場的各位蒞臨指教,謝謝。

37
CatFS 處理流程圖

38
Virtual Tag File System (Cont’)

39

You might also like