本文鏈接:https://blog.csdn.net/gui951753/article/details/79365416
目錄
思維導(dǎo)圖
本篇只涉及到導(dǎo)圖的右側(cè),只講述硬盤的結(jié)構(gòu)
2018-02-24 21:08:49
本文鏈接:https://blog.csdn.net/gui951753/article/details/79365416 目錄思維導(dǎo)圖
本篇只涉及到導(dǎo)圖的右側(cè),只講述硬盤的結(jié)構(gòu)
硬盤的物理結(jié)構(gòu)是比較復(fù)雜的,這里我們只需要知道最常用到的幾個(gè)術(shù)語(yǔ)即可,也就是chs尋址中所涉及到的結(jié)構(gòu)
磁頭(Heads):每張磁片的正反兩面各有一個(gè)磁頭,一個(gè)磁頭對(duì)應(yīng)一張磁片的一個(gè)面。因此,用第幾磁 頭就可以表示數(shù)據(jù)在哪個(gè)磁面。
柱面(Cylinder):所有磁片中半徑相同的同心磁道構(gòu)成“柱面”,意思是這一系列的磁道垂直疊在一起,就形成一個(gè)柱面的形狀。簡(jiǎn)單地理解,柱面數(shù)=磁道數(shù)。
扇區(qū)(Sector):將磁道劃分為若干個(gè)小的區(qū)段,就是扇區(qū)。雖然很小,但實(shí)際是一個(gè)扇子的形狀,故稱為扇區(qū)。每個(gè)扇區(qū)的容量為512字節(jié)。
硬盤結(jié)構(gòu)圖解:
系統(tǒng)將文件存儲(chǔ)到磁盤上時(shí),按柱面、磁頭、扇區(qū)的方式進(jìn)行,即最先是第1磁道的第一磁頭下(也就是第1盤面的第一磁道)的所有扇區(qū),然后,是同一柱面的下一磁頭,……,一個(gè)柱面存儲(chǔ)滿后就推進(jìn)到下一個(gè)柱面,直到把文件內(nèi)容全部寫入磁盤。
所以,數(shù)據(jù)的讀/寫按柱面進(jìn)行,而不按盤面進(jìn)行。也就是說(shuō),一個(gè)磁道寫滿數(shù)據(jù)后,就在同一柱面的下一個(gè)盤面來(lái)寫,一個(gè)柱面寫滿后,才移到下一個(gè)扇區(qū)開始寫數(shù)據(jù)。讀數(shù)據(jù)也按照這種方式進(jìn)行,這樣就提高了硬盤的讀/寫效率。
首先,我們需要了解尋址是在干嘛?
當(dāng)需要從磁盤讀取數(shù)據(jù)時(shí),系統(tǒng)會(huì)將數(shù)據(jù)邏輯地址傳給磁盤,磁盤的控制電路按照尋址邏輯將邏輯地址翻譯成物理地址,即確定要讀的數(shù)據(jù)在哪個(gè)磁道,哪個(gè)扇區(qū)。
所以當(dāng)我們需要對(duì)磁盤進(jìn)行讀寫操作時(shí)就涉及到了對(duì)磁盤進(jìn)行定位操作,我們要去找到要存儲(chǔ)數(shù)據(jù)或者取數(shù)據(jù)的這個(gè)扇區(qū),而尋址就是一種定位。更恰當(dāng)?shù)闹v,尋址就是利用CHS告訴你,你住在某棟樓幾層幾房
由硬盤結(jié)構(gòu)圖我們可以清楚地了解到硬盤三大件的含義,利用這三大件催生出了一種以扇區(qū)為單位的尋址方式CHS.知道了磁頭數(shù)、柱面數(shù)、扇區(qū)數(shù),就可以很容易地確定數(shù)據(jù)保存在硬盤的哪個(gè)位置。也很容易確定硬盤的容量,其計(jì)算公式是:
硬盤容量=磁頭數(shù)×柱面數(shù)×扇區(qū)數(shù)×512字節(jié)
CHS是一個(gè)三元組,組成如下:
1. 一共24個(gè) bit位。
2. 其中前10位表示cylinder,中間8位表示head,后面6位表示sector。
3. 最大尋址空間
計(jì)算機(jī)技術(shù)日新月異,由于CHS尋址技術(shù)最多只能用于8G大小的硬盤,所以,在如今的生活中我們使用LBA進(jìn)行尋址。對(duì)于LBA尋址,我們只需要知道以下內(nèi)容
LBA采用48個(gè)bit位尋址,最大尋址空間128PB。
LBA編址方式將CHS這種三維尋址方式轉(zhuǎn)變?yōu)橐痪S的線性尋址,它把硬盤所有的物理扇區(qū)的C/H/S編號(hào)通過(guò)一定的規(guī)則轉(zhuǎn)變?yōu)橐痪€性的編號(hào)。簡(jiǎn)單來(lái)講,原本你需要的信息是5棟7層02戶,但是現(xiàn)在LBA通過(guò)一定的運(yùn)算,你現(xiàn)在只需要知道你要去第N個(gè)房間就好了,由三維的定位,變成了現(xiàn)在的一圍定位
計(jì)算公式
LBA(邏輯扇區(qū)號(hào))=磁頭數(shù) × 每磁道扇區(qū)數(shù) × 當(dāng)前所在柱面號(hào) + 每磁道扇區(qū)數(shù) × 當(dāng)前所在磁頭號(hào) + 當(dāng)前所在扇區(qū)號(hào) – 1
我們?cè)趌inux下經(jīng)常使用兩種分區(qū)結(jié)構(gòu),一種是MBR分區(qū)結(jié)構(gòu),一種是GPT分區(qū)結(jié)構(gòu)
我們來(lái)看下面這張圖,當(dāng)我們對(duì)磁盤以MBR的結(jié)構(gòu)進(jìn)行分區(qū)的時(shí)候,磁盤的結(jié)構(gòu)就如下圖所示
我們經(jīng)常把硬盤第一個(gè)扇區(qū)叫做MBR扇區(qū),這512字節(jié)包含三塊兒內(nèi)容
引導(dǎo)代碼:引導(dǎo)代碼占MBR分區(qū)的前446字節(jié),負(fù)責(zé)整個(gè)系統(tǒng)啟動(dòng)。如果引導(dǎo)代碼被破壞,系統(tǒng)將無(wú)法啟動(dòng)。
MBR分區(qū)表:引導(dǎo)代碼后的64個(gè)字節(jié),是整個(gè)硬盤的分區(qū)表。有四張分區(qū)表
MBR結(jié)束標(biāo)志:占MBR扇區(qū)最后2個(gè)字節(jié),一直為“55 AA”。
在分區(qū)表中記錄分區(qū)的起始地址和結(jié)束地址(既可以使用CHS尋址也可以使用LBA進(jìn)行尋址),這兩個(gè)地址相減就是我們這個(gè)分區(qū)的實(shí)際容量
由于MBR僅僅為分區(qū)表保留了64字節(jié)的存儲(chǔ)空間,而每個(gè)分區(qū)則占用16字節(jié)的空間,也就是只能分4個(gè)分區(qū),而4個(gè)分區(qū)在實(shí)際情況下往往是不夠用的。因此就有了擴(kuò)展分區(qū),擴(kuò)展分區(qū)中的每個(gè)邏輯分區(qū)的分區(qū)信息都存在一個(gè)類似MBR的擴(kuò)展引導(dǎo)記錄(簡(jiǎn)稱EBR)中,擴(kuò)展引導(dǎo)記錄包括分區(qū)表和結(jié)束標(biāo)志“55 AA”,沒(méi)有引導(dǎo)代碼部分。也就是EBR中的前446個(gè)字節(jié)是空的
擴(kuò)展分區(qū)的結(jié)構(gòu)如下圖所示
GPT磁盤分區(qū)結(jié)構(gòu)解決了MBR只能分4個(gè)主分區(qū)的的缺點(diǎn),理論上說(shuō),GPT磁盤分區(qū)結(jié)構(gòu)對(duì)分區(qū)的數(shù)量好像是沒(méi)有限制的。但某些操作系統(tǒng)可能會(huì)對(duì)此有限制。
保護(hù)MBR
保護(hù)MBR位于GPT磁盤的第一扇區(qū),也就是0號(hào)扇區(qū),有磁盤簽名,MBR磁盤分區(qū)表和結(jié)束標(biāo)志組成,沒(méi)有引導(dǎo)代碼。而且分區(qū)表內(nèi)只有一個(gè)分區(qū)表項(xiàng),這個(gè)表項(xiàng)GPT根本不用,只是為了讓系統(tǒng)認(rèn)為這個(gè)磁盤是合法的。
GPT頭
GPT頭位于GPT磁盤的第二個(gè)扇區(qū),也就是1號(hào)扇區(qū),該扇區(qū)是在創(chuàng)建GPT磁盤時(shí)生成,其作用是定義分區(qū)表的位置和大小。GPT頭還包含頭和分區(qū)表的校驗(yàn)和,這樣就可以及時(shí)發(fā)現(xiàn)錯(cuò)誤。
分區(qū)表
分區(qū)表位于GPT磁盤的2-33號(hào)扇區(qū),一共占用32個(gè)扇區(qū),能夠容納128個(gè)分區(qū)表項(xiàng)。每個(gè)分區(qū)表項(xiàng)大小為128字節(jié)。因?yàn)槊總€(gè)分區(qū)表項(xiàng)管理一共分區(qū),所以允許GPT磁盤創(chuàng)建128個(gè)分區(qū)。
每個(gè)分區(qū)表項(xiàng)中記錄著分區(qū)的起始,結(jié)束地址,分區(qū)類型的GUID,分區(qū)的名字,分區(qū)屬性和分區(qū)GUID。
分區(qū)區(qū)域
GPT分區(qū)區(qū)域就是用戶使用的分區(qū),也是用戶進(jìn)行數(shù)據(jù)存儲(chǔ)的區(qū)域。分區(qū)區(qū)域的起始地址和結(jié)束地址由GPT分區(qū)表定義。
GPT頭備份
GPT頭有一個(gè)備份,放在GPT磁盤的最后一個(gè)扇區(qū),但這個(gè)GPT頭備份并非完全GPT頭備份,某些參數(shù)有些不一樣。復(fù)制的時(shí)候根據(jù)實(shí)際情況更改一下即可。
分區(qū)表備份
分區(qū)區(qū)域結(jié)束后就是分區(qū)表備份,其地址在GPT頭備份扇區(qū)中有描述。分區(qū)表備份是對(duì)分區(qū)表32個(gè)扇區(qū)的完整備份。如果分區(qū)表被破壞,系統(tǒng)會(huì)自動(dòng)讀取分區(qū)表備份,也能夠保證正常識(shí)別分區(qū)。
GPT的分區(qū)結(jié)構(gòu)相對(duì)于MBR要簡(jiǎn)單許多,并且分區(qū)表以及GPT頭都有備份。
我們把最初始的硬盤比作一個(gè)毛坯房,那么對(duì)硬盤進(jìn)行分區(qū),就相當(dāng)于給毛坯房通水電,對(duì)硬盤進(jìn)行格式化(添加文件系統(tǒng)),就相當(dāng)于對(duì)毛坯房進(jìn)行裝修。毛坯房只有通水電,裝修之后才能住人;同理只有將硬盤進(jìn)行分區(qū)和格式化,硬盤才能夠使用。
文件系統(tǒng)是操作系統(tǒng)用于明確存儲(chǔ)設(shè)備(常見(jiàn)的是磁盤,也有基于NAND Flash的固態(tài)硬盤)或分區(qū)上的文件的方法和數(shù)據(jù)結(jié)構(gòu);即在存儲(chǔ)設(shè)備上組織文件的方法。操作系統(tǒng)中負(fù)責(zé)管理和存儲(chǔ)文件信息的軟件機(jī)構(gòu)稱為文件管理系統(tǒng),簡(jiǎn)稱文件系統(tǒng)。
我們知道Linux操作系統(tǒng)支持很多不同的文件系統(tǒng),比如ext2、ext3、XFS、FAT等等,而Linux把對(duì)不同文件系統(tǒng)的訪問(wèn)交給了VFS(虛擬文件系統(tǒng)),VFS能訪問(wèn)和管理各種不同的文件系統(tǒng)。所以有了區(qū)之后就需要把它格式化成具體的文件系統(tǒng)以便VFS訪問(wèn)。標(biāo)準(zhǔn)的Linux文件系統(tǒng)Ext2是使用「基于inode的文件系統(tǒng)].
我們知道一般操作系統(tǒng)的文件數(shù)據(jù)除了文件實(shí)際內(nèi)容外,還帶有很多屬性,例如 Linux 操作系統(tǒng)的文件權(quán)限(rwx)與文件屬性(擁有者、群組、 時(shí)間參數(shù)等),文件系統(tǒng)通常會(huì)將屬性和實(shí)際內(nèi)容這兩部分?jǐn)?shù)據(jù)分別存放在不同的區(qū)塊
在基于inode的文件系統(tǒng)中,權(quán)限與屬性放置到inode中,實(shí)際數(shù)據(jù)放到data block 區(qū)塊中,而且inode和data block都有編號(hào).
如上圖所示,文件系統(tǒng)最前面有一個(gè)啟動(dòng)扇區(qū)(boot sector),這個(gè)啟動(dòng)扇區(qū)可以安裝開機(jī)管理程序, 這個(gè)設(shè)計(jì)讓我們能將不同的引導(dǎo)裝載程序安裝到個(gè)別的文件系統(tǒng)前端,而不用覆蓋整個(gè)硬盤唯一的MBR, 也就是這樣才能實(shí)現(xiàn)多重引導(dǎo)的功能
把每個(gè)區(qū)進(jìn)一步分為多個(gè)塊組 (block group),每個(gè)塊組有獨(dú)立的inode/block體系如果文件系統(tǒng)高達(dá)數(shù)百 GB 時(shí),把所有的 inode 和block 通通放在一起會(huì)因?yàn)?inode 和 block的數(shù)量太龐大,不容易管理
分區(qū)是用戶的分區(qū),實(shí)際計(jì)算機(jī)管理時(shí)還有個(gè)最適合的大小,于是計(jì)算機(jī)會(huì)進(jìn)一步的在分區(qū)中分塊
每個(gè)塊組實(shí)際還會(huì)分為分為6個(gè)部分,除了inode table 和 data block外還有4個(gè)附屬模塊,起到優(yōu)化和完善系統(tǒng)性能的作用
前面講的都是磁盤內(nèi)部的結(jié)構(gòu),下面我們來(lái)討論一下多個(gè)磁盤如何組合能發(fā)揮更大的作用。我們采用raid技術(shù)的優(yōu)點(diǎn):
提升讀寫性能
增加容錯(cuò)能力,也就是增加硬盤的可用性
要實(shí)現(xiàn)RAID0必須要有兩個(gè)以上硬盤驅(qū)動(dòng)器,RAID0實(shí)現(xiàn)了帶區(qū)組,數(shù)據(jù)并不是保存在一個(gè)硬盤上,而是分成數(shù)據(jù)塊保存在不同驅(qū)動(dòng)器上。因?yàn)閷?shù)據(jù)分布在不同驅(qū)動(dòng)器上,所以數(shù)據(jù)吞吐率大大提高,驅(qū)動(dòng)器的負(fù)載也比較平衡。如果剛好所需要的數(shù)據(jù)在不同的驅(qū)動(dòng)器上效率最好。它不需要計(jì)算校驗(yàn)碼,實(shí)現(xiàn)容易。它的缺點(diǎn)是它沒(méi)有數(shù)據(jù)差錯(cuò)控制,如果一個(gè)驅(qū)動(dòng)器中的數(shù)據(jù)發(fā)生錯(cuò)誤,即使其它盤上的數(shù)據(jù)正確也無(wú)濟(jì)于事了。不應(yīng)該將它用于對(duì)數(shù)據(jù)穩(wěn)定性要求高的場(chǎng)合。如果用戶進(jìn)行圖象(包括動(dòng)畫)編輯和其它要求傳輸比較大的場(chǎng)合使用RAID0比較合適。
同時(shí),RAID可以提高數(shù)據(jù)傳輸速率,比如所需讀取的文件分布在兩個(gè)硬盤上,這兩個(gè)硬盤可以同時(shí)讀取。那么原來(lái)讀取同樣文件的時(shí)間被縮短為1/2。在所有的級(jí)別中,RAID 0的速度是最快的。但是RAID 0沒(méi)有冗余功能的,如果一個(gè)磁盤(物理)損壞,則所有的數(shù)據(jù)都無(wú)法使用。
RAID-01 不可以兩邊RAID0中各壞一塊硬盤,但可以在單邊同時(shí)壞掉單邊的兩塊硬盤。
原因:假如DISK1 A1,DISK A2,DISK3 B1, DISK B2
A(A1,A2) B (B1,B2)
1.A中和B中的任何一塊硬盤同進(jìn)壞了,則都破壞了RAID0技術(shù)。所有整
個(gè)硬盤數(shù)據(jù)被破壞。因此不允A和B中的任何一個(gè)塊硬盤同時(shí)損壞.
2.當(dāng)中A中所有硬盤壞了,因?yàn)锽中的RAID0的格式保持完整,因做的是
RAID0+1,I不影響數(shù)據(jù)的完整性.所以允許A中所有磁盤損壞.同理B也是
這樣.
RAID-10可以兩邊RAID1中各壞一塊硬盤,但不能同時(shí)壞掉單邊的兩個(gè)硬盤。
原因:
1.A中的任何一個(gè)硬盤都可以壞,因?yàn)樽龅氖荝AID1格式,同時(shí)B中的任何一
個(gè)硬盤的數(shù)據(jù)也可壞,因?yàn)橐沧龅氖荝AID1的格式.所以允許A和B中的任何一塊硬盤同時(shí)損壞,即不影響數(shù)據(jù)的完整性.
2.A中(B中)的兩塊同時(shí)硬盤損壞,從圖中可以看到,數(shù)據(jù)無(wú)法保持完整性.所
以不允許單邊的兩塊硬盤同時(shí)損壞
但是,當(dāng)硬盤的數(shù)量比較多的時(shí)候,能有一個(gè)直觀的反應(yīng)就是,使用raid-10會(huì)使得服務(wù)器的穩(wěn)定性能更高,具有高可用性。
聯(lián)系客服