SlideShare a Scribd company logo
1 of 46
Download to read offline
CAT Filesystem
Linux 下的目錄與標籤式檔案系統
        Draft 0.2


   墳墓( Brian Hsu )

                     1
授權聲明
► 本文以 『 Creative
             Commons 姓名標示 - 非
  商業性 - 禁止改作 2.0 台灣』 進行授權
► 您可以在下列的條件下自由重製、散布、展
  示及演出本著作。
     姓名標示:您必須保留原作者的姓名標示。
     非商業性:您不得為商業目的而使用本著作。
     禁止改作: 您不得改變、轉變或改作本著作。
► 詳情請見
  
      ttp://creativecommons.org/licenses/by-nc-nd/2.0/tw/
                                                      2
Outline
► 階層式檔案系統架構
► 階層式檔案系統的問題
► 解決方案
    Link ( 捷徑 )
    Application
    全文檢索
    Label (Tag)


                             3
Outline
► 是否需要發展一套               FS
     Application 的問題
     Extendend File Attributes
► CatFS Approach
► CatFS 系統特色
► 系統架構
► 待討論事項
► 要解決的問題
► TODO List                       4
階層式檔案系統
► 樹狀節構
► 所有資料都可分為兩種基本型態
  目錄
  檔案
► 檔案一定在某一個目錄之下




                   5
階層式檔案系統的問題
► 階層式檔案系統的基本特性
  一個檔案只能在一個目錄之中
► 現實的生活中
  一個檔案可能同時屬於好幾個分類
  ►與『一個檔案只能在一個目錄』相扺觸




                       6
階層式檔案系統的問題:
        Example
            ~
            +--Photo
                          | +-- 社團
                          | | +--- 園遊會
►   我所規劃的檔案架構如 | | +--- 迎新茶會
    右                     | | +--- 社遊
                          | +-- 奶茶
►   社團照片以活動為分類 |               +--- 桌布
►   每個檔案都有特定的目 |               +--- 聽說宣傳照
                          |
    錄可以存放                 +--MP3
     Ex:                 | +-- 奶茶
     奶茶的歌放在 ~/MP3/ 奶 | | +--- 很愛很愛妳
                          | | +--- 單身日誌演唱會
      茶 /[ 專輯名稱 ] 中
                          | | +--- 聽說
     奶茶的照片放在             | +-- 陳昇
      ~/Photo/ 奶茶 /[ 分類 ] |    +--- 美麗寶島跨年演唱會
      中                   +--MTV
                            +-- 奶茶
►   世界一片美好?                                     7
                            +-- 陳昇
階層式檔案系統的問題:
       Example
► 我要如何在所有的社團照片中,找到特定主
題的照片?
  Ex: cosplay 、木偶、社團合照,特定社員… etc




                                    8
階層式檔案系統的問題:
    Example
► 我的檔案以檔案類型分類
    音樂   => ~/MP3
    照片   => ~/Photo
    影片   => ~/MTV
► 如何做到下面的事情?
    找出奶茶聽說專輯的所有檔案 (MP3,MTV,Photo)
    找出奶茶很愛很愛你的照片和音樂
    找出奶茶或南方二重唱的所有 MTV 和奶茶的照片
► 在目錄的架構下,以上的所有都是癡心妄想!
                                 9
解決的方式
► Link ( 捷徑 )
► Application
► 全文搜尋
► Label
   Mac OS X
   Gmail/Picasa2



                        10
解決方法: Link

► 把我希望放在一起的檔案,建立一個目
錄,並將原始檔 link 在那個目錄內。
  Ex:
  建一個『聽說照片 MV 』的資料夾,再把所
   有相關檔案在該目錄中建立捷俓。
► 幾乎所有作業系統都有提供
    Windows => 捷徑
    Un*x => Soft Link
                         11
Link 的問題
► Soft   link
   原始檔案刪除, soft link 隨之無效
► Hard   link
   把主目錄裡的檔案刪除,卻無法釋放磁碟空間
► Link無法與主目錄裡的更動自動同步
► 人是多變的,除非用窮舉,否則不可能我要
  找任何關鍵字的組合時都能馬上找到對應的
  目錄
► Example: 五個分類
   C5,1 + C5,2 + C5,3 + C5,4 + C5,5 = 31 !!   12
解決方法: Application
► 利用軟體進行檔案的管理
    iTunes
    Picasa2
