linux物理硬盘和sd的对应关系_计算机硬盘
一、概述
磁盤(pán)接口
Linux磁盤(pán)接口一般分為兩種:
- 并行:IDE(133MB/s)、SCSI(640MB/s); 設(shè)備名稱(chēng)hd*
- 串口:SATA(6Gbp/s) 、SAS(6Gp/s) 、USB(480MB/s); 設(shè)備名稱(chēng)sd*
串口的傳輸速度比并口的更塊,為什么?
單個(gè)磁盤(pán)來(lái)說(shuō),由一個(gè)個(gè)的同心圓組成,一個(gè)同心圓就是一個(gè)磁道,每個(gè)磁道由多個(gè)扇區(qū)組成,每個(gè)扇區(qū)之間由沒(méi)有磁性的間隙分隔。扇區(qū)有磁性物質(zhì),支持讀和寫(xiě)操作。
盤(pán)面
硬盤(pán)一般會(huì)有一個(gè)或多個(gè)盤(pán)片,每個(gè)盤(pán)片可以有兩個(gè)面(Side),即第1個(gè)盤(pán)片的正面稱(chēng)為0面,反面稱(chēng)為1面;第2個(gè)盤(pán)片的正面稱(chēng)為2面,反面稱(chēng)為3面…依次類(lèi)推。每個(gè)盤(pán)面對(duì)應(yīng)一個(gè)磁頭(head)用于讀寫(xiě)數(shù)據(jù)。第一個(gè)盤(pán)面的正面的磁頭稱(chēng)為0磁頭,背面稱(chēng)為1磁頭;第二個(gè)盤(pán)片正面的磁頭稱(chēng)為2磁頭,背面稱(chēng)為3磁頭,以此類(lèi)推。盤(pán)面數(shù)和磁頭數(shù)是相等的。
磁道
每個(gè)盤(pán)片的每個(gè)盤(pán)面被劃分成多個(gè)狹窄的同心圓環(huán),數(shù)據(jù)就是存儲(chǔ)在這樣的同心圓環(huán)上,我們將這樣的圓環(huán)稱(chēng)為磁道(Track),每個(gè)盤(pán)面可以劃分多個(gè)磁道。關(guān)機(jī)時(shí)磁頭停留在硬盤(pán)的著陸區(qū)(Landing Zone),這個(gè)著陸區(qū)以前是位于離盤(pán)心最近的區(qū)域,不存放任何數(shù)據(jù)。
在每個(gè)盤(pán)面的最外圈,離盤(pán)心最遠(yuǎn)的地方是“0”磁道,向盤(pán)心方向依次增長(zhǎng)為1磁道,2磁道,等等。硬盤(pán)數(shù)據(jù)的存放就是從最外圈開(kāi)始。扇區(qū)
根據(jù)硬盤(pán)規(guī)格的不同,磁道數(shù)可以從幾百到成千上萬(wàn)不等。每個(gè)磁道上可以存儲(chǔ)數(shù)KB的數(shù)據(jù),但計(jì)算機(jī)并不需要一次讀寫(xiě)這么多數(shù)據(jù)。在這一這基礎(chǔ)上,又把每個(gè)磁道劃分成若干弧段,每段稱(chēng)為一個(gè)扇區(qū)(Sector)。
每個(gè)磁道的扇區(qū)數(shù)量是一個(gè)常量,每個(gè)扇區(qū)的大小一般是4KB。扇區(qū)是磁盤(pán)基本的物理單元。
扇區(qū)是硬盤(pán)上存儲(chǔ)的物理單位,每個(gè)扇區(qū)可存儲(chǔ)128×2N次方(N=0,1,2,3)字節(jié)的數(shù)據(jù)。從DOS時(shí)代起,每扇區(qū)是128×22=512字節(jié),現(xiàn)在已經(jīng)成了業(yè)界不成文的規(guī)定。
也就是說(shuō)即使計(jì)算機(jī)只需要硬盤(pán)上存儲(chǔ)的某個(gè)字節(jié),也須一次把這個(gè)字節(jié)所在的扇區(qū)中的全部512字節(jié)讀入內(nèi)存,再選擇所需的那個(gè)字節(jié)。扇區(qū)的編號(hào)是從1開(kāi)始,而不是0。 在硬盤(pán)磁道中,扇區(qū)號(hào)是按照某個(gè)間隔跳躍著編排。比如,2號(hào)扇區(qū)并不是1號(hào)扇區(qū)后的按順序的第一個(gè)而是第八個(gè),3號(hào)扇區(qū)又是2號(hào)扇區(qū)后的按順序的第八個(gè),依此類(lèi)推,這個(gè)“八”稱(chēng)為交叉因子。( 數(shù)據(jù)讀取經(jīng)常需要按順序讀取一系列相鄰的扇區(qū)(邏輯數(shù)據(jù)相鄰)。如對(duì)磁道扇區(qū)按物理順序進(jìn)行編號(hào),很有可能出現(xiàn)當(dāng)磁頭讀取完第一個(gè)扇區(qū)后,由于盤(pán)片轉(zhuǎn)速過(guò)快來(lái)不及讀取下一個(gè)扇區(qū),(要知道物理相鄰扇區(qū)位置距離是極小的),必須等待轉(zhuǎn)完一圈,這極大浪費(fèi)了時(shí)間。所以就用交叉來(lái)解決這個(gè)問(wèn)題。)柱面
柱面其實(shí)是我們抽象出來(lái)的一個(gè)邏輯概念,前面說(shuō)過(guò),離盤(pán)心最遠(yuǎn)的磁道為0磁道,依此往里為1磁道,2磁道,3磁道....,不同面上相同磁道編號(hào)則組成了一個(gè)圓柱面,即所稱(chēng)的柱面(Cylinder)。
硬盤(pán)數(shù)據(jù)的讀寫(xiě)是按柱面進(jìn)行,即磁頭讀寫(xiě)數(shù)據(jù)時(shí)首先在同一柱面內(nèi)從0磁頭開(kāi)始進(jìn)行操作,依次向下在同一柱面的不同盤(pán)面(即磁頭上)進(jìn)行操作,只有在同一柱面所有的磁頭全部讀寫(xiě)完畢后磁頭才轉(zhuǎn)移到下一柱面,因?yàn)檫x取磁頭只需通過(guò)電子切換即可,而選取柱面則必須通過(guò)機(jī)械切換。電子切換比從在機(jī)械上磁頭向鄰近磁道移動(dòng)快得多。因此,數(shù)據(jù)的讀寫(xiě)按柱面進(jìn)行,而不按盤(pán)面進(jìn)行。塊
將物理相鄰的若干個(gè)扇區(qū)稱(chēng)為了一個(gè)塊。操作系統(tǒng)讀寫(xiě)磁盤(pán)的基本單位是扇區(qū),而文件系統(tǒng)的基本單位是塊(Cluster),存儲(chǔ)系統(tǒng)都采用邏輯單元塊來(lái)表示基本的數(shù)據(jù)單位,這樣可以提高存儲(chǔ)的效率。 塊越大存儲(chǔ)性能越好,但空間浪費(fèi)嚴(yán)重。塊越小性能相對(duì)越低,但空間利用率高。NTFS格式的文件系統(tǒng)簇的大小為4K。
二、磁盤(pán)性能因素
而磁盤(pán)的讀寫(xiě)有3個(gè)步驟,即尋道時(shí)間 + 旋轉(zhuǎn)延遲 + 傳輸時(shí)間
尋道時(shí)間Tseek
尋道時(shí)間,其實(shí)就是磁臂移動(dòng)到指定磁道所需要的時(shí)間,目前磁盤(pán)的平均尋道時(shí)間一般在3-15ms
尋道時(shí)間=啟動(dòng)磁臂的時(shí)間+常數(shù)*所需移動(dòng)的磁道數(shù)旋轉(zhuǎn)延遲Trotation
旋轉(zhuǎn)延遲指的是把扇區(qū)移動(dòng)到磁頭下面的時(shí)間(取決于磁盤(pán)轉(zhuǎn)速)
計(jì)算方式:7200 rpm的磁盤(pán)平均旋轉(zhuǎn)延遲大約為60*1000/7200/2 = 4.17ms
傳輸時(shí)間Ttransfer
傳輸時(shí)間指的是從磁盤(pán)讀出或?qū)?shù)據(jù)寫(xiě)入磁盤(pán)的時(shí)間
三、磁盤(pán)性能指標(biāo)
IOPS
IOPS表示存儲(chǔ)每秒傳輸IO的數(shù)量 IOPS通常對(duì)于小I/O,且傳輸I/O的數(shù)量比較大的情況下,是一個(gè)最主要的衡量指標(biāo),關(guān)注隨機(jī)讀寫(xiě)性能
而理論上磁盤(pán)的最大IOPS,即IOPS = 1000 ms/ (Tseek + Troatation)
例如7200轉(zhuǎn)/分鐘的 IOPS = 1000 / (3 + 60000/7200/2) = 140
吞吐量
Throughput吞吐量則表示每秒數(shù)據(jù)的傳輸總量 Throughput吞吐量衡量對(duì)于大I/O,特別是傳輸一定數(shù)據(jù)的時(shí)候最小化耗時(shí)非常有用,關(guān)注連續(xù)讀寫(xiě)性能
每秒 I/O 吞吐量= IOPS* 平均 I/O SIZE
隨機(jī)讀寫(xiě)頻繁的應(yīng)用,如小文件存儲(chǔ)(圖片)、OLTP數(shù)據(jù)庫(kù)、郵件服務(wù)器 順序讀寫(xiě)頻繁的應(yīng)用,傳輸大量連續(xù)數(shù)據(jù),如電視臺(tái)的視頻編輯,視頻點(diǎn)播VOD四、磁盤(pán)性能優(yōu)化
上面硬盤(pán)讀寫(xiě)數(shù)據(jù)所分的三部分時(shí)間不難看出,大部分參數(shù)是和硬件相關(guān)的,操作系統(tǒng)無(wú)力優(yōu)化。只有所需移動(dòng)的磁道數(shù)是可以通過(guò)操作系統(tǒng)來(lái)進(jìn)行控制的,所以減少所需移動(dòng)的磁道數(shù)是減少整個(gè)硬盤(pán)的讀寫(xiě)時(shí)間的唯一辦法,可以通過(guò)調(diào)度算法和其他一些手動(dòng)來(lái)優(yōu)化。
調(diào)度算法
優(yōu)化尋址操作,內(nèi)核不會(huì)一旦接收到I/O請(qǐng)求后,就按照請(qǐng)求的次序發(fā)起塊I/O請(qǐng)求。為此Linux實(shí)現(xiàn)了幾種I/O調(diào)度算法,算法基本思想就是通過(guò)合并和排序I/O請(qǐng)求隊(duì)列中的請(qǐng)求,以此大大降低所需的磁盤(pán)尋道時(shí)間.
常見(jiàn)的I/O調(diào)度算法包括Noop調(diào)度算法(No Operation)、CFQ(完全公正排隊(duì)I/O調(diào)度算法)、DeadLine(截止時(shí)間調(diào)度算法)、AS預(yù)測(cè)調(diào)度算法等.
其他手段
局部原理
所謂的局部性原理分為時(shí)間和空間上的。由于程序是順序執(zhí)行的,因此當(dāng)前數(shù)據(jù)段附近的數(shù)據(jù)有可能在接下來(lái)的時(shí)間被訪問(wèn)到。這就是所謂的空間局部性。而程序中還存在著循環(huán),因此當(dāng)前被訪問(wèn)的數(shù)據(jù)有可能在短時(shí)間內(nèi)被再次訪問(wèn),這就是所謂的時(shí)間局部性原理。
提前讀(Read-Ahead)
提前讀也被稱(chēng)為預(yù)讀。根據(jù)磁盤(pán)原理我們不難看出,在磁盤(pán)讀取數(shù)據(jù)的過(guò)程中,真正讀取數(shù)據(jù)的時(shí)間只占了很小一部分,而大部分時(shí)間花在了旋轉(zhuǎn)延遲和尋道時(shí)間上,因此根據(jù)空間局部性原理,SQL Server每次讀取數(shù)據(jù)的時(shí)間不僅僅讀取所需要的數(shù)據(jù),還將所請(qǐng)求數(shù)據(jù)附近的數(shù)據(jù)進(jìn)行讀取。這在SQL Server中被稱(chēng)為預(yù)讀。SQL Server通過(guò)預(yù)讀可以有效的減少I(mǎi)O請(qǐng)求。
延遲寫(xiě)(Delayed write)
同樣,根據(jù)時(shí)間局部性原理,最近被訪問(wèn)的數(shù)據(jù)有可能再次被訪問(wèn),因此當(dāng)數(shù)據(jù)更改之后不馬上寫(xiě)回磁盤(pán),而是繼續(xù)放在內(nèi)存中,以備接下來(lái)的請(qǐng)求讀取或者修改,是減少磁盤(pán)IO的另一個(gè)有效手段,在SQL Server中,實(shí)現(xiàn)延遲寫(xiě)是buffer pool,當(dāng)一個(gè)修改請(qǐng)求被commit之后,并不會(huì)立刻寫(xiě)回磁盤(pán),而是將修改的頁(yè)標(biāo)記為“臟”,然后根據(jù)某種機(jī)制通過(guò)checkpoint或lazy writer寫(xiě)回磁盤(pán),關(guān)于checkpoint和lazy writer的原理
五、從虛擬內(nèi)存的角度理解磁盤(pán)和主存的數(shù)據(jù)交換
從虛擬內(nèi)存的角度來(lái)說(shuō),虛擬頁(yè)和磁盤(pán)中的塊映射起來(lái)
當(dāng)虛擬頁(yè)被加載到內(nèi)存的物理頁(yè)的時(shí)候,就由DMA把虛擬內(nèi)存對(duì)應(yīng)的磁盤(pán)塊加載到內(nèi)存的對(duì)應(yīng)地址的物理頁(yè)中;
當(dāng)物理頁(yè)寫(xiě)回到磁盤(pán)時(shí),也是由DMA把數(shù)據(jù)傳輸?shù)酱疟P(pán)控制器,由磁盤(pán)控制器寫(xiě)到磁盤(pán)塊對(duì)應(yīng)的扇區(qū)。
內(nèi)存和磁盤(pán)交換數(shù)據(jù)的時(shí)候?qū)嶋H采用了內(nèi)存的緩沖區(qū)來(lái)加速磁盤(pán)的訪問(wèn)速度,有了內(nèi)存緩沖區(qū),CPU要訪問(wèn)某個(gè)磁盤(pán)文件的某些數(shù)據(jù),只需要提供該數(shù)據(jù)所處的磁盤(pán)塊號(hào),就可以從內(nèi)存緩沖區(qū)尋找是否已經(jīng)緩存了該磁盤(pán)塊的內(nèi)容
六、參考
linux學(xué)習(xí)之硬盤(pán)的存儲(chǔ)原理和內(nèi)部架構(gòu) - 云+社區(qū) - 騰訊云?cloud.tencent.com磁盤(pán)IO那些事?tech.meituan.com總結(jié)
以上是生活随笔為你收集整理的linux物理硬盘和sd的对应关系_计算机硬盘的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: adb shell读取返回值_shell
- 下一篇: Linux如何更改字体(linux如何编