linux中文件索引節點知識

概念

索引節點

    inode表中包含了文件系統所有文件列表
    一個節點是在一個表項裏,包含文件數據(元數據)。
        1.文件類型,權限,UID,GID
        2.鏈接數(指向這個文件名路徑名稱個數)
        3.文件的大小和時間戳
        4.指向磁盤上文件的指針
        5.有關文件的其他數據
        6.inode 索引節點編號

inode表結構

    linux中文件索引節點知識

  • 直接塊指針:有12個塊直接指向對應的數據單元,每個數據單元可以容納4K大小文件,所有直接塊指針只能存儲48k大小的文件。
  • 間接塊指針:指向一個指針塊,裏面不放數據,大小爲4k,每個塊佔4個字節,所有有1024個指針,然後每個指針指向真正的數據塊。這樣計算下來4*1024=4M。
  • 雙重間接塊指針:在間接塊的基礎上再增加一個指針塊,這樣計算下來有410241024=4G。

    inode號

    linux中文件索引節點知識
  系統中將目錄下的文件名和文件inode號之間的映射作爲目錄的數據存放;人們通過文件名進行操作時,系統會通過對應路徑目錄的inode號找到目錄的inode表數據,進而通過數據指針指向目錄的數據,匹配文件名,得到文件的inode號;再到inode表中找到此文件的表項,再由文件數據指針指向真正的文件數據。
    1.系統中同一分區節點編號是唯一的。
    2.不同分區的節點編號相同但不是同一個文件。
    3.每個分區的節點編號都是有限的,如果節點編號用完會導致在此分區裏不能創建新的文件,但系統中可能還有大量的磁盤空間,所有一定要注意是否是節點編號用盡。

    linux中文件索引節點知識

文件操作與inode的關係

  1.cp命令
    系統分配一個空閒的節點編號,在節點表中生成一條新的信息,在目錄中創建一個目錄項,將名稱與inode編號關聯;拷貝數據生成新的文件。

  2.rm命令
    首先文件有沒有鏈接數,當鏈接數減到零後,系統釋放節點編號,並刪除目錄表信息和對應的指針,但數據塊的數據不會被刪除,只有系統重新啓用此數據塊時數據纔會被覆蓋。
  mv命令
    如果目標和源文件都存在相同一個分區裏,則刪除舊的目錄信息,創建新的信息,其他的沒有改變,如果目標和源文件在不同的分區,mv相當於cp和rm。

硬鏈接和軟鏈接

1.硬鏈接
  語法:ln filename [linkname ]
  a. 硬鏈接的新建是爲同一inode號添加文件名 (本質是在目錄條目裏爲inode號增添一個文件名映射,指向同一個inode表數據,因此數據相同)
   b. 新建硬鏈接,鏈接數增加(鏈接數實質就是 inode號 對應文件名的個數;當 inode 號映射的文件名不存在時,此 inode號就會被系統回收重用)
  c. 硬鏈接文件和原文件之間數據共享,但又互相獨立;(修改其中任意一個文件的數據,其他的文件數據都會改變,刪除硬鏈接文件則對應的鏈接數會減少,如果是最後一個鏈接數則直接刪除文件。)
  d. 不能跨分區和跨設備創建硬鏈接
  e. 不能對目錄創建硬鏈接 (目錄最多有三個硬鏈接,目錄本身,目錄下的 . ,子目錄下的 ..)
2.軟鏈接
  語法:ln -s filename [linkname ]
  a. 軟鏈接實質是新建一個文件快捷方式,存放的數據是原文件的文件名,文件數據大小是原文件名字的字節數;訪問時通過文件名指向到原文件數據
  b. 軟鏈接支持跨分區
  c. 可以創建目錄軟連接
  d. 軟鏈接文件依賴於原始文件 ;刪除原始文件,軟鏈接文件會失效

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章