► 只能進行特定檔案類型的管理
  iTunes => 音樂
  Picasa2 => 照片



                            13
解決方法: Application (Cont.)
► 如果我想用統一的方式管理我電腦上的所有
檔案?
  Ex: MP3/MPG/JPEG/TXT/PDF…etc.
► 確實有人在檔案管理員程式加入                   metadata
的功能。
  Ex: GNOME Nautilus




                                              14
解決方法:全文檢索
►   電腦是很笨的,特別在斷字、斷句、斷詞以
    及文章脈絡的判斷
►   Google Desktop Search
►   無法進行精確的搜尋
►   沒有義意的照片編號,如何搜尋
►   Example:
       內文有『奶茶』兩字的檔案,不一定就與劉若
        英有關係
       對劉若英的訪問,或許會提到陳昇或張艾嘉,
        但不應該被分到『陳昇』或『張艾嘉』的分類   15
16
17
解決方法: Label
► 替檔案加上一個特殊的屬性: Label (Tag)
► 目前使用 Label 功能的有以下兩個系統
  Mac OS X Finder
  Gmail/Picasa2




                              18
Mac OS X Label
► 以顏色區分,使用者能設定    label 名稱
► 一個檔案只能設定一個 label
   就某方面來說,這不過是從『一個檔案只能在一
    個目錄內』 => 『一個檔案只能在兩個目錄
    內』
► Label數目有限制,只能使用內建的顏色,
  無法新增
► Mac OS X 雖然有 label ,但仍無法解決
  P8,9 所提出的問題
                               19
20
Gmail/Picasa Label

► 沒有階層式的目錄架構,只有         Label
  目錄在多層次的組織上,依然很有用,但
   GMail 不支援
► 一封信可以有多個      Label
► Label 數目沒有限制
► Gmail 可以用 Label 搜尋,但無法進行
  複雜的條件判斷。
► Picasa2 只能處理 and 運算元
                                21
Gmail/Picasa Label (Cont.)




                             22
Gmail/Picasa Label (Cont.)




                             23
Gmail/Picasa Label (Cont.)




                             24
檔案系統 vs 應用程式?
► 要實作 Label (Tags) 真的需要搞到檔案系統
  嗎?畢竟大不了我寫隻什麼檔式都可以吃,
  又可以設 label 的檔案管理員嘛!
► 再不然,目前許多的檔案系統也提供使用設
  定額外的屬性,實在沒必要發展一套新的檔
  案系統。



                            25
Application 的問題
► 連續性
   在 Un*x 的世界裡,圖型界面的檔案管理員有許多種
    (Ex: KDE,GNOME…etc)
   如果使用 Application 來記錄 Tags ,會發生不連續性
    的問題。
► Example:
     在 Nautilus 中設定一個 foo 這個目錄的底色
     在 command line 下 mv foo bar
     理論:這只是改名,不應該把底色改掉
     事實:底色的資訊不見了

                                         26
Application 的問題 Example
► 請回憶剛剛的  Picasa2
► 我把原本在桌面的 Club 資料夾『剪下貼
  上』到 C:
► 理論上這個應該是兩個完全相同的資料夾,
  因此不應該有資料的流失
► 但是我再次開啟 Picasa2 後……




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




                         28
Application 的連續性問題 (Cont.)
► 好,是我太笨,移動了資料夾,當然要叫應
  用程式到新的資料夾去找我的照片。
► 老天保佑,我辛苦建立起來的 label 還在。
► 可是事實上……




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




                         30
Extended File Attributes
► 不過是加個          Tag 屬性,有必要動到檔案系統嗎?
   現在的 ReiserFS 都有提供 Extended file attributes 啦
    !
► Extendend    File Attributes
     Key = Value
     ~/MP3/ 劉若英 / 聽說 / 幸福的路 .mp3
      ►   tags = 奶茶 | 聽說 | 音樂
► 架構在原本的   inode 上,如何進行快速搜尋?這樣
 速度會與直接搜尋檔名差不多,甚至更慢,因為要
 再將 tags 的內容拆開分析。
   為什麼要浪費時間在使用者不感興趣的檔案上?
                                                   31
CAT Filesystem
► CAT
     CAT: 貓, Catlog 之縮寫
     CAT And Tags Filesystem
► 一個具備階層及標籤管理方式的檔案系統
► 提供使用者一個快速搜尋的系統
   以搜尋速度做為實作的最重要考量



                                32
