昨天新哥問我iNode的區別,支支吾吾說了好久也沒講清楚,自己回來趕緊百度了一下
照例先搬磚
一.文件存儲
文件存儲在硬盤上,硬盤的最小存儲單位叫做“扇區”。每個扇區存512字節,操作系統讀取硬盤的時候,不會一個個扇區地讀取,這樣
效率太低,而是一次連續地讀取多個扇區,即一次性讀取一個塊。 這種由多個扇區組成的“塊”,是文件存取的最小單位。“塊”的大小,最常見的是
4kn,即連續八個sector組成一個block。
文件數據都存儲在“塊”中,那么很顯然,我們還必須找到一個地方存儲文件的元信息,比如文件的創建者,文件的創建日期,
文件的大小等等。這種存儲文件元信息的區域就叫做inode,中文譯名為“索引節點”
inode包含文件的元信息,包括以下內容
1.文件的字節數
2.文件擁有者的userID
3.文件的GroupID
4.文件的讀.寫.執行權限
5.文件的時間戳 ctime指的是inode上一次改變 的時間(權限,屬性)
mtime指的是inode上一次修改的時間(內容)
atime指的是上一次的訪問時間
但實際上,會因為修該內容而導致mtime(屬性)發生變化,從而間接引起ctime變化
二.inode的大小
inode也會消耗硬盤空間,所以硬盤格式化的時候,操作系統自動將硬盤分成兩個區域。一個是數據區,存文件數據;另一個是
iNode區,存放inode所包含的信息,每個inode節點的大小,一般是128字節或256字節。inode節點的總數,
在格式化時就給定。
unix系統內部不使用文件名,而是使用inode號碼來識別文件。
打開文件的過程
1.系統找到這個文件名對應的inode號碼;其次,通過inode號碼,獲取inode信息;
最后,根據inode信息,找到文件數據所在的block,讀出數據
一個inode對應多個文件的情況稱之為硬連接,修改一個文件內容會影響到所有文件名
但刪除一個文件不會影響到另外一個文件的訪問
二.Windows Fat文件結構
保留扇區
位於最開始的位置。第一個保留扇區是引導區(分區引導)
FAT區域
它包含有兩份文件分配表,冗余考慮,它是分區信息的映射表指示簇是如何存儲的
根目錄區域
它是根目錄中存儲文件和目錄信息的目錄表,在FAT32下它可以存在分區中的任何位置。
數據DATA區
整個磁盤應該是這樣
我們通過bpb,獲取每個fat表的所占字節,保留扇區,從而得知fdt的起始扇區
通過fdt得到文件的首簇號,並通過首簇號得到文件的起始扇區位置。
讀取文件在數據區中的記錄。
個人感覺,通過fdt表定位到文件首簇,通過fat表(它記錄着文件如何被分散在不同的扇區中),形成簇鏈。