1. 程式人生 > >理解檔案系統及軟硬連結

理解檔案系統及軟硬連結

在我們儲存檔案時,檔案的屬性和資料是分開存放於檔案系統中的,通過下圖我們可以簡單理解一下檔案系統。

 理解檔案系統:

建立一個新檔案主要有四個操作:

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節點號與原始檔相同,是一個檔案別名                            ②軟連結可以對目錄進行操作                                 硬連結不能對目錄進行操作                            ③刪除原始檔,軟連結檔案將無法使用                                刪除原始檔,硬連結檔案不受影響                            ④軟連結可以跨分割槽建立                                硬連結不能跨分割槽建立