1
我最近開始學習Linux內核,並且剛剛瞭解了inode,它們是包含文件的元數據的數據結構。inodes存儲在哪裏?
現在,操作系統如何查找文件的關聯索引節點? (比方說一串路徑)。而且,這些inode存儲在哪裏?我的意思是,顯然它們存儲在磁盤上,但它是如何管理的?
一個天真的解決方案(我可以想出)將是在磁盤上分配一個區域,只指定inodes - 實際上做了什麼?
我最近開始學習Linux內核,並且剛剛瞭解了inode,它們是包含文件的元數據的數據結構。inodes存儲在哪裏?
現在,操作系統如何查找文件的關聯索引節點? (比方說一串路徑)。而且,這些inode存儲在哪裏?我的意思是,顯然它們存儲在磁盤上,但它是如何管理的?
一個天真的解決方案(我可以想出)將是在磁盤上分配一個區域,只指定inodes - 實際上做了什麼?
這取決於文件系統的實現。例如,ext2fs/ext3fs選擇在塊組內的數據塊之前存儲inode。 The Second Extended File system (EXT2)
請記住存儲在所有塊組中的inode。例如,索引節點1到32768將存儲在塊組0中,存儲在塊組2中的索引節點32768到65536等等。 因此,您的問題的答案是:Inode存儲在inode表中,分區中的每個塊組中都有一個inode表。
謝謝,但操作系統究竟知道該塊位於給定路徑的哪裏? (假設「/ path/to/my/file」) – LiorGolan
@LiorGolan - 每個目錄項必須至少指定路徑組件名稱,並且還指定在哪裏查找其詳細信息(例如inode編號)。根目錄有一個衆所周知的inode號碼(通常是#2)。正如mik1904所指出的那樣,如果您知道inode編號,您可以在磁盤上查找給定文件系統的位置。然後它變爲1.讀取指定inode的目錄數據2.查找下一個路徑組件的名稱及其詳細信息3.重複,直到達到路徑中的最終組件。 – Sparky