CatFS’s Approach
► 以目錄為主要分類架構,標籤搜尋為輔
► 使用者可以自行設定檔案的標籤屬性
► 找出奶茶聽說專輯的所有檔案
  Search Tag: 聽說
► 找出奶茶很愛很愛你的照片和音樂
  Search Tag: ( 照片 OR 音樂 ) AND 很愛很愛你
► 找出奶茶或南方二重唱的所有             MTV 和奶茶的照片
  Search Tag: ( ( 南方二重唱 OR 奶茶 ) AND MTV ) OR
                          ( 奶茶 AND 照片 )

                                                33
CatFS 系統特色
► 與現有   Linux 檔案系統向下相容
  Ex: Ext3/ReiserFS…
► 使用者可以自由對任何檔案設定任何標籤
  當使用者對目錄進行設定標籤的動作時,不論哪一個
► 虛擬目錄
► 資源回收筒
► 備份、回存標籤相關資訊


                         34
虛擬目錄
► 在不更動使用者的習慣下,以目錄表示出標
  籤的架構
► 靜態虛擬目錄
  單一的標籤
  可新增、刪除檔案的標籤屬性
► 動態虛擬目錄
    mkdir Tag: ( 奶茶 AND MP3)
    唯讀
                                35
虛擬目錄 Example
$ cd ~/.tags
$ ls
  奶茶 南方二重唱 陳昇
$ cd 奶茶
$ ls
  很愛很愛你 .mp3 後來 .mp3 相知相守 .mp3…
$ mv 相知相守 .mp3 ../ 南方二重唱
   刪除 相知相守 .mp3 『奶茶』的標籤,加上
  『南方二重唱』的標籤

                                  36
系統架構
► Tags
     的儲存
► 資源回收筒




                  37
Tags 的儲存

► 在自己的一個檔案中,在使用         Ext3 的
  kernel 下,看起來只是一個檔案。
► 只有 kernel level 看的到這個 Tags 檔
  案,所有與檔案相關的 system call 都
  會將這個檔案當做不存在。
► For Example:
  在 Ext3 的根目錄,將某個 entry ,指到
   特定的 inode ,該 inode 所存的即是這個
   tags 檔。                   38
資源回收筒
►對  unlik() 動手角
► 只在特定的目錄下,才真的進行 unlink 的動
  作




                         39
待討論的事項
► 使用的    Kernel 版本
  2.4 or 2.6
► 架構在哪種         FS 之上
  Ext3
  ReiserFS
► 詳細的    Tags 動作
  是否需要以目錄為單位的 Tags ?
  複製檔案是否要複製 Tags 屬性
                         40
ResierFS 3.6 / 4
► ReiserFS   3.6
   Journalling file system for Linux based on
    balance tree algorithms.
   對小檔案的處理效能較高
► ReiserFS   4
   號稱是最快的檔案系統,但個人感覺比 ResierFS
    3.6 差了一點,而且很吃 CPU
   Atomic filesystem
   Reiser4 uses dancing trees

                                                 41
需要解決的問題
►解   Muti-User 環境下造成的混淆
   brianhsu 有個 Photo 標籤
   mission 也有個 Photo 標籤
► Permission
   是否該讓使用者以標籤做為分享檔案的媒介?
► 如何備份複原       Tag 資料
   提供相關工具,可以 export/import Tags 檔案
   如何在 import 後進行正確性的檢查,或是
    inode 對應的修改?
                                      42
需要解決的問題 (Count.)
► 如何不讓一般檔案操作的速度降低
► 搜尋速度
   要如何設計我們的資料結構,才能讓複雜的條件式搜尋
    ,能夠在短時間內找出結果。
► Cache
   如何讓虛擬目錄的速度不致於和 Native 相差過多?
► Tags   的連續性
   在使用者 cp/mv/rm 檔案時,如何能夠維持檔案與 tag
    的一致性,並且不致於拖累這些操作的時間。

                                      43
需要解決的問題 (Count.)
► Tags   正確性的檢查 (fsck 的處理 )
     感謝   SayYA BBS 上的 anton 提出這個問題
     如果   label 與檔案不一致,如何處理?
      ►正確的  Tag 對到存在但已損壞的檔案 => 不理他,
       就像一個檔名可能對到一個損壞的檔案。
      ►Tag 對應到一個不存在的檔案 => 應該要將該 tag
       中的那個 entry 清掉,不過在正常的情況下不應該發
       生,因為理論上在刪掉一個檔案時, kernel 就應該要
       把那 Tag 清掉。
      ►Tag 對應到不是當初使用者指定的檔案 => ……

                                       44
