在linux ext2文件系統中,一個文件的屬性存放在inode中,而數據存放在block中。每個文件占用一個inode,inode中記錄了文件的權限和block地址,通過inode可以定位到block。
在文件系統初始化后,inode和block的數量就確定了(所以大量小文件是會消耗inode的)。
目錄也是一個文件,也有inode和block,目錄的block中記錄了該目錄下的文件名和對應的inode號。定位一個文件,入口是文件路徑,也就是從目錄開始。
hard link
ln zhang zhang_hd
新加了一個文件名zhang_hd,它對應的inode號和zhang的inode號相同。使用限制:無法跨文件系統,無法為目錄建立。
symbol link
ln -s zhang zhang_so
新建一個文件zhang_so,它有自己的inode和block,block中記錄的是目標文件的文件名。
操作實例:新建文件,分別為其建立硬鏈接、軟鏈接,最后移動源文件。
聽人說過,在linux同一個文件系統內,mv 操作非常快,為什么呢,因為它並不真的移動數據,只是作了一個rename的操作。