目前的磁盤能夠分爲單碟盤和多碟盤,前者在盤體內有一張盤片,後者在盤體內有多張盤片,前面說過每張盤面有兩個磁頭,由於盤面是正反兩面均可以讀寫數據的,盤體內有多張盤片的大大的提升了硬盤的容量,可是要注意的是:磁盤中每一個時刻只容許一個磁頭讀寫數據,因此多個磁頭和多張盤體是沒法提升IO性能的,只能提升容量。緩存
影響硬盤的性能主要有如下因素:網絡
轉速是影響硬盤連續IO時吞吐量性能的首要因素。轉速越快,數據傳輸時間就越短。在連續IO狀況下,磁頭尋道次數少,轉速就成了首要影響因素了。性能
尋道速度是影響磁盤隨機IO性能的首要因素,隨機IO時,磁盤更換磁道頻繁,傳輸數據的時間和換道所消耗的時間根本不在一個數量級。spa
單盤容量越大,相同空間內存儲的數據量就越大,也就是數據很密集,在相同的轉速和尋道條件下,單盤容量大的會讀出更多的數據。接口
接口速度是影響硬盤性能的一個最不重要的因素,目前的接口速度在理論上能夠知足硬盤所能達到的最高外部傳輸帶寬。內存
目前硬盤提供的物理接口包括如下幾種:
用於ATA指令系統的IDE接口
用於ATA指令系統的SATA接口
用於SCSI指令系統的並行SCSI接口
用於SCSI指令系統的串行SCSI接口(SAS)
用於SCSI指令系統的並承載於FC協議的串行FC接口資源
IDE接口也稱爲PATA接口,即Parallel ATA(並行傳輸ATA),ATA接口從誕生到如今,工推出了7個版本。IDE傳輸數據主要有三種模式:
1 PIO模式,經過cpu執行IO指令來進行數據讀寫的數據交換模式,這種模式cpu佔用率高。
2 DMA模式,直接內存訪問,不通過cpu,而是直接從內存讀取數據,在DMA模式下,cpu受權DMA控制器處理數據。DMA和PIO模式的區別在於DMA模式不過度依賴於CPU,大大的節省了系統資源,兩者在傳輸速度上的差別並不十分明顯。
3 Ulta DMA模式,能夠理解爲DMA的加強版,增長了CRC校驗等技術。IDE接口有交叉干擾、信號混亂等缺陷,已經被新一代的SATA接口所取代。flash
SATA接口的全稱是Serial ATA,即串行ATA,它使用串行線路傳輸數據,指令集仍舊用的ATA指令集。SATA與IDE結構在硬件上有本質的區別,SATA的工做原理比較簡單:採用連續串行的方式來實現數據傳輸從而得到較高的傳輸速率。除了傳輸速率高,SATA的數據傳輸線纜比IDE的要瘦不少,利於散熱,節省空間。產品
SCSI與ATA是目前現行的兩大主機與外設通訊的協議規範,ATA協議對應是IDE接口,SCSI協議對應是SCSI接口。SCSI接口爲存儲類產品提供了強大、靈活的鏈接方式,而且還有很高的性能,能夠有8個或者16個SCSI設備鏈接在一個SCSI通道上面。SCSI接口的設備通常須要配置SCSI卡一塊兒使用,若是主板上已經集成了SCSI控制器,則不須要額外的控制器。效率
在系統中使用SCSI必需要有專門的SCSI控制器,也就是一塊SCSI卡,SCSI控制器上面有一個至關於CPU的芯片,它對SCSI設備進行控制,能處理大部分的工做,減小cpu的負擔。
SCSI協議的鏈路層,利用crc校驗碼來校驗每一個指令或者數據幀。
SCSI協議的網絡層,在Ultra 320 SCSI協議中,一條SCSI總線上能夠存在16個節點,期中SCSI控制器佔用一個節點,ID被恆定設置爲7,其餘15個節點的ID能夠隨便設置,但不能重複。ID 爲7的具備最高優先級,當控制器要發起傳輸時,其餘15個節點都要把總線的使用權讓出。
SCSI總線的尋址方式是按照:控制器-通道-SCSI ID-LUN ID來尋址的。控制器就是指SCSI控制器,無論你的SCSI控制器是插在PCI插槽中,仍是集成在主板上的,他們都須要接到主機IO總線上,有IO接口了,就可讓cpu訪問到。一個IO總線不必定只有一個SCSI控制器,它能夠有多個SCSI控制器,這樣系統就會區分每一個SCSI控制器。
每一個SCSI控制器又能夠有多個通道,一條SCSI總線就是一個SCSI通道,多條SCSI總線能夠被一個控制器管理的,控制器能夠被劃分爲多個虛擬的、能夠管理多個通道的控制器,稱爲多通道控制器。咱們常說的單通道SCSI卡和多通道SCSI卡就是指上面能夠接幾條SCSI總線,每條總線上面又能夠接入8個或者16個SCSI設備。SCSI ID就是針對每一個設備的編號,不一樣通道之間的設備ID能夠相同,由於它們通道號不一樣。
SCSI ID後面還有一個LUN ID,一個SCSI ID也就是一個SCSI設備,它仍是能夠再次劃分的,這個劃分不是物理上的劃分,而是邏輯上的劃分,這樣每一個SCSI ID下面能夠再劃分出不少LUN ID,在初始化的時候,控制器會收集每一個SCSI ID的LUN信息,這樣一條SCSI總線上面能夠接入的邏輯存儲單元就不少了。
SCSI總線上最常發生的是控制器向其餘節點發送和接受數據,而節點間交互數據是比較少的。例如從一塊硬盤複製數據到另外一塊硬盤,先將數據發送到控制器,控制器再複製到內存,通過cpu運算後再次發給控制器,而後控制器再發給另外一塊硬盤。由於硬盤自己不能感知文件的存在,硬盤值理解SCSI指令,因此經過SCSI指令處理硬盤上的LBA塊。
在發起方得到總線仲裁後,會發送一個SCSI寫命令幀,期中包含對應的LUN號以及LBA地址段,接收端接收後,就知道下一步對方要傳輸的數據了,而後接收方向發送發發送一個XFER_RDY幀,表示以及準備好了,能夠隨時發送數據,發起方收到XEFR_RDY後,會當即發送數據,每發送一幀數據,接收方收到後都會回送一個XEFR_RDY幀,表示上一幀成功收到且無錯誤,能夠當即發送下一幀,一直這樣持續,直到接收方發送一個RESPONSE幀來表示這條SCSI指令執行完畢。經過這樣的流傳來達到保障數據成功傳輸的目的。
磁盤的內部傳輸速率是指磁頭讀寫磁盤時的最高速率,這個速率不包括尋道以及等待扇區旋轉到磁頭下所耗費的時間的影響,可是這種狀況是不願能出現的,只是一種理想狀況,要讀取數據,磁頭不多是不須要換道的,爲了不磁頭被不斷打斷的問題,人們發明了RAID技術,讓一個磁頭在換道時,另外一個磁頭在讀寫。磁頭從盤片上讀出數據,放入緩存中,而後從緩存中取出,經過外部接口傳輸給主板上的硬盤控制器,從外部接口傳輸給硬盤控制器時的傳輸速率是硬盤的外部傳輸速率。
並行傳輸就是一次同時傳輸多個數據給對方,並行傳輸要求兩端的距離比較短,由於若是距離比較長的話,線路會有信號衰減,並行傳輸看起來比串行傳輸速率要高,可是並行傳輸有不可逾越的技術屏障,那就是它的傳輸頻率不可過高,電路在高速震盪時會產生很大的干擾,形成數據出錯,因此必須增長屏蔽線,因此並行傳輸效率高可是速度慢,串行則恰好相反。
IOPS就是硬盤每秒鐘能進行多少次IO,每次IO根據寫入的數據大小,這個值也是不固定的。同一塊盤在讀寫小塊數據時速度比較快,而讀寫大塊數據時速度比較慢。
SSD(soild state drive)是一種使用flash芯片或者dram芯片存儲數據的硬盤,他們採用一種叫作"浮動門場效應晶體管"的晶體管來保存數據,這樣的一個晶體管叫作一個cell,有兩種類型的cell,第一種是SLC,每一個cell保存1B的數據,第二種爲MLC,每一個cell保存2B的數據,MLC容量爲SLC的二倍,成本卻至關,可是MLC複雜度高,容易出錯。