理解檔案系統及軟硬連結
在我們儲存檔案時,檔案的屬性和資料是分開存放於檔案系統中的,通過下圖我們可以簡單理解一下檔案系統。
理解檔案系統:
建立一個新檔案主要有四個操作:
1.儲存屬性:
核心先找到一個空閒的inode節點,核心把檔案資訊記錄到其中。
2.儲存資料:
該檔案需要儲存在某幾個磁碟塊中,核心會找到對應空閒的磁碟塊數,將核心緩衝區的資料複製到其中。
3.記錄分配情況:
檔案內容按順序存入到磁碟塊,核心在inode上的磁碟分割槽記錄了上述塊列表。
4.新增檔名到目錄:
新的檔名abc。核心將入口(inode節點號,abc)新增到目錄檔案。檔名和inode之間的對應關係將檔名和檔案的內容以及屬性連結起來。
理解軟硬連結:
一、概念
1. 硬連結:從上面的例子我們可以發現,真正找到磁碟上檔案的並不是檔名,而是inode節點。其實在Linux中可以讓多個檔名對應於同一個inode。硬連結是通過inode引用另外一個檔案。
舉個栗子:
我們先建立了一個檔案abc,然後通過ln命令建立了abc的硬連結檔案def,通過檢視檔案資訊我們發現這兩個檔案的連結狀態相同,inode節點也是相同的:663983,硬連結數為2。
2.軟連結:通過名字引用另外一個檔案。
舉個栗子:
我們先建立了一個檔案abc,然後通過ln -s命令建立了abc的軟連結檔案abc.soft,通過檢視檔案資訊我們發現在abc.soft後面有個“->”指向了abc,而且這兩個檔案的連結狀態不同,inode節點也不一樣,各自的硬連結數為1。
二、理解
接下來我們來詳細瞭解軟硬連結的區別:
1. 首先我們要知道如何找到一個檔案:① 目錄項(檔名稱,檔案對應的inode節點號)
② inode節點(檔案的描述資訊,其中有檔案資料的儲存資訊)
圖解:
2.軟硬連結是怎麼找到檔案的:
由上圖我們可以得出結論:軟連結檔案更像是一個檔案的快捷方式,它針對的是檔名(目錄項) 硬連結更像是對一個檔名(目錄項)的備份
3.我們在刪除一個檔案時,會做兩件事情,第一是在目錄中將對應的記錄刪除,第二是將檔案的硬連結數-1。若一個檔案的硬連結數為0時,系統就會將對應的磁碟釋放。
也就是說刪除的是目錄項與inode節點的連線,所以當我們分別刪除軟硬連結後,會發現軟連結檔案無法再開啟,是因為軟連結無法再通過資料中儲存的指向檔案路徑名找到檔案了,而硬連結因為有跟原始檔inode相同的節點,所以仍能通過自身的inode節點找到這個檔案資訊。
三、總結
1.軟/硬連結檔案:
①如何產生一個軟連結檔案:ln -s 原始檔 軟連結檔案 ②如何產生一個硬連結檔案:ln 原始檔 硬連結檔案 ③什麼是軟連結檔案:軟連結檔案更像是一個檔案的快捷方式,它針對的是檔名(目錄項) ④什麼是硬連結檔案:硬連結更像是對一個檔名(目錄項)的備份 2.軟/硬連結檔案的區別:
①軟連結有自己的inode節點號,是一個單獨的檔案 硬連結檔案inode節點號與原始檔相同,是一個檔案別名 ②軟連結可以對目錄進行操作 硬連結不能對目錄進行操作 ③刪除原始檔,軟連結檔案將無法使用 刪除原始檔,硬連結檔案不受影響 ④軟連結可以跨分割槽建立 硬連結不能跨分割槽建立