RAID陣列基礎知識
獨立硬盤冗余陣列 (RAID, Redundant Array of Independent Disks),舊稱廉價磁盤冗余陣列(Redundant Array of Inexpensive Disks),簡稱磁盤陣列。
RAID的種類
這里我們只介紹比較常用的RAID類型,詳細可查看維基百科
RAID-0 (等量模式,stripe): 性能最佳
這種模式如果使用相同型號與容量的磁盤來組成時,效果最佳。這種模式的RAID會將磁盤先切出等量的區塊(舉例來說:4KB),然后當一個文件要寫入RAID時,該文件會依據塊的大小切割好,之后再依序放到各個磁盤里面去。由于每個磁盤會交錯存放數據,因此當你的數據要寫入RAID時,數據會被等量放置在各個磁盤上面。
例如:你有兩塊硬盤組成RAID-0,當你有100MB的數據要寫入時,每個磁盤會被分配到50MB的存儲量。RAID-0的示意圖:
RAID-0需要自行負責數據損毀的風險,由上圖我們知道文件是被切割成為適合每塊磁盤分區區塊的大小,然后再依序放置到各個磁盤中,所以如果一個磁盤壞了,那么數據將缺少一塊,此時這個文件就損毀了。由于每個文件都是這樣存放,因此RAID-0只要任何一塊磁盤損毀,在RAID-0上面的所有數據都會丟失而無法讀取。
RAID-1 (鏡像模式,mirror): 完整備份
- 這種模式也是需要相同的磁盤容量的,最好是一模一樣的磁盤。如果是不同容量的磁盤組成RAID-1時,那么總容量將以最小的那一塊磁盤為主!這種模式主要是讓同一份數據完整保存在兩塊磁盤上面。舉例來說,如果有一個100MB的文件,且我僅有兩塊磁盤組成RAID-1時,那么這兩塊磁盤將會同步寫入100MB到他們的存儲空間去。因此,整體RAID的容量就幾乎少了50%.
- 由于兩塊磁盤內的數據一模一樣,所以任何一塊硬盤損毀時,你地數據還是可以完整保留下來。所以我們可以說,RAID-1最大的優點大概就是在于數據的備份。不過由于磁盤容量有一半用在備份,因此總容量會是全部磁盤容量的一半而已。RAID-1的寫入性能不佳,不過讀取的性能則是還可以。這是因為數據有兩份在不同的磁盤上面,如果多個進程在讀取同一條數據時,RAID會自行取得最佳的讀取平衡。
RAID 0 + 1
- RAID-0的性能佳但是數據不安全,RAID-1的數據安全但是性能不佳,那么能不能將這兩者整合起來設置RAID呢?那就是RAID 0 + 1或RAID 1 + 0。所謂的RAID 0 + 1就是先讓兩塊硬盤組成RAID-0,并且這樣的設計有兩組;然后將這兩組RAID-0再組成一組RAID-1,這就是RAID 0 + 1,反過來說,RAID 1 + 0 就是先組成RAID-1再組成RAID-0的意思。
- 下圖中,Disk 0 + Disk 1組成第一組RAID 0,Disk 2 + Disk 3組成第二組RAID 0,然后這兩組再整合成一組RAID-1。如果我有100MB的數據要寫,則由于RAID 1的關系,兩組RAID-0 都會寫入100MB,但是由于RAID-0的關系,因此每塊磁盤僅會寫入50MB而已。如此一來,無論哪一組的RAID-0的磁盤損毀,只要另外一組RAID-0還存在,那么就能夠通過RAID-1的機制來恢復數據。
- 由于具有RAID-0的優點,所以性能得以提升,由于具有RAID-1的優點,所以數據得以備份。但是也由于RAID-1的缺點,所以總容量會少一半用來作為備份。
Raid 1 + 0
- 下圖Disk 0 + Disk 1先組成第一組RAID-1,Disk 2 + Disk 3再組成一組RAID-1,然后這兩組再整合成為一組RAID-0。如果我有100MB數據要寫,首先會將數據分割,那么有50MB的數據會寫入第一組RAID-1中,另外50MB寫入第二組RAID-1中,由于RAID-1的特點,Disk 0 和 Disk 1都會寫入同樣的50MB數據,另外一組RAID-1也是同樣。因此,的那個我餓能其中一塊硬盤壞掉是沒有關系的,但是如果第一組RAID-1(disk 0 + Disk 1)兩塊硬盤全部損壞,那么數據將會丟失。再比如Disk 0 和Disk 2兩塊硬盤損壞,由于RAID-1所以數據還是可以恢復的。
Spare Disk: 預備磁盤的功能
- 磁盤陣列的磁盤損壞時,就得將要壞的磁盤拔除,然后換上一塊新的磁盤。換成新磁盤并且順利啟動磁盤陣列后,磁盤陣列就會開始重建原本壞掉的那塊磁盤數據到新的磁盤中去,然后你磁盤陣列上的數據就復原了。這就是磁盤陣列的優點,不過我們還是要手動插拔磁盤,此時通常得要關機才能這么做。
- 為了讓系統可以實時地在壞掉硬盤時主動重建,因此就需要預備磁盤(spare disk)的輔助。所謂的spare disk就是一塊或者多塊沒有包含原本磁盤陣列等級中的磁盤,這塊磁盤平時并不會被磁盤陣列所使用,當磁盤陣列有任何一塊磁盤損壞時,這塊spare disk會被主動拉進磁盤陣列中,并將壞掉的那塊磁盤移除磁盤陣列,然后重建數據系統。
硬陣列和軟陣列
硬件磁盤陣列(hardware RAID)
硬磁盤陣列就是通過磁盤陣列卡來完成陣列的。磁盤陣列卡上面有一塊專門的芯片處理RAID任務,因此在性能方面會比較好。并且目前中高等的磁盤陣列卡都支持熱插拔,即在不關機的情況下更換損壞的硬盤。軟件磁盤陣列(software RAID)
軟件磁盤陣列主要是通過軟件來仿真硬件磁盤陣列,因此會損耗較多的系統資源,比如說CPU的運算于I/O總線的資源等,不過我們現在的計算機已經速度很快了,因此這些限制現可以忽略不計了。