首頁>Club>
6
回覆列表
  • 1 # 1234567啊額

    大部分的Linux檔案系統(如ext2、ext3)規定,一個檔案由目錄項、inode和資料塊組成:

    目錄項:包括檔名和inode節點號。

    Inode:又稱檔案索引節點,包含檔案的基礎資訊以及資料塊的指標。

    資料塊:包含檔案的具體內容。

    一、目錄塊

    Linux系統中,目錄(directory)也是一種檔案。開啟目錄,實際上就是開啟目錄檔案。

    目錄檔案的結構非常簡單,就是一系列目錄項(dirent)的列表。每個目錄項,由兩部分組成:所包含檔案的檔名,以及該檔名對應的inode號碼。

    ls命令只列出目錄檔案中的所有檔名: ls /etc

    ls -i命令列出整個目錄檔案,即檔名和inode號碼: ls -i /etc

    如果要檢視檔案的詳細資訊,就必須根據inode號碼,訪問inode節點,讀取資訊。ls -l命令列出檔案的詳細資訊。 ls -l /etc

    二、Inode

    1、inode是什麼

    理解inode,要從檔案儲存說起。

    檔案儲存在硬碟上,硬碟的最小儲存單位叫做“扇區”(Sector)。每個扇區儲存512位元組(相當於0.5KB)。

    作業系統讀取硬碟的時候,不會一個個扇區的讀取,這樣效率太低,而是一次性連續讀取多個扇區,即一次性讀取一個“塊”(block)。這種由多個扇區組成的“塊”,是檔案存取的最小單位。“塊”的大小,最常見的是4KB,即連續八個sector組成一個block。

    檔案資料都儲存在“塊”中,那麼很顯然,我們還必須找到一個地方儲存檔案的“元資訊”,比如檔案的建立者、檔案的建立日期、檔案的大小等等。這種儲存檔案元資訊的區域就叫做inode,中文譯名為"索引節點"。

    inode包含檔案的元資訊內容(除了檔名之外所有的檔案資訊)

    檔案的位元組數。

    檔案型別。

    檔案擁有者的User ID。

    檔案的Group ID。

    檔案的讀、寫、執行許可權。

    檔案的時間戳,共有三個:ctime指inode上一次變動的時間,mtime指檔案內容上一次變動的時間,atime指檔案上一次開啟的時間。

    連結數,即有多少檔名指向這個inode。

    檔案資料block的位置(資料塊指標)。

    2、inode的大小

    inode也會消耗硬碟空間,所以硬碟格式化的時候,作業系統自動將硬碟分成兩個區域。一個是資料區,存放檔案資料;另一個是inode區(inode table),存放inode所包含的資訊。
    每個inode節點的大小,一般是128位元組或256位元組。inode節點的總數,在格式化時就給定,一般是每1KB或每2KB就設定一個inode。假定在一塊1GB的硬碟中,每個inode節點的大小為128位元組,每1KB就設定一個inode,那麼inode table的大小就會達到128MB,佔整塊硬碟的12.8%。

    由於每個檔案都必須有一個inode,因此有可能發生inode已經用光,但是硬碟還未存滿的情況。這時,就無法在硬碟上建立新檔案。

    3、inode號碼

    每個inode都有一個號碼,作業系統用inode號碼來識別不同的檔案。
    這裡值得重複一遍,Linux系統內部不使用檔名,而使用inode號碼來識別檔案。對於系統來說,檔名只是inode號碼便於識別的別稱或者綽號。表面上,使用者透過檔名,開啟檔案。實際上,系統內部這個過程分成三步:首先,系統找到這個檔名對應的inode號碼;其次,透過inode號碼,獲取inode資訊;最後,根據inode資訊,找到檔案資料所在的block,讀出資料。

    三、資料塊

    資料塊就是在磁碟上儲存資料的地方,使用檔案的時候由操所繫統索引inode來呼叫相應的檔案

    補充:建立一個新檔案的操作

    儲存屬性
    核心先找到一個空閒的 i 節點(這裡是131074 )
    核心把檔案資訊記錄到其中

    儲存資料
    該檔案需要儲存在三個磁碟塊,核心找到了三個空閒塊:300、500、800
    將核心緩衝區的第一塊資料複製到300,下一塊複製到500,以此類推

    記錄分配情況
    檔案內容按順序 300、500、800存放,核心在 inode 上的磁碟分佈區記錄了上述塊列表。

  • 中秋節和大豐收的關聯?
  • 劉備對付呂布的意思?