Linux是目前蠻熱門的一個操作系統
很多人都知道它很是免費的
而且它也很穩定
更重要的是
它不會出現藍色畫面
可是
你知道嗎? Linux所支持的檔案系統高達十幾個
除了為它量身打造的Ext
之外
它還支持了Minix
FAT
VFAT
NFS
NTFS…等等
有沒有想過
它是怎麼做到使得可以同時支持十多個檔案系統呢? 沒錯
就是VFS
也就是這篇文章的重點
在這篇文章裡
我會跟各位介紹Linux檔案系統的結構
VFS所扮演的角色
Linux檔案系統結構
圖
Linux的檔案系統在外型上其實跟UNIX檔案系統是一樣的
它是一個反轉過來的樹
最上層是系統的根目錄
也就是
/
系統根目錄底下可以是目錄也可以是檔案
目錄裡也可以包含目錄
檔案等
如此就形成一個反轉過來的樹
我們知道
在Windows
如果你有二個partition
一個叫C
另一個叫D
當你要到D這個partition時
只要打
D:
就可以了
但是在Linux裡可不是這樣
要去讀取另一個partition的資料必須要經由mount的動作
像
mount
t ext
/dev/hda
/mnt
就會將硬盤第三個partition掛在/mnt這個目錄底下
Mount完之後
/mnt原本的內容會看不到
只會看到hda
裡的內容
其中/mnt我們稱為hda
的mount point
而/mnt這個目錄則是被hda
所cover
經過mount以後
我們就可以經由/mnt去讀取hda
的內容
就好象hda
的內容本來就放在/mnt底下一樣
整個過程
如圖
所示
圖
(a)是原本的檔案結構
圖
(b)則是hda
這個partition的內容
將hda
mount到/mnt之後
整個檔案系統就變成圖
(c)的樣子
不管如何
Linux會保持其檔案系統為一個tree的形狀
這樣mount下去
我們很容易可以推想到
從根目錄開始的這個tree很有可能包含好幾種的檔案系統
可能掛在/mnt上的是Ext
檔案系統
掛在/home上的是FAT
而掛在/cdrom上的則是iso
檔案系統
我們知道
當使用者去讀取這些目錄裡的內容時
他本身是不用去管這個目錄掛的檔案系統是什麼
基本
使用者也不會感到有什麼不同
而就programmer的觀點來看
我們也不會說去讀/mnt裡的檔案和去讀/home裡的檔案要下不同的參數
Linux是怎麼做到這一點的呢? 它就是利用VFS來做到的
From:http://tw.wingwit.com/Article/program/Oracle/201311/17558.html