需要解決的問題 (Count.)
► 與現有指令以及應用程式的整合
  Kernel 與 User level 的切割




                             45
TODO List
► 弄清楚  VFS/Ext3/Kernel Module 的架構
► 在原有的基礎下設計我們的相關資料結構
► 實作 Kernel 層
► 實作 User Application 層




                                    46

More Related Content

Viewers also liked

自由軟體讓你五分鐘上新聞
自由軟體讓你五分鐘上新聞自由軟體讓你五分鐘上新聞
自由軟體讓你五分鐘上新聞Brian Hsu
 
Apresentacao Teleconferencia2 Q06 Eng
Apresentacao Teleconferencia2 Q06 EngApresentacao Teleconferencia2 Q06 Eng
Apresentacao Teleconferencia2 Q06 EngArteris S.A.
 
Catalogo de Oferta Ecoturismo Comunitario Guanventuras, cooperativa de mujer...
Catalogo de Oferta Ecoturismo Comunitario  Guanventuras, cooperativa de mujer...Catalogo de Oferta Ecoturismo Comunitario  Guanventuras, cooperativa de mujer...
Catalogo de Oferta Ecoturismo Comunitario Guanventuras, cooperativa de mujer...Fundación Taigüey
 
個人簡介
個人簡介個人簡介
個人簡介Brian Hsu
 
Ontology-based Content Management System (ICIM 2008)
Ontology-based Content Management System (ICIM 2008)Ontology-based Content Management System (ICIM 2008)
Ontology-based Content Management System (ICIM 2008)Brian Hsu
 
Apres Call 1 Q09 V2
Apres Call 1 Q09 V2Apres Call 1 Q09 V2
Apres Call 1 Q09 V2Arteris S.A.
 
8 conference call 4 q09
8   conference call 4 q098   conference call 4 q09
8 conference call 4 q09Arteris S.A.
 
Programming Android Application in Scala.
Programming Android Application in Scala.Programming Android Application in Scala.
Programming Android Application in Scala.Brian Hsu
 
Company presentation
Company presentationCompany presentation
Company presentationArteris S.A.
 

Viewers also liked (13)

自由軟體讓你五分鐘上新聞
自由軟體讓你五分鐘上新聞自由軟體讓你五分鐘上新聞
自由軟體讓你五分鐘上新聞
 
Apresentacao Teleconferencia2 Q06 Eng
Apresentacao Teleconferencia2 Q06 EngApresentacao Teleconferencia2 Q06 Eng
Apresentacao Teleconferencia2 Q06 Eng
 
Catalogo de Oferta Ecoturismo Comunitario Guanventuras, cooperativa de mujer...
Catalogo de Oferta Ecoturismo Comunitario  Guanventuras, cooperativa de mujer...Catalogo de Oferta Ecoturismo Comunitario  Guanventuras, cooperativa de mujer...
Catalogo de Oferta Ecoturismo Comunitario Guanventuras, cooperativa de mujer...
 
個人簡介
個人簡介個人簡介
個人簡介
 
Ohl Apr Eng
Ohl Apr EngOhl Apr Eng
Ohl Apr Eng
 
Ontology-based Content Management System (ICIM 2008)
Ontology-based Content Management System (ICIM 2008)Ontology-based Content Management System (ICIM 2008)
Ontology-based Content Management System (ICIM 2008)
 
Unicode ncr
Unicode ncrUnicode ncr
Unicode ncr
 
Apres Call 1 Q09 V2
Apres Call 1 Q09 V2Apres Call 1 Q09 V2
Apres Call 1 Q09 V2
 
8 conference call 4 q09
8   conference call 4 q098   conference call 4 q09
8 conference call 4 q09
 
Programming Android Application in Scala.
Programming Android Application in Scala.Programming Android Application in Scala.
Programming Android Application in Scala.
 
Apres Citi V4
Apres Citi V4Apres Citi V4
Apres Citi V4
 
Apres Latibex
Apres LatibexApres Latibex
Apres Latibex
 
Company presentation
Company presentationCompany presentation
Company presentation
 

