軟鏈結和硬鏈結
知識點習題
我們使用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節點都通過位置來標...