8、磁盤知識和歷史
雖然磁盤只能歸類到I/O設備,但是他也是非常重要的一個知識來的。
機械式設備
外部存儲設備:
比如:U盤,光盤,軟盤,硬盤,磁帶
硬盤知識:
磁盤的結構:
扇區與磁道
多個盤面,雙面可存儲,磁頭懸浮在盤面,沒有接觸
這麽多同心圓,官方術語叫做磁道
短短時間,硬盤空間發生巨大的變化,但是速度卻沒有發生巨大變化
存儲東西,在每一個盤面上存儲,並且是在同一個磁道中存儲
如果不分區,整個硬盤是一個文件系統,分區了,每個分區就可以是一個文件系統
分區是邏輯邊界
分區:Partition
可以創建多個文件系統
MBR
磁盤有一個叫做MBR的東西:
主引導記錄(512個字節,操作系統無法識別的,是屬於磁盤的空間來的)
446Byte:
BootLoader,程序,引導加載器
64Byte:
每16個字節標識一個分區,只能劃分四個主分區(Windows的多個分區不是一回事),所以我們Linux只能劃分4個主分區
2byte:
標記MBR是否有效
所以說系統裝好了,但是MBR壞了的話,系統也是無法啟動的
開機流程:
(BIOS-選擇啟動項_如果前面有光盤,沒有的話,下一個啟動項)--到了硬盤----讀取硬盤的MBR---將446載入內存--BIOS控制退出----讀取分區表----查找對應系統的內核---將內核讀取到內存中去----內核啟動自身---開機成功
所以有時候系統裝好了就是啟動不了系統,就可能是MBR出錯了
擴展分區
我們拿一個主分區,指向磁盤的另外的位置,這樣就可以把沒有使用的磁盤重新規劃,我們把這個可以創建指針的分區叫做擴展分區(所以說擴展分區是算入主分區允許最大數量之內的)
擴展分區裏面存的是一個指針
所以我們劃分多個分區,有一定的限制
我們在硬盤分區中,擴展分區只能用一個,而主分區+擴展分區<=4
我們在存儲的時候,是按照柱面的存儲,劃分分區,也是按柱面來存儲的
數據存儲按柱面存儲,劃分分區也是按柱面分區的
尋道時間,所以磁頭是會走動的,不是不會動(這就可能會形成了讀寫延遲(來源於磁盤挪過去,數據轉過來))
所以硬盤裏面是真空的,避免灰塵的,如果有灰塵,在真實空氣中也會燒起來的。
所以磁盤轉速越快,尋道速度越快,但是發熱量也會更大。
磁盤是固定角速度的,所以靠外的,讀取到的數據更多
c盤存在磁盤外道,讀取速度快,所以說平時有沒有發現我們的D盤訪問速度會比F盤會快一點。
硬盤邏輯結構(如何尋址)
文件系統是一個管理軟件
對於整個磁盤來講,存儲的就是01代碼而已
所以我們一定要給裏面的數據給定邏輯的邊界,怎麽去找文件...之類的
類似圖書館
先分類,編號,建立索引 找書的時候找索引(編目)(分類 名稱)
而我們實際中的硬盤也是這樣的
我們找書的編目就是元數據(他不屬於實際數據,就像索引並不是書,但是它也需要在硬盤有存儲空間,也是很重要的一段數據),而實際數據存儲又是一個空間(分成了多個磁盤塊)
我們硬盤怎麽知道哪些磁盤塊是空閑的,哪些在使用的
我們元數據裏面有一個區域,我們叫做塊位圖:bitmap,通過這個塊位圖去給我們將要存儲的東西分派數據塊
下圖是一個目錄數據(目錄磁盤塊)
文件名不在Inode存放,所有目錄都在/,根是一個自引用的,文件名其實在目錄上放的,目錄是放在磁盤塊的
如下圖所示,目錄的磁盤塊
\
如下圖找 /var/log/messages的物理邏輯(來回來回不斷的繞繞,不斷地找目錄的磁盤塊)
所以計算機中第一次訪問較長的目錄,那他訪問過的話,會把它載入緩存,下次訪問就快了
下圖中的dentry叫做目錄項:目錄條目
那我們在目錄中新建一個目錄呢,新建一個文件呢
比如在backup下存儲一個test.txt文件,並且大小為10K,假如一個磁盤塊大小只有2K
通過塊位圖給文檔分配多個磁盤塊(下圖4就是塊位圖),通過步驟4然後分配合適的磁盤塊保存testtxt文件,就有了步驟五
下圖的1-5是步驟,要看明白
提問:為什麽刪除了東西可以恢復?
因為他是將inode設置為空,但是磁盤塊的數據還在那個。
所以同一個文件系統中,只是修改了目錄磁盤,inode沒有變,磁盤空間的數據塊也是沒有變的
不過下次讀寫的時候才會清除裏面的數據,所以刪了立刻恢復數據是一般可以恢復的,但是你寫了數據可能就不行了
實際中,我們的硬盤也沒有那麽簡單
8、磁盤知識和歷史