Linux系統裡的檔案到底是怎麼存儲的,這個問題是一直是對于Linux初學者來說非常難了解但又必須要了解的,最近在阿銘Linux論壇裡看到一篇文章,下面做一個整理分享給各位熱愛Linux的兄弟姐妹們。
一個檔案由目錄項、inode和資料塊組成:
目錄項:包括檔案名和inode節點号。
Inode:又稱檔案索引節點,包含檔案的基礎資訊以及資料塊的指針。
資料塊:包含檔案的具體内容。
了解inode,要從檔案儲存說起。檔案儲存在硬碟上,硬碟的最小存儲機關叫做"扇區"(Sector),每個扇區儲存512位元組(相當于0.5KB)。
作業系統讀取硬碟的時候,不會一個扇區一個扇區地讀取,這樣效率太低,而是一次性連續讀取多個扇區,即一次性讀取一個"塊"(block)。這種由多個扇區組成的"塊",是檔案存取的最小機關。"塊"的大小,最常見的是4KB,即連續八個 sector組成一個 block。
檔案資料都儲存在"塊"中,那麼很顯然,我們還必須找到一個地方儲存檔案的元資訊,比如檔案的建立者、檔案的建立日期、檔案的大小等等。這種儲存檔案元資訊的區域就叫做inode,中文譯名為"索引節點"。
inode包含檔案的元資訊,具體來說有以下内容:
檔案的位元組數。
檔案擁有者的User ID。
檔案的Group ID。
檔案的讀、寫、執行權限。
檔案的時間戳,共有三個:ctime指inode上一次變動的時間,mtime指檔案内容上一次變動的時間,atime指檔案上一次打開的時間。
連結數,即有多少檔案名指向這個inode。
檔案資料block的位置。
總之,除了檔案名以外的所有檔案資訊,都存在inode之中。至于為什麼沒有檔案名,下文會有詳細解釋。