我們平時不論是買一個U盤硬盤,或者自己在電腦上創建一個分區,大小總是比我們創建的要小一點,有些人會說,這個正常啊,是因為廠家規定的1M=1000k,真正的是1M=1024k,要是這樣,我這篇文章就不用寫了。廠家的規格可能是一部分原因,不過我現在是以U盤硬盤,或者分區的底層來分析這個問題。




開班第十天:
今天的課程大綱:
- 真正了解文件系統
- 分析U盤變小了的原因
- 如何選擇date block大小
- 軟鏈接、硬鏈接
- 數據恢復的原理
詳細講解:
- 真正了解文件系統
linux中叫創建文件系統,windows中習慣稱呼為格式化,filesystem一種管理文件的方式,我們平時在linux中掛載本質上掛載的是文件系統。一個文件系統包括了inode block和date block,分別為索引節點塊和數據塊,這是在mkfs創建文件系統的時候就已經生成了。下面我用一張我手畫的圖來模擬一個分區的構成,不好看,大家不要介意。(實在看不清的就留言,單獨給你發)


再解釋一下上面圖,dir是一個目錄索引表,這里假設我要執行cat a.txt文件,我怎么知道a.txt文件里的內容,這里我們先找到dir中a.txt對應inum是1,然后再在file中找到inum=1所對應的文件,可以看到block對應的是<10,11,12>,而在date block中是沒有inum的,我寫上為了方便理解,我們找到了<10,11,12>,那么我們就從date block中讀取出數據,然后返回給cat,這樣我們就能讀取到a.txt文件內容了。
我這里講的簡單了,其實目錄還要索引一次,創建文件系統的時候,根目錄的索引是默認分配好的。
- 分析U盤變小了的原因
看懂了上面的圖,現在就很容易理解U盤,分區變小的原因了。在inode中,dir的一條記錄占用一個inode,file中一條記錄占用了一個inode,而且file中的一條記錄還記錄了這個文件的擁有者,所屬組和屬性等信息。這一部分總占用的資源就是我們U盤,分區少的那一部分,所以我們分區創建好之后,會變小,就是這個原因。
- 如何選擇date block大小
今天我閑的無聊用英文寫了這個問題的解答,只過了四級,所以語法很多問題,不過搞IT嘛,能看懂就行,哈哈!
every date block has regular size:
if regular size is small,the inode will occupation(占用) to much space,the rest for date block will decrease( 減少).
if regular size is large,some small document can’t occupation full of a date block,the bad things :much space will be waste.
so choose the right date block regular size is decide to you requirement.
我想表達的大概意思就是,每一個文件系統我們都可以規定date block的默認大小。如果太小,那么inode就會占用太多的資源,那么留給date block就會變少,那么我們看到的分區就比現在還要?。蝗绻?,那么一些小文件可能占用不完一個block,而使用了一個block,那么很多的空間就會被浪費。所以選擇一個合適的date block大小取決于你的需求。
- 軟鏈接、硬鏈接
我們知道,在用ls -l查看文件權限的時候,第一位可能是 -,d,l,-代表的是普通文件,d代表目錄,l代表鏈接文件。其實這樣的屬性還有很多個。今天來講一下鏈接文件。
軟鏈接做個比喻,其實就像windows中的快捷方式。如何來創建鏈接呢?
①軟鏈接:ln -s a.txt b.txt,b.txt是本來不存在的,現在b.txt就是a.txt的一個快捷方式。


②硬鏈接:ln a.txt b.txt,表示硬鏈接,a.txt和b.txt互相為對方的硬鏈接。
這里說一下軟硬鏈接的性質:
①不能跨文件系統創建硬鏈接,因為不同的文件系統可能有相同的inode。
②不能做目錄的硬鏈接。
③硬鏈接,刪除其中一個硬鏈接,另外一個可以讀取,軟鏈接刪除源文件,不能讀取了。
④兩個硬鏈接都被刪除,該inode會被重新分配。
⑤軟鏈接會占用磁盤空間,硬鏈接不會占用磁盤空間。
硬鏈接其實就是指向同一文件且inum相同的兩條inode,所以他們都會占用一條inode。
- 數據恢復的原理
我們知道,刪除一個文件只是刪除了這個文件的inode,而指向的date block卻沒有被刪除,所以我們可以再次通過已知的inode值來找到date block,從而重新讀取出里面的數據。但是我們常見的數據恢復軟件都會友情提示,數據誤刪除之后,都不要再繼續進行讀寫磁盤,因為可能重新寫的數據會占用了你之前刪除的inode,date block也會被占用,那么即時你找回了,要不是原來的數據了。
總結:
好好揣摩一下文件系統的結構,這對我們今后走運維這條路很有幫助的,希望大家都能夠越走越遠,越走越順利!
版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。