Professional Documents
Culture Documents
案系統研究與實作
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
現有檔案管理應用程式
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’)
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