Cat Fs Draft

  • 1. CAT Filesystem Linux 下的目錄與標籤式檔案系統 Draft 0.2 墳墓( Brian Hsu ) 1
  • 2. 授權聲明 ► 本文以 『 Creative Commons 姓名標示 - 非 商業性 - 禁止改作 2.0 台灣』 進行授權 ► 您可以在下列的條件下自由重製、散布、展 示及演出本著作。  姓名標示:您必須保留原作者的姓名標示。  非商業性:您不得為商業目的而使用本著作。  禁止改作: 您不得改變、轉變或改作本著作。 ► 詳情請見  ttp://creativecommons.org/licenses/by-nc-nd/2.0/tw/ 2
  • 3. Outline ► 階層式檔案系統架構 ► 階層式檔案系統的問題 ► 解決方案  Link ( 捷徑 )  Application  全文檢索  Label (Tag) 3
  • 4. Outline ► 是否需要發展一套 FS  Application 的問題  Extendend File Attributes ► CatFS Approach ► CatFS 系統特色 ► 系統架構 ► 待討論事項 ► 要解決的問題 ► TODO List 4
  • 5. 階層式檔案系統 ► 樹狀節構 ► 所有資料都可分為兩種基本型態  目錄  檔案 ► 檔案一定在某一個目錄之下 5
  • 6. 階層式檔案系統的問題 ► 階層式檔案系統的基本特性  一個檔案只能在一個目錄之中 ► 現實的生活中  一個檔案可能同時屬於好幾個分類 ►與『一個檔案只能在一個目錄』相扺觸 6
  • 7. 階層式檔案系統的問題: Example ~ +--Photo | +-- 社團 | | +--- 園遊會 ► 我所規劃的檔案架構如 | | +--- 迎新茶會 右 | | +--- 社遊 | +-- 奶茶 ► 社團照片以活動為分類 | +--- 桌布 ► 每個檔案都有特定的目 | +--- 聽說宣傳照 | 錄可以存放 +--MP3  Ex: | +-- 奶茶  奶茶的歌放在 ~/MP3/ 奶 | | +--- 很愛很愛妳 | | +--- 單身日誌演唱會 茶 /[ 專輯名稱 ] 中 | | +--- 聽說  奶茶的照片放在 | +-- 陳昇 ~/Photo/ 奶茶 /[ 分類 ] | +--- 美麗寶島跨年演唱會 中 +--MTV +-- 奶茶 ► 世界一片美好? 7 +-- 陳昇
  • 8. 階層式檔案系統的問題: Example ► 我要如何在所有的社團照片中,找到特定主 題的照片?  Ex: cosplay 、木偶、社團合照,特定社員… etc 8
  • 9. 階層式檔案系統的問題: Example ► 我的檔案以檔案類型分類  音樂 => ~/MP3  照片 => ~/Photo  影片 => ~/MTV ► 如何做到下面的事情?  找出奶茶聽說專輯的所有檔案 (MP3,MTV,Photo)  找出奶茶很愛很愛你的照片和音樂  找出奶茶或南方二重唱的所有 MTV 和奶茶的照片 ► 在目錄的架構下,以上的所有都是癡心妄想! 9
  • 10. 解決的方式 ► Link ( 捷徑 ) ► Application ► 全文搜尋 ► Label  Mac OS X  Gmail/Picasa2 10
  • 11. 解決方法: Link ► 把我希望放在一起的檔案,建立一個目 錄,並將原始檔 link 在那個目錄內。  Ex:  建一個『聽說照片 MV 』的資料夾,再把所 有相關檔案在該目錄中建立捷俓。 ► 幾乎所有作業系統都有提供  Windows => 捷徑  Un*x => Soft Link 11
  • 12. Link 的問題 ► Soft link  原始檔案刪除, soft link 隨之無效 ► Hard link  把主目錄裡的檔案刪除,卻無法釋放磁碟空間 ► Link無法與主目錄裡的更動自動同步 ► 人是多變的,除非用窮舉,否則不可能我要 找任何關鍵字的組合時都能馬上找到對應的 目錄 ► Example: 五個分類  C5,1 + C5,2 + C5,3 + C5,4 + C5,5 = 31 !! 12
  • 13. 解決方法: Application ► 利用軟體進行檔案的管理  iTunes  Picasa2 ► 只能進行特定檔案類型的管理  iTunes => 音樂  Picasa2 => 照片 13
  • 14. 解決方法: Application (Cont.) ► 如果我想用統一的方式管理我電腦上的所有 檔案?  Ex: MP3/MPG/JPEG/TXT/PDF…etc. ► 確實有人在檔案管理員程式加入 metadata 的功能。  Ex: GNOME Nautilus 14
  • 15. 解決方法:全文檢索 ► 電腦是很笨的,特別在斷字、斷句、斷詞以 及文章脈絡的判斷 ► Google Desktop Search ► 無法進行精確的搜尋 ► 沒有義意的照片編號,如何搜尋 ► Example:  內文有『奶茶』兩字的檔案,不一定就與劉若 英有關係  對劉若英的訪問,或許會提到陳昇或張艾嘉, 但不應該被分到『陳昇』或『張艾嘉』的分類 15
  • 16. 16
  • 17. 17
  • 18. 解決方法: Label ► 替檔案加上一個特殊的屬性: Label (Tag) ► 目前使用 Label 功能的有以下兩個系統  Mac OS X Finder  Gmail/Picasa2 18
  • 19. Mac OS X Label ► 以顏色區分,使用者能設定 label 名稱 ► 一個檔案只能設定一個 label  就某方面來說,這不過是從『一個檔案只能在一 個目錄內』 => 『一個檔案只能在兩個目錄 內』 ► Label數目有限制,只能使用內建的顏色, 無法新增 ► Mac OS X 雖然有 label ,但仍無法解決 P8,9 所提出的問題 19
  • 20. 20
  • 21. Gmail/Picasa Label ► 沒有階層式的目錄架構,只有 Label  目錄在多層次的組織上,依然很有用,但 GMail 不支援 ► 一封信可以有多個 Label ► Label 數目沒有限制 ► Gmail 可以用 Label 搜尋,但無法進行 複雜的條件判斷。 ► Picasa2 只能處理 and 運算元 21
  • 25. 檔案系統 vs 應用程式? ► 要實作 Label (Tags) 真的需要搞到檔案系統 嗎?畢竟大不了我寫隻什麼檔式都可以吃, 又可以設 label 的檔案管理員嘛! ► 再不然,目前許多的檔案系統也提供使用設 定額外的屬性,實在沒必要發展一套新的檔 案系統。 25
  • 26. Application 的問題 ► 連續性  在 Un*x 的世界裡,圖型界面的檔案管理員有許多種 (Ex: KDE,GNOME…etc)  如果使用 Application 來記錄 Tags ,會發生不連續性 的問題。 ► Example:  在 Nautilus 中設定一個 foo 這個目錄的底色  在 command line 下 mv foo bar  理論:這只是改名,不應該把底色改掉  事實:底色的資訊不見了 26
  • 27. Application 的問題 Example ► 請回憶剛剛的 Picasa2 ► 我把原本在桌面的 Club 資料夾『剪下貼 上』到 C: ► 理論上這個應該是兩個完全相同的資料夾, 因此不應該有資料的流失 ► 但是我再次開啟 Picasa2 後…… 27
  • 29. Application 的連續性問題 (Cont.) ► 好,是我太笨,移動了資料夾,當然要叫應 用程式到新的資料夾去找我的照片。 ► 老天保佑,我辛苦建立起來的 label 還在。 ► 可是事實上…… 29
  • 31. Extended File Attributes ► 不過是加個 Tag 屬性,有必要動到檔案系統嗎?  現在的 ReiserFS 都有提供 Extended file attributes 啦 ! ► Extendend File Attributes  Key = Value  ~/MP3/ 劉若英 / 聽說 / 幸福的路 .mp3 ► tags = 奶茶 | 聽說 | 音樂 ► 架構在原本的 inode 上,如何進行快速搜尋?這樣 速度會與直接搜尋檔名差不多,甚至更慢,因為要 再將 tags 的內容拆開分析。  為什麼要浪費時間在使用者不感興趣的檔案上? 31
  • 32. CAT Filesystem ► CAT  CAT: 貓, Catlog 之縮寫  CAT And Tags Filesystem ► 一個具備階層及標籤管理方式的檔案系統 ► 提供使用者一個快速搜尋的系統  以搜尋速度做為實作的最重要考量 32
  • 33. CatFS’s Approach ► 以目錄為主要分類架構,標籤搜尋為輔 ► 使用者可以自行設定檔案的標籤屬性 ► 找出奶茶聽說專輯的所有檔案  Search Tag: 聽說 ► 找出奶茶很愛很愛你的照片和音樂  Search Tag: ( 照片 OR 音樂 ) AND 很愛很愛你 ► 找出奶茶或南方二重唱的所有 MTV 和奶茶的照片  Search Tag: ( ( 南方二重唱 OR 奶茶 ) AND MTV ) OR ( 奶茶 AND 照片 ) 33
  • 34. CatFS 系統特色 ► 與現有 Linux 檔案系統向下相容  Ex: Ext3/ReiserFS… ► 使用者可以自由對任何檔案設定任何標籤  當使用者對目錄進行設定標籤的動作時,不論哪一個 ► 虛擬目錄 ► 資源回收筒 ► 備份、回存標籤相關資訊 34
  • 35. 虛擬目錄 ► 在不更動使用者的習慣下,以目錄表示出標 籤的架構 ► 靜態虛擬目錄  單一的標籤  可新增、刪除檔案的標籤屬性 ► 動態虛擬目錄  mkdir Tag: ( 奶茶 AND MP3)  唯讀 35
  • 36. 虛擬目錄 Example $ cd ~/.tags $ ls 奶茶 南方二重唱 陳昇 $ cd 奶茶 $ ls 很愛很愛你 .mp3 後來 .mp3 相知相守 .mp3… $ mv 相知相守 .mp3 ../ 南方二重唱  刪除 相知相守 .mp3 『奶茶』的標籤,加上 『南方二重唱』的標籤 36
  • 37. 系統架構 ► Tags 的儲存 ► 資源回收筒 37
  • 38. Tags 的儲存 ► 在自己的一個檔案中,在使用 Ext3 的 kernel 下,看起來只是一個檔案。 ► 只有 kernel level 看的到這個 Tags 檔 案,所有與檔案相關的 system call 都 會將這個檔案當做不存在。 ► For Example:  在 Ext3 的根目錄,將某個 entry ,指到 特定的 inode ,該 inode 所存的即是這個 tags 檔。 38
  • 39. 資源回收筒 ►對 unlik() 動手角 ► 只在特定的目錄下,才真的進行 unlink 的動 作 39
  • 40. 待討論的事項 ► 使用的 Kernel 版本  2.4 or 2.6 ► 架構在哪種 FS 之上  Ext3  ReiserFS ► 詳細的 Tags 動作  是否需要以目錄為單位的 Tags ?  複製檔案是否要複製 Tags 屬性 40
  • 41. ResierFS 3.6 / 4 ► ReiserFS 3.6  Journalling file system for Linux based on balance tree algorithms.  對小檔案的處理效能較高 ► ReiserFS 4  號稱是最快的檔案系統,但個人感覺比 ResierFS 3.6 差了一點,而且很吃 CPU  Atomic filesystem  Reiser4 uses dancing trees 41
  • 42. 需要解決的問題 ►解 Muti-User 環境下造成的混淆  brianhsu 有個 Photo 標籤  mission 也有個 Photo 標籤 ► Permission  是否該讓使用者以標籤做為分享檔案的媒介? ► 如何備份複原 Tag 資料  提供相關工具,可以 export/import Tags 檔案  如何在 import 後進行正確性的檢查,或是 inode 對應的修改? 42
  • 43. 需要解決的問題 (Count.) ► 如何不讓一般檔案操作的速度降低 ► 搜尋速度  要如何設計我們的資料結構,才能讓複雜的條件式搜尋 ,能夠在短時間內找出結果。 ► Cache  如何讓虛擬目錄的速度不致於和 Native 相差過多? ► Tags 的連續性  在使用者 cp/mv/rm 檔案時,如何能夠維持檔案與 tag 的一致性,並且不致於拖累這些操作的時間。 43
  • 44. 需要解決的問題 (Count.) ► Tags 正確性的檢查 (fsck 的處理 )  感謝 SayYA BBS 上的 anton 提出這個問題  如果 label 與檔案不一致,如何處理? ►正確的 Tag 對到存在但已損壞的檔案 => 不理他, 就像一個檔名可能對到一個損壞的檔案。 ►Tag 對應到一個不存在的檔案 => 應該要將該 tag 中的那個 entry 清掉,不過在正常的情況下不應該發 生,因為理論上在刪掉一個檔案時, kernel 就應該要 把那 Tag 清掉。 ►Tag 對應到不是當初使用者指定的檔案 => …… 44
  • 46. TODO List ► 弄清楚 VFS/Ext3/Kernel Module 的架構 ► 在原有的基礎下設計我們的相關資料結構 ► 實作 Kernel 層 ► 實作 User Application 層 46