上次有講到ZFS,是一種先進的文件系统"格式"。
今天要來學習整個 UNIX 文件系统結構的基本知識!
本文參考 UNIX:The Textbook ,3 ed 這本教科書,大家可以去找找。
在UNIX操作系統中,一且都視為文件 (file),文件其實就是一個連續的位元組,不論是網路介面卡、硬碟驅動、鍵盤滑鼠、印表機、純文字檔、執行檔、通通都當作是文件(file)。
• Simple/ordinary file (普通文件)
• Directory (目錄)
• Symbolic (soft) link (符號文件)
• Character special file 文字特殊文件 (我還不知道這是啥)
• Block special file 區塊特殊文件 (我還不知道這是啥)
• Named pipe (FIFO) 隊列?!
• Socket 套接字?!
普通文件包含很多,像是圖片、MP3、影像、程式的原始碼、可執行檔、資料庫工具、編譯器、圖形軟體、瀏覽器,都算普通文件!!! 且它們之間沒有區別,都一樣是連續的位元組。
文件的名稱,可以隨自己喜歡設定,但是不能夠超過255個字符!
這可以透過指令查詢:
$ getconf _XOPEN_NAME_MAX
255
你也可以替文件創造一個自己喜歡的副檔名,像是 .good、.bad、.haha ....之類的,因為副檔名對UNIX來說沒有差別,但是要注意很多程式軟體還是有要求特定的副檔名,例如 C 編譯器要求程式碼檔名一定要 .c 。
任何操作系統中的目錄文件都包含一系列目錄條目 (directory entries),用陣列(array)的方式存放,
目錄條目(directory entry)的結構:
|innode | 文件名稱 |
innode
是4個byte大小的索引值,包含了像是文件大小之類的屬性。
當我們建立一個文件時,系統kernel會自動給文件一個innode。
連結類型的文件,意思就是指向
一個存在文件的文件,連結文件的內容是,某個已存在文件的路徑名稱。
所以說,不需要用複製的方式,你可以把某個文件,用符號連結的方式,同時連結到很多其他目錄裡,節省空間。
有點像,windows系統裡的"捷徑"的概念吧。