RAID卡的結構詳解


  軟件RAID的缺點如此之多,使人們不斷地思考更多實現RAID的方法。既然軟件缺點太多,那么用硬件實現如何呢?

RAID卡就是一種利用獨立硬件來實現RAID功能的方法。要在硬件上實現RAID功能,必須找一個物理硬件作為載體,SCSI卡或者主板上的南橋無疑就是這個載體了。人們在SCSI卡上增加了額外的芯片用於實現RAID功能。這些芯片是專門用來執行RAID算法的,可以是ASIC這樣的高成本高速度運算芯片,也可以是通用指令CPU這樣的通用代碼執行芯片,可以從ROM中加載代碼直接執行,也可以現在入RAM后執行,從而實現RAID功能。

  實現了RAID功能的板卡(SCSI卡或者IDE拓展卡)就叫做RAID卡。同樣,在主板南橋芯片上也可以實現RAID功能。由於南橋中的芯片不能靠CPU來完成它們的功能,所以這些芯片完全靠電路邏輯來自己運算,盡管速度很快,但是功能相對插卡式的RAID卡要弱。

  對於軟件RAID,至少操作系統最底層還是能感知到實際物理磁盤的,但是對於硬件RAID來說操作系統根本無法感知底層的物理磁盤。而只能通過廠家提供的RAID卡的管理軟件來查看卡上所連接的物理磁盤。而且,配置RAID卡的時候,也不能在操作系統下完成,而必須進入這個硬件來完成(或者在操作系統下通過RAID卡配置工具來設置)。一般的RAID卡都是在開機自檢的時候,進入它的ROM配置程序來配置各種RAID功能。

RAID卡的結構

  帶CPU的RAID卡儼然就是一個小的計算機系統,有自己的CPU、內存、ROM、總線和IO接口,只不過這個小計算機是為大計算機服務的。

SCSI RAID卡上一定要包含SCSI控制器,因為其后端連接的依然是SCSI物理磁盤。其前端連接到主機的PCI總線上,所以一定要有一個PCI總線控制器來維護PCI總線的仲裁、數據發送接收等功能。還需要有一個ROM,一般都是用Flash芯片作為ROM,其中存放着初始化RAID卡必須的代碼以及實現RAID功能所需的代碼。

  RAM的作用,首先是作為數據緩存,提高性能;其次作為RAID卡上的CPU執行RAID運算所需要的內存空間。XOR芯片是專門用來做RAID3、5、6等這類校驗型RAID的校驗數據計算用的。如果讓CPU來做校驗計算,需要執行代碼,將耗費很多周期。而如果直接使用專用的數字電路,一進一出就立即得到結果。所以為了解脫CPU,增加了這塊專門用於XOR運算的電路模塊,大大增加了數據校驗計算的速度。

  RAID卡與SCSI卡的區別就在於RAID功能,其他沒有太大區別。如果RAID卡上有多個SCSI通道,那么就稱為多通道RAID卡。目前SCSI RAID卡最高有4通道的,其后端可以接入4條SCSI總線,所以最多可連接64個SCSI設備(16位總線)。

  RAID思想中有個條帶化的概念。所謂的條帶化,並不是真正的像低級格式化一樣將磁盤划分成條和帶。這個條帶化是虛擬的,也就是體現在程序代碼上。因為條帶的位置、大小一旦設置之后,就是固定的。一個虛擬盤上的某個LBA地址塊,就對應了真正物理磁盤上的一個或者多個LBA塊,這些映射關系都是預先通過配置界面設定好的。而且某種RAID算法往往體現為一些復雜公式,而不是去用一張表來記錄每個虛擬磁盤LBA和物理磁盤LBA的對應,用表的效率會很差。因為每個IO到來之后,RAID都要查詢這個表來獲取對應物理磁盤的LBA,而查詢速度是非常慢的,更何況面對如此大的一張表。如果用一個邏輯LBA與物理LBA之間的函數關系公式來做運算,則速度是非常快的。

  正是因為映射完全通過公式來進行,所以物理磁盤上根本不用寫入什么標志,以標注所謂的條帶。條帶的概念只是邏輯上的,物理上並不存在。所以,條帶等概念只需“記憶”在RAID程序代碼之中就可以了,要改變也是改變程序代碼即可。唯一要向磁盤上寫入的就是一些RAID信息,這樣即使將這些磁盤拿下來,放到同型號的另一塊RAID卡上,也能無誤地認出以前做好的RAID信息。SNIA協會定義了一種DDF RAID信息標准格式,要求所有RAID卡廠家都按照這個標准來存放RAID信息,這樣,所有RAID卡就都通用了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM