46
1 CAT Filesystem CAT Filesystem Linux Linux 下的目錄與標籤式檔案系統 下的目錄與標籤式檔案系統 Draft 0.2 Draft 0.2 墳墓( 墳墓( Brian Hsu Brian Hsu

Cat Fs Draft

Embed Size (px)

Citation preview

Page 1: Cat Fs Draft

11

CAT FilesystemCAT FilesystemLinux Linux 下的目錄與標籤式檔案系統下的目錄與標籤式檔案系統

Draft 0.2Draft 0.2

墳墓(墳墓( Brian HsuBrian Hsu ))

Page 2: Cat Fs Draft

2

授權聲明授權聲明

► 本文以 『本文以 『 Creative Commons Creative Commons 姓名標示姓名標示 -- 非非商業性商業性 -- 禁止改作 禁止改作 2.0 2.0 台灣台灣』 進行授權』 進行授權

► 您可以在下列的條件下自由重製、散布、展您可以在下列的條件下自由重製、散布、展示及演出本著作。 示及演出本著作。 姓名標示:姓名標示:您必須保留原作者的姓名標示。 您必須保留原作者的姓名標示。

非商業性:非商業性:您不得為商業目的而使用本著作。 您不得為商業目的而使用本著作。

禁止改作:禁止改作: 您不得改變、轉變或改作本著作。 您不得改變、轉變或改作本著作。

► 詳情請見詳情請見

ttp://creativecommons.org/licenses/by-nc-nd/2.0/tw/ttp://creativecommons.org/licenses/by-nc-nd/2.0/tw/

Page 3: Cat Fs Draft

3

OutlineOutline

►階層式檔案系統架構階層式檔案系統架構

►階層式檔案系統的問題階層式檔案系統的問題

►解決方案解決方案 Link (Link ( 捷徑捷徑 )) ApplicationApplication 全文檢索全文檢索

Label (Tag)Label (Tag)

Page 4: Cat Fs Draft

4

OutlineOutline

►是否需要發展一套 是否需要發展一套 FSFS Application Application 的問題的問題

Extendend File AttributesExtendend File Attributes►CatFS ApproachCatFS Approach►CatFS CatFS 系統特色系統特色

►系統架構系統架構

►待討論事項待討論事項

►要解決的問題要解決的問題

►TODO ListTODO List

Page 5: Cat Fs Draft

5

階層式檔案系統階層式檔案系統

► 樹狀節構樹狀節構► 所有資料都可分為兩種基本型態所有資料都可分為兩種基本型態

目錄目錄

檔案檔案

► 檔案一定在某一個目錄之下檔案一定在某一個目錄之下

Page 6: Cat Fs Draft

6

階層式檔案系統的問題階層式檔案系統的問題

►階層式檔案系統的基本特性階層式檔案系統的基本特性 一個檔案只能在一個目錄之中一個檔案只能在一個目錄之中

►現實的生活中現實的生活中 一個檔案可能同時屬於好幾個分類一個檔案可能同時屬於好幾個分類

►與『一個檔案只能在一個目錄』相扺觸與『一個檔案只能在一個目錄』相扺觸

Page 7: Cat Fs Draft

7

階層式檔案系統的問題:階層式檔案系統的問題:ExampleExample

► 我所規劃的檔案架構如我所規劃的檔案架構如右右

► 社團照片以活動為分類社團照片以活動為分類

► 每個檔案都有特定的目每個檔案都有特定的目錄可以存放錄可以存放 Ex:Ex: 奶茶的歌放在 奶茶的歌放在 ~/MP3/~/MP3/ 奶奶

茶茶 /[/[ 專輯名稱專輯名稱 ] ] 中中

奶茶的照片放在 奶茶的照片放在 ~/Photo/~/Photo/ 奶茶奶茶 /[/[ 分類分類 ] ] 中中

► 世界一片美好?世界一片美好?

~ +--Photo | +-- 社團 | | +--- 園遊會 | | +--- 迎新茶會 | | +--- 社遊 | +-- 奶茶 | +--- 桌布 | +--- 聽說宣傳照 | +--MP3 | +-- 奶茶 | | +--- 很愛很愛妳 | | +--- 單身日誌演唱會 | | +--- 聽說 | +-- 陳昇 | +--- 美麗寶島跨年演唱會 +--MTV +-- 奶茶 +-- 陳昇

Page 8: Cat Fs Draft

8

階層式檔案系統的問題:階層式檔案系統的問題:ExampleExample

►我要如何在所有的社團照片中,找到特定主我要如何在所有的社團照片中,找到特定主題的照片?題的照片? Ex: cosplayEx: cosplay 、木偶、社團合照,特定社員… 、木偶、社團合照,特定社員… etcetc

Page 9: Cat Fs Draft

9

階層式檔案系統的問題:階層式檔案系統的問題:ExampleExample

► 我的檔案以檔案類型分類我的檔案以檔案類型分類 音樂 音樂 => ~/MP3=> ~/MP3 照片 照片 => ~/Photo=> ~/Photo 影片 影片 => ~/MTV=> ~/MTV

► 如何做到下面的事情?如何做到下面的事情? 找出奶茶聽說專輯的所有檔案找出奶茶聽說專輯的所有檔案 (MP3,MTV,Photo)(MP3,MTV,Photo) 找出奶茶很愛很愛你的照片和音樂找出奶茶很愛很愛你的照片和音樂

找出奶茶或南方二重唱的所有 找出奶茶或南方二重唱的所有 MTV MTV 和奶茶的照片和奶茶的照片

► 在目錄的架構下,以上的所有都是癡心妄想!在目錄的架構下,以上的所有都是癡心妄想!

Page 10: Cat Fs Draft

10

解決的方式解決的方式

►Link (Link ( 捷徑捷徑 ))►ApplicationApplication►全文搜尋全文搜尋

►LabelLabel Mac OS XMac OS X Gmail/Picasa2Gmail/Picasa2

Page 11: Cat Fs Draft

11

解決方法:解決方法: LinkLink

►把我希望放在一起的檔案,建立一個目把我希望放在一起的檔案,建立一個目錄,並將原始檔 錄,並將原始檔 link link 在那個目錄內。在那個目錄內。 Ex: Ex: 建一個『聽說照片建一個『聽說照片 MVMV 』的資料夾,再把所』的資料夾,再把所

有相關檔案在該目錄中建立捷俓。有相關檔案在該目錄中建立捷俓。

►幾乎所有作業系統都有提供幾乎所有作業系統都有提供 Windows => Windows => 捷徑捷徑

Un*x => Soft LinkUn*x => Soft Link

Page 12: Cat Fs Draft

12

Link Link 的問題的問題

►Soft linkSoft link 原始檔案刪除,原始檔案刪除, soft link soft link 隨之無效隨之無效

►Hard linkHard link 把主目錄裡的檔案刪除,卻無法釋放磁碟空間把主目錄裡的檔案刪除,卻無法釋放磁碟空間

►Link Link 無法與主目錄裡的更動自動同步無法與主目錄裡的更動自動同步►人是多變的,除非用窮舉,否則不可能我要人是多變的,除非用窮舉,否則不可能我要

找任何關鍵字的組合時都能馬上找到對應的找任何關鍵字的組合時都能馬上找到對應的目錄目錄

►Example: Example: 五個分類五個分類 C5,1 + C5,2 + C5,3 + C5,4 + C5,5 = 31 !!C5,1 + C5,2 + C5,3 + C5,4 + C5,5 = 31 !!

Page 13: Cat Fs Draft

13

解決方法:解決方法: ApplicationApplication

►利用軟體進行檔案的管理利用軟體進行檔案的管理 iTunesiTunes Picasa2Picasa2

►只能進行特定檔案類型的管理只能進行特定檔案類型的管理 iTunes => iTunes => 音樂音樂

Picasa2 => Picasa2 => 照片照片

Page 14: Cat Fs Draft

14

解決方法:解決方法: Application (Cont.)Application (Cont.)

►如果我想用統一的方式管理我電腦上的所有如果我想用統一的方式管理我電腦上的所有檔案?檔案? Ex: MP3/MPG/JPEG/TXT/PDF…etc.Ex: MP3/MPG/JPEG/TXT/PDF…etc.

►確實有人在檔案管理員程式加入 確實有人在檔案管理員程式加入 metadata metadata 的功能。的功能。 Ex: GNOME NautilusEx: GNOME Nautilus

Page 15: Cat Fs Draft

15

解決方法:全文檢索解決方法:全文檢索

► 電腦是很笨的,特別在斷字、斷句、斷詞以電腦是很笨的,特別在斷字、斷句、斷詞以及文章脈絡的判斷及文章脈絡的判斷

► Google Desktop SearchGoogle Desktop Search► 無法進行精確的搜尋無法進行精確的搜尋► 沒有義意的照片編號,如何搜尋沒有義意的照片編號,如何搜尋► Example:Example:

內文有『奶茶』兩字的檔案,不一定就與劉若內文有『奶茶』兩字的檔案,不一定就與劉若英有關係英有關係

對劉若英的訪問,或許會提到陳昇或張艾嘉,對劉若英的訪問,或許會提到陳昇或張艾嘉,但不應該被分到『陳昇』或『張艾嘉』的分類但不應該被分到『陳昇』或『張艾嘉』的分類

Page 16: Cat Fs Draft

16

Page 17: Cat Fs Draft

17

Page 18: Cat Fs Draft

18

解決方法:解決方法: LabelLabel

►替檔案加上一個特殊的屬性:替檔案加上一個特殊的屬性: Label (Tag)Label (Tag)►目前使用 目前使用 Label Label 功能的有以下兩個系統功能的有以下兩個系統

Mac OS X FinderMac OS X Finder Gmail/Picasa2Gmail/Picasa2

Page 19: Cat Fs Draft

19

Mac OS X LabelMac OS X Label

►以顏色區分,使用者能設定 以顏色區分,使用者能設定 label label 名稱名稱

►一個檔案只能設定一個 一個檔案只能設定一個 labellabel 就某方面來說,這不過是從『一個檔案只能在一就某方面來說,這不過是從『一個檔案只能在一

個目錄內』 個目錄內』 => => 『一個檔案只能在兩個目錄『一個檔案只能在兩個目錄內』內』

►Label Label 數目有限制,只能使用內建的顏色,數目有限制,只能使用內建的顏色,無法新增無法新增

►Mac OS X Mac OS X 雖然有 雖然有 label label ,但仍無法解決 ,但仍無法解決 P8,9 P8,9 所提出的問題所提出的問題

Page 20: Cat Fs Draft

20

Page 21: Cat Fs Draft

21

Gmail/Picasa LabelGmail/Picasa Label

►沒有階層式的目錄架構,只有 沒有階層式的目錄架構,只有 LabelLabel 目錄在多層次的組織上,依然很有用,但 目錄在多層次的組織上,依然很有用,但

GMail GMail 不支援不支援

►一封信可以有多個 一封信可以有多個 LabelLabel►Label Label 數目沒有限制數目沒有限制

►Gmail Gmail 可以用 可以用 Label Label 搜尋,但無法進行搜尋,但無法進行複雜的條件判斷。複雜的條件判斷。

►Picasa2 Picasa2 只能處理 只能處理 and and 運算元運算元

Page 22: Cat Fs Draft

22

Gmail/Picasa Label (Cont.)Gmail/Picasa Label (Cont.)

Page 23: Cat Fs Draft

23

Gmail/Picasa Label (Cont.)Gmail/Picasa Label (Cont.)

Page 24: Cat Fs Draft

24

Gmail/Picasa Label (Cont.)Gmail/Picasa Label (Cont.)

Page 25: Cat Fs Draft

25

檔案系統 檔案系統 vs vs 應用程式?應用程式?

►要實作 要實作 Label (Tags) Label (Tags) 真的需要搞到檔案系統真的需要搞到檔案系統嗎?畢竟大不了我寫隻什麼檔式都可以吃,嗎?畢竟大不了我寫隻什麼檔式都可以吃,又可以設 又可以設 label label 的檔案管理員嘛!的檔案管理員嘛!

►再不然,目前許多的檔案系統也提供使用設再不然,目前許多的檔案系統也提供使用設定額外的屬性,實在沒必要發展一套新的檔定額外的屬性,實在沒必要發展一套新的檔案系統。案系統。

Page 26: Cat Fs Draft

26

Application Application 的問題的問題

►連續性連續性 在 在 Un*x Un*x 的世界裡,圖型界面的檔案管理員有許多種 的世界裡,圖型界面的檔案管理員有許多種

(Ex: KDE,GNOME…etc)(Ex: KDE,GNOME…etc) 如果使用 如果使用 Application Application 來記錄 來記錄 Tags Tags ,會發生不連續性,會發生不連續性

的問題。的問題。

► Example:Example: 在 在 Nautilus Nautilus 中設定一個 中設定一個 foo foo 這個目錄的底色這個目錄的底色

在 在 command line command line 下 下 mv foo barmv foo bar 理論:這只是改名,不應該把底色改掉理論:這只是改名,不應該把底色改掉

事實:底色的資訊不見了事實:底色的資訊不見了

Page 27: Cat Fs Draft

27

Application Application 的問題 的問題 ExampleExample

►請回憶剛剛的 請回憶剛剛的 Picasa2Picasa2►我把原本在桌面的 我把原本在桌面的 Club Club 資料夾『剪下貼資料夾『剪下貼

上』到 上』到 C:\C:\►理論上這個應該是兩個完全相同的資料夾,理論上這個應該是兩個完全相同的資料夾,因此不應該有資料的流失因此不應該有資料的流失

►但是我再次開啟 但是我再次開啟 Picasa2 Picasa2 後……後……

Page 28: Cat Fs Draft

28

Application Application 的連續性問題的連續性問題 (Cont.)(Cont.)

Page 29: Cat Fs Draft

29

Application Application 的連續性問題的連續性問題 (Cont.)(Cont.)

►好,是我太笨,移動了資料夾,當然要叫應好,是我太笨,移動了資料夾,當然要叫應用程式到新的資料夾去找我的照片。用程式到新的資料夾去找我的照片。

►老天保佑,我辛苦建立起來的 老天保佑,我辛苦建立起來的 label label 還在。還在。

►可是事實上……可是事實上……

Page 30: Cat Fs Draft

30

Application Application 的連續性問題的連續性問題 (Cont.)(Cont.)

Page 31: Cat Fs Draft

31

Extended File AttributesExtended File Attributes

► 不過是加個 不過是加個 Tag Tag 屬性,有必要動到檔案系統嗎?屬性,有必要動到檔案系統嗎? 現在的 現在的 ReiserFS ReiserFS 都有提供 都有提供 Extended file attributes Extended file attributes 啦啦

!!

► Extendend File AttributesExtendend File Attributes Key = ValueKey = Value ~/MP3/~/MP3/劉若英劉若英 // 聽說聽說 //幸福的路幸福的路 .mp3.mp3

► tags = tags = 奶茶奶茶 || 聽說聽說 || 音樂音樂

► 架構在原本的 架構在原本的 inode inode 上,如何進行快速搜尋?這樣上,如何進行快速搜尋?這樣速度會與直接搜尋檔名差不多,甚至更慢,因為要速度會與直接搜尋檔名差不多,甚至更慢,因為要再將 再將 tags tags 的內容拆開分析。的內容拆開分析。 為什麼要浪費時間在使用者不感興趣的檔案上?為什麼要浪費時間在使用者不感興趣的檔案上?

Page 32: Cat Fs Draft

32

CAT FilesystemCAT Filesystem

►CATCAT CAT: CAT: 貓,貓, Catlog Catlog 之縮寫之縮寫

CAT And Tags FilesystemCAT And Tags Filesystem►一個具備階層及標籤管理方式的檔案系統一個具備階層及標籤管理方式的檔案系統

►提供使用者一個快速搜尋的系統提供使用者一個快速搜尋的系統 以搜尋速度做為實作的最重要考量以搜尋速度做為實作的最重要考量

Page 33: Cat Fs Draft

33

CatFS’s ApproachCatFS’s Approach

► 以目錄為主要分類架構,標籤搜尋為輔以目錄為主要分類架構,標籤搜尋為輔

► 使用者可以自行設定檔案的標籤屬性使用者可以自行設定檔案的標籤屬性

► 找出奶茶聽說專輯的所有檔案找出奶茶聽說專輯的所有檔案 Search Tag:Search Tag: 聽說聽說

► 找出奶茶很愛很愛你的照片和音樂找出奶茶很愛很愛你的照片和音樂 Search Tag: (Search Tag: ( 照片 照片 OR OR 音樂音樂 ) AND ) AND 很愛很愛你很愛很愛你

► 找出奶茶或南方二重唱的所有 找出奶茶或南方二重唱的所有 MTV MTV 和奶茶的照片和奶茶的照片 Search Tag: ( (Search Tag: ( ( 南方二重唱 南方二重唱 OR OR 奶茶奶茶 ) AND MTV ) OR ) AND MTV ) OR

( ( 奶茶 奶茶 AND AND 照片照片 ))

Page 34: Cat Fs Draft

34

CatFS CatFS 系統特色系統特色

►與現有 與現有 Linux Linux 檔案系統向下相容檔案系統向下相容 Ex: Ext3/ReiserFS…Ex: Ext3/ReiserFS…

►使用者可以自由對任何檔案設定任何標籤使用者可以自由對任何檔案設定任何標籤 當使用者對目錄進行設定標籤的動作時,不論哪一個時刻,該目錄下的檔案即擁有該標籤的屬性當使用者對目錄進行設定標籤的動作時,不論哪一個時刻,該目錄下的檔案即擁有該標籤的屬性

►虛擬目錄虛擬目錄

►資源回收筒資源回收筒

►備份、回存標籤相關資訊備份、回存標籤相關資訊

Page 35: Cat Fs Draft

35

虛擬目錄虛擬目錄

►在不更動使用者的習慣下,以目錄表示出標在不更動使用者的習慣下,以目錄表示出標籤的架構籤的架構

►靜態虛擬目錄靜態虛擬目錄 單一的標籤單一的標籤

可新增、刪除檔案的標籤屬性可新增、刪除檔案的標籤屬性

►動態虛擬目錄動態虛擬目錄 mkdir Tag: (mkdir Tag: ( 奶茶 奶茶 AND MP3)AND MP3) 唯讀唯讀

Page 36: Cat Fs Draft

36

虛擬目錄 虛擬目錄 ExampleExample

$ cd ~/.tags$ cd ~/.tags$ ls$ ls 奶茶 南方二重唱 陳昇奶茶 南方二重唱 陳昇

$ cd $ cd 奶茶奶茶

$ ls $ ls 很愛很愛你很愛很愛你 .mp3 .mp3 後來後來 .mp3 .mp3 相知相守相知相守 .mp3….mp3…$ mv $ mv 相知相守相知相守 .mp3 ../.mp3 ../ 南方二重唱南方二重唱

刪除 相知相守刪除 相知相守 .mp3 .mp3 『奶茶』的標籤,加上『奶茶』的標籤,加上『南方二重唱』的標籤『南方二重唱』的標籤

Page 37: Cat Fs Draft

37

系統架構系統架構

►Tags Tags 的儲存的儲存

►資源回收筒資源回收筒

Page 38: Cat Fs Draft

38

Tags Tags 的儲存的儲存

►在自己的一個檔案中,在使用 在自己的一個檔案中,在使用 Ext3 Ext3 的 的 kernel kernel 下,看起來只是一個檔案。下,看起來只是一個檔案。

►只有 只有 kernel level kernel level 看的到這個 看的到這個 Tags Tags 檔檔案,所有與檔案相關的 案,所有與檔案相關的 system call system call 都都會將這個檔案當做不存在。會將這個檔案當做不存在。

►For Example:For Example: 在 在 Ext3 Ext3 的根目錄,將某個 的根目錄,將某個 entry entry ,指到,指到

特定的 特定的 inode inode ,該 ,該 inode inode 所存的即是這個 所存的即是這個

tags tags 檔。檔。

Page 39: Cat Fs Draft

39

資源回收筒資源回收筒

►對 對 unlik() unlik() 動手角動手角

►只在特定的目錄下,才真的進行 只在特定的目錄下,才真的進行 unlink unlink 的動的動作作

Page 40: Cat Fs Draft

40

待討論的事項待討論的事項

►使用的 使用的 Kernel Kernel 版本版本 2.4 or 2.62.4 or 2.6

►架構在哪種 架構在哪種 FS FS 之上之上 Ext3Ext3 ReiserFSReiserFS

►詳細的 詳細的 Tags Tags 動作動作 是否需要以目錄為單位的 是否需要以目錄為單位的 TagsTags ??

複製檔案是否要複製 複製檔案是否要複製 Tags Tags 屬性屬性

Page 41: Cat Fs Draft

41

ResierFS 3.6 / 4ResierFS 3.6 / 4

►ReiserFS 3.6ReiserFS 3.6 Journalling file system for Linux based on Journalling file system for Linux based on

balance tree algorithms.balance tree algorithms. 對小檔案的處理效能較高對小檔案的處理效能較高

►ReiserFS 4ReiserFS 4 號稱是最快的檔案系統,但個人感覺比 號稱是最快的檔案系統,但個人感覺比 ResierFS ResierFS

3.6 3.6 差了一點,而且很吃 差了一點,而且很吃 CPUCPU Atomic filesystem Atomic filesystem Reiser4 uses dancing trees Reiser4 uses dancing trees

Page 42: Cat Fs Draft

42

需要解決的問題需要解決的問題

►解 解 Muti-User Muti-User 環境下造成的混淆環境下造成的混淆 brianhsu brianhsu 有個 有個 Photo Photo 標籤標籤

mission mission 也有個 也有個 Photo Photo 標籤標籤

►PermissionPermission 是否該讓使用者以標籤做為分享檔案的媒介?是否該讓使用者以標籤做為分享檔案的媒介?

►如何備份複原 如何備份複原 Tag Tag 資料資料 提供相關工具,可以 提供相關工具,可以 export/import Tags export/import Tags 檔案檔案

如何在 如何在 import import 後進行正確性的檢查,或是 後進行正確性的檢查,或是 inode inode 對應的修改?對應的修改?

Page 43: Cat Fs Draft

43

需要解決的問題 需要解決的問題 (Count.)(Count.)

► 如何不讓一般檔案操作的速度降低如何不讓一般檔案操作的速度降低

► 搜尋速度搜尋速度 要如何設計我們的資料結構,才能讓複雜的條件式搜尋要如何設計我們的資料結構,才能讓複雜的條件式搜尋

,能夠在短時間內找出結果。,能夠在短時間內找出結果。

► CacheCache 如何讓虛擬目錄的速度不致於和 如何讓虛擬目錄的速度不致於和 Native Native 相差過多?相差過多?

► Tags Tags 的連續性的連續性 在使用者 在使用者 cp/mv/rm cp/mv/rm 檔案時,如何能夠維持檔案與 檔案時,如何能夠維持檔案與 tag tag

的一致性,並且不致於拖累這些操作的時間。的一致性,並且不致於拖累這些操作的時間。

Page 44: Cat Fs Draft

44

需要解決的問題 需要解決的問題 (Count.)(Count.)

►Tags Tags 正確性的檢查 正確性的檢查 (fsck (fsck 的處理的處理 )) 感謝 感謝 SayYA BBSSayYA BBS 上的 上的 anton anton 提出這個問題提出這個問題

如果 如果 label label 與檔案不一致,如何處理?與檔案不一致,如何處理?►正確的 正確的 Tag Tag 對到存在但已損壞的檔案 對到存在但已損壞的檔案 =>=> 不理他,不理他,就像一個檔名可能對到一個損壞的檔案。就像一個檔名可能對到一個損壞的檔案。

►Tag Tag 對應到一個不存在的檔案 對應到一個不存在的檔案 =>=>應該要將該 應該要將該 tag tag 中的那個 中的那個 entry entry 清掉,不過在正常的情況下不應該發清掉,不過在正常的情況下不應該發生,因為理論上在刪掉一個檔案時,生,因為理論上在刪掉一個檔案時, kernel kernel 就應該要就應該要把那 把那 Tag Tag 清掉。清掉。

►Tag Tag 對應到不是當初使用者指定的檔案 對應到不是當初使用者指定的檔案 => ……=> ……

Page 45: Cat Fs Draft

45

需要解決的問題 需要解決的問題 (Count.)(Count.)

►與現有指令以及應用程式的整合與現有指令以及應用程式的整合 Kernel Kernel 與 與 User level User level 的切割的切割

Page 46: Cat Fs Draft

46

TODO ListTODO List

►弄清楚 弄清楚 VFS/Ext3/Kernel Module VFS/Ext3/Kernel Module 的架構的架構

►在原有的基礎下設計我們的相關資料結構在原有的基礎下設計我們的相關資料結構

►實作 實作 Kernel Kernel 層層

►實作 實作 User Application User Application 層層