1. 程式人生 > >理解linux下的檔案系統和軟硬體連結

理解linux下的檔案系統和軟硬體連結

檔案系統

如何描述檔案和如何管理檔案的一個系統 我們使用ls -l命令的時候除了看到檔名之外還能看到檔案元資料。 在這裡插入圖片描述 我們可以觀察到tmp.txt檔案實際只佔用磁碟空間41位元組,但是系統給它分配了4K(1K=1024位元組)大小的空間,因為磁碟塊(最小的儲存單位)最小的空間是4K,所以系統在分配磁碟空間的時候是分配4K的整數倍大小。 再觀察stat這個命令的執行結果,我們可以看到有很多的資訊,其中有一個inode項,為了解釋清楚inode我們先來簡單的瞭解一下檔案系統,如下: (inode節點區域裡還有一個重要的項是連結數,下面講軟硬連結的時候會提到) 在這裡插入圖片描述 現在我們瞭解到檔案的資料存放在檔案系統的資料區,檔案描述資訊存放在inode節點區,我們可以通過檔案描述資訊來找到檔案資料。那麼問題來了,我們是如何快速有效的將檔案描述資訊和檔案資料存放在一個空白區域的呢?這個時候我們就應該想到我們學習的資料結構中的雜湊——點陣圖,所以檔案系統中就又多了兩個分割槽——inode點陣圖區和data點陣圖區

,來分別記錄inode節點區和資料區那些塊是儲存資料了,那些是空白塊,以便我們快速有效的找到檔案和給檔案分配儲存空間。 那麼問題又來了,目錄檔案是怎麼儲存的呢? 目錄檔案中儲存的是該目錄下的檔名和inode節點號,所以目錄檔案的儲存過程和普通檔案的儲存過程是一致的,只不過在它的資料區裡面儲存的是它的目錄下的檔名和inode節點號(實際上就是一個目錄結構),我們可以通過inode節點號在inode節點區找到該目錄下的檔案描述資訊進而在資料區找到該檔案的資料。 超級塊:儲存的是檔案系統本身的結構的資訊,不如說,使用的是那個檔案系統,總的資料塊的個數等。 總結:如何找到一個檔案 inode節點:檔案描述資訊,其中有檔案資料的儲存位置 目錄項:實際就是一個目錄項檔案(儲存檔名稱,檔案對應的inode節點) 首先查詢目錄項,然後在inode區域通過檔案inode號找到要查詢的檔案inode節點,在inode節點中找到檔案資料的儲存指標,然後找到檔案資料。

軟/硬連結檔案

  1. 如何生成一個軟連線

ln -s filename filename.soft 軟連線檔案像是一個檔案的快捷方式,它針對的是檔名(目錄項)

2.如何生成一個硬連結

ln filename filename.hard 硬連結像是對一個檔名(目錄項)的備份

在這裡插入圖片描述

3.軟連結檔案和硬連結檔案有什麼區別 1) 軟連線有自己的inode節點號,是一個單獨的檔案,它的資料項裡面存的是目錄項名稱 硬連結檔案inode節點號和原始檔相同是一個檔案的別名(建立一個硬連結就相當於建立一個新的目錄項指向同一個inode節點然後連結數+1),沒有單獨的inode節點和資料區 在這裡插入圖片描述 2) 軟連結可以對目錄進行操作 硬連結不可以對目錄進行操作 在這裡插入圖片描述

3) inode節點中儲存了一個連結數,刪除一個檔案就是破壞目錄項與inode節點之間的關係,連結數-1,連結數就是現在有多少個目錄項指向同一個inode節點,建立一個硬連結就相當於建立一個新的目錄項指向同一個inode節點然後連結數+1。當inode節點中連結數降為0的時候就代表這個檔案已經沒有其他的目錄項鍊接了這個時候作業系統會將inode節點置為一個未使用的狀態,把資料區釋放掉。刪除原始檔就是接觸目錄項與原始檔inode節點的關係,刪除原始檔後,對硬連結沒有影響,只是inode中的連結數-1。但是軟連結(儲存的是原始檔的目錄項)將無法使用 如果再重新建立一個原始檔tmp.txt軟連線又恢復正常但是檔案資料改變,但是硬連結還保留原來原始檔中的資料 在這裡插入圖片描述 4)硬連結不能跨分割槽建立 (針對的是inode結點) 軟連結可以跨分割槽建立(針對的是檔名) 4.硬連結與cp比較 硬連結給原始檔備份,佔磁碟空間小 cp複製一份原始檔,佔磁碟空間大