Linux 帶你理解檔案系統

2021-10-07 05:54:47 字數 3462 閱讀 8780

軟鏈結和硬鏈結

知識點習題

我們使用ls -l的時候看到的除了看到檔名,還看到了檔案元資料。

每行包含7列:

stat命令能夠看到更多資訊

[root@localhost linux]# stat test.c 

file:

"test.c"

size:

654 blocks:

8 io block:

4096 普通檔案

device:

802h/

2050d inode:

263715 links:

1access:

(0644

/-rw-r--r--

) uid:(0

/ root) gid:(0

/ root)

access:

2017-09

-1314:

56:57.059012947

+0800

modify:

2017-09

-1314:

56:40.067012944

+0800

change:

2017-09

-1314:

56:40.069012948

+0800

inode

先簡單了解一下檔案系統

linux ext2檔案系統,上圖為磁碟檔案系統圖(核心記憶體映像肯定有所不同),磁碟是典型的塊裝置,硬碟分割槽被劃分為乙個個的block。乙個block的大小是由格式化的時候確定的,並且不可以更改。例如mke2fs的-b選項可以設定block大小為1024、2048或4096位元組。而上圖中啟動塊(boot block)的大小是確定的

將屬性和資料分開存放的想法看起來很簡單,但實際上是如何工作的呢?我們通過touch乙個新檔案來看看如何工作。

[root@localhost linux]# touch abc 

[root@localhost linux]# ls -i abc

263466 abc

為了說明問題,我們將上圖簡化:

建立乙個新檔案主要有以下4個操作:

儲存屬性

核心先找到乙個空閒的i節點(這裡是263466)。核心把檔案資訊記錄到其中。

儲存資料

該檔案需要儲存在三個磁碟塊,核心找到了三個空閒塊:300,500,800。將核心緩衝區的第一塊資料複製到300,下一塊複製到500,以此類推。

記錄分配情況

檔案內容按順序300,500,800存放。核心在inode上的磁碟分布區記錄了上述塊列表。

新增檔名到目錄

新的檔名abc。linux如何在當前的目錄中記錄這個檔案?核心將入口(263466,abc)新增到目錄檔案。檔名和inode之間的對應關係將檔名和檔案的內容及屬性連線起來。

給乙個原始檔建立乙個軟鏈結檔案/硬鏈結檔案,就可以通過被建立出來的軟鏈結檔案/硬鏈結檔案來操作原始檔

不管是軟鏈結檔案還是硬鏈結檔案,目的都是為了通過這些檔案訪問到原始檔

硬鏈結我們看到,真正找到磁碟上檔案的並不是檔名,而是inode。 其實在linux中可以讓多個檔名對應於同乙個 inode。

[root@localhost linux]# touch abc 

[root@localhost linux]# ln abc def

[root@localhost linux]# ls -

1i abc def

263466 abc 263466 def

軟鏈結

硬鏈結是通過inode引用另外乙個檔案,軟鏈結是通過名字引用另外乙個檔案,在shell中的做法

263563

-rw-r--r--

.2 root root 0

9月 1517:

45 abc

261678 lrwxrwxrwx.

1 root root 3

9月 1517:

53 abc.s -

> abc

263563

-rw-r--r--

.2 root root 0

9月 1517:

45 def

軟鏈結可以針對目錄建立,硬鏈結不可以

軟鏈結檔案可以跨分割槽建立,硬鏈結不可以

注意:

每個磁碟分割槽都有自己的檔案系統(有自己的檔案系統意味著就有自己的一套inode節點)

linux 下目錄結構是唯一的,分割槽可以有多個,可以掛在不同的目錄上(目錄本身就是跨分割槽的)

a. 軟連線可以跨檔案系統進行連線,硬鏈結不可以

b. 當刪除原檔案的時候軟連線檔案仍然存在,且指向的內容不變

c. 硬鏈結被刪除,磁碟上的資料檔案會同時被刪除

d. 硬鏈結會重新建立乙個inode,軟鏈結不會

正確答案: a

答案解析

( 1 )軟連線可以跨檔案系統,硬連線不可以

( 2 )硬連線不管有多少個,都指向的是同乙個 i 節點,會把結點連線數增加,只要結點的連線數不是 0 ,檔案就一直存在不管你刪除的是原始檔還是連線的檔案。只要有乙個存在檔案就存在。 當你修改原始檔或者連線檔案任何乙個的時候,其他的檔案都會做同步的修改。軟鏈結不直接使用 i 節點號作為檔案指標 , 而是使用檔案路徑名作為指標。所以刪除連線檔案對原始檔無影響,但是刪除原始檔,連線檔案就會找不到要指向的檔案。軟鏈結有自己的 i 節點 , 並在磁碟上有一小片空間存放路徑名。

( 3 )軟連線可以對乙個不存在的檔名進行連線 。

( 4 )軟連線可以對目錄進行連線。

使用in命令將生成了乙個指向檔案old的符號鏈結new,如果你將檔案old刪除,是否還能夠訪問檔案中的資料?

a. 不可能再訪問

b. 仍然可以訪問

c. 能否訪問取決於檔案的所有者

d. 能否訪問取決於檔案的許可權

正確答案:a

答案解析:

符號鏈結就是軟鏈結

軟鏈結相當於是windows中的快捷方式,如果原始檔失效或者是刪除,那麼對應的軟鏈結也將無效

硬鏈結在原始檔失效或者刪除的情況下依然能夠使用,硬鏈結相當於是給檔案起了乙個別名,還是能夠指向檔案

理解檔案系統

以liunx下的ext2檔案系統為例 檔案系統說白了就是磁碟上進行檔案管理的系統。想要理解檔案系統我們就要對其構成進行分析。磁碟分為交換分割槽和正常儲存檔案的區域。交換分割槽是當記憶體不夠用時,將記憶體中的某個程序轉移到硬碟上儲存的時候使用的。而剩下的就是檔案系統分割槽了。檔案系統分割槽中分為dat...

linux 檔案系統 Linux 檔案系統結構介紹

ubuntu 像所有類unix系統一樣 在分層樹中組織檔案,其中的關係就像父母和孩子一樣。目錄可以包含其他目錄以及常規檔案,它們是樹的 葉子 樹的任何元素都可以通過路徑名引用 絕對路徑以字元 標識根目錄,其中包含所有其他目錄和檔案 開頭,然後列出必須遍歷以到達該元素的每個子目錄,每個子目錄用 符號分...

檔案系統的理解

一 檔案系統是個抽象的概念,它可以用來儲存檔案的內容 屬性和目錄。在unix中將磁碟分成了3個部分。1 超級塊 檔案系統中的第一塊,用來存放檔案系統的本身結構資訊。如每個區域大小,磁碟塊的使用資訊 2 i 節點表 存放檔案的屬性,每個檔案都有乙份i節點,存放在節點表中。表中的每個i節點都通過位置來標...