介紹一個新概念,RAID,這也是大學的時候的學的東西了,一直很少在工作中使用,有點忘記,今天複習更新一下。分享給大家。
儲存資料安全,大家都知道備份。 資料安全其中一個是實體上的方法。就是raid。
RAID 簡介
獨立硬碟備援陣列(RAID, Redundant Array of Independent Disks),舊稱廉價磁盤備援陣列(Redundant Array of Inexpensive Disks),簡稱磁盤陣列。其基本思想就是把多個相對便宜的硬碟組合起來,成為一個硬碟陣列組,使性能達到甚至超過一個價格昂貴、容量巨大的硬碟。根據選擇的版本不同,RAID比單顆硬碟有以下一個或多個方面的好處:增強資料內建度,增強容錯功能,增加處理量或容量。另外,磁盤陣列對于電腦來說,看起來就像一個單獨的硬碟或邏輯存儲單元。分為RAID-0,RAID-1,RAID-1E,RAID-5,RAID-6,RAID-7,RAID-10,RAID-50,RAID-60。
簡單來說,RAID把多個硬碟組合成為一個邏輯扇區,是以,作業系統隻會把它當作一個硬碟。RAID常被用在伺服器電腦上,并且常使用完全相同的硬碟作為組合。由于硬碟價格的不斷下降與RAID功能更加有效地與主機闆內建,它也成為玩家的一個選擇,特别是需要大容量存儲空間的工作,如:視訊與音頻制作。
最初的RAID分成不同的檔次,每種檔次都有其理論上的優缺點,不同的檔次在兩個目标間擷取平衡,分别是增加資料可靠性以及增加存儲器(群)讀寫性能。這些年來,出現對于RAID觀念不同的應用。
磁盤陣列(Redundant Arrays of Independent Disks,RAID),
有“獨立磁盤構成的具有備援能力的陣列”之意`
概念
條帶化技術:
條帶(stripe)是把連續的資料分割成相同大小的資料塊,把每段資料分别寫入到陣列中的不同磁盤上的方法。簡單的說,條帶是一種将多個磁盤驅動器合并為一個卷的方法。 許多情況下,這是通過硬體控制器來完成的。
磁盤鏡像技術(mirror)
校驗技術(海明嗎)
使用校驗碼(速度和資料可用性都得到提升)
比例n-1/n
raid就是利用這兩種技術進行組合的。
RAID level:
級别:僅代表磁盤的組織結構不同,沒有上下之分。
RAID 0
RAID 0亦稱為帶區集。它将兩個以上的磁盤并聯起來,成為一個大容量的磁盤。在存放資料時,分段後分散存儲在這些磁盤中,因為讀寫時都可以并行處理,是以在所有的級别中,RAID 0的速度是最快的。但是RAID 0既沒有備援功能,也不具備容錯能力,如果一個磁盤(實體)損壞,所有資料都會丢失,危險程度與JBOD相當。
RAID 1
兩組以上的N個磁盤互相作鏡像,在一些多線程作業系統中能有很好的讀取速度,理論上讀取速度等于硬碟數量的倍數,與RAID 0相同。另外寫入速度有微小的降低。隻要一個磁盤正常即可維持運作,可靠性最高。其原理為在主硬碟上存放資料的同時也在鏡像硬碟上寫一樣的資料。當主硬碟(實體)損壞時,鏡像硬碟則代替主硬碟的工作。因為有鏡像硬碟做資料備份,是以RAID 1的資料安全性在所有的RAID級别上來說是最好的。但無論用多少磁盤做RAID 1,僅算一個磁盤的容量,是所有RAID中磁盤使用率最低的一個級别。
如果用兩個不同大小的磁盤建RAID 1,可用空間為較小的那個磁盤,較大的磁盤多出來的空間也可以分區成一個區來使用,不會造成浪費。
RAID 2
這是RAID 0的改良版,以漢明碼(Hamming Code)的方式将資料進行編碼後分區為獨立的比特,并将資料分别寫入硬碟中。因為在資料中加入了錯誤修正碼(ECC,Error Correction Code),是以資料整體的容量會比原始資料大一些,RAID2最少要三台磁盤驅動器方能運作。
RAID 3
采用Bit-interleaving(資料交錯存儲)技術,它需要通過編碼再将資料比特分割後分别存在硬碟中,而将同比特檢查後單獨存在一個硬碟中,但由于資料内的比特分散在不同的硬碟上,是以就算要讀取一小段資料資料都可能需要所有的硬碟進行工作,是以這種規格比較适于讀取大量資料時使用。
RAID 4
它與RAID 3不同的是它在分區時是以區塊為機關分别存在硬碟中,但每次的資料通路都必須從同比特檢查的那個硬碟中取出對應的同比特資料進行核對,由于過于頻繁的使用,是以對硬碟的損耗可能會提高。(塊交織技術,Block interleaving)
RAID 5
RAID Level 5是一種儲存性能、資料安全和存儲成本兼顧的存儲解決方案。它使用的是Disk Striping(硬碟分區)技術。RAID 5至少需要三塊硬碟,RAID 5不是對存儲的資料進行備份,而是把資料和相對應的奇偶校驗資訊存儲到組成RAID5的各個磁盤上,并且奇偶校驗資訊和相對應的資料分别存儲于不同的磁盤上。當RAID5的一個磁盤資料發生損壞後,可以利用剩下的資料和相應的奇偶校驗資訊去恢複被損壞的資料。RAID 5可以了解為是RAID 0和RAID 1的折衷方案。RAID 5可以為系統提供資料安全保障,但保障程度要比鏡像低而磁盤空間使用率要比鏡像高。RAID 5具有和RAID 0相近似的資料讀取速度,隻是因為多了一個奇偶校驗資訊,寫入資料的速度相對單獨寫入一塊硬碟的速度略慢,若使用“回寫緩存”可以讓性能改善不少。同時由于多個資料對應一個奇偶校驗資訊,RAID 5的磁盤空間使用率要比RAID 1高,存儲成本相對較便宜。
RAID 6
與RAID 5相比,RAID 6增加第二個獨立的奇偶校驗資訊塊。兩個獨立的奇偶系統使用不同的算法,資料的可靠性非常高,任意兩塊磁盤同時失效時不會影響資料完整性。RAID 6需要配置設定給奇偶校驗資訊更大的磁盤空間和額外的校驗計算,相對于RAID 5有更大的IO操作量和計算量,其“寫性能”強烈取決于具體的實作方案,是以RAID6通常不會通過軟體方式來實作,而更可能通過硬體/固件方式實作。
同一數組中最多容許兩個磁盤損壞。更換新磁盤後,資料将會重新算出并寫入新的磁盤中。依照設計理論,RAID 6必須具備四個以上的磁盤才能生效。
特點:
0:表示條帶
性能提升:讀寫性能都提升了
備援能力(容錯能力)未提升
空間使用率:ns
1:表示鏡像
性能表現:寫性能下降,讀性能提升
備援能力(容錯能力)提升
空間使用率:1/2
01:先條帶再鏡像 RAID 1+0
10:先鏡像再條帶 RAID 0+1
4:校驗碼(校驗碼盤讀取的性能壓力很大)
5:(輪換做為校驗碼盤)
性能表現:讀寫提升
備援能力(容錯能力)提升
空間使用率:n-1/n
6:兩次校驗,兩個校驗盤
50:先5後0
性能表現:讀寫提升
備援能力(容錯能力:有
空間使用率:n-1/n
因素
- 速度
- 資料本身的可用性
- 安全性
混合RAID
Raid10
RAID 01
通過不同的組合達到,容量和性能的最大化,同時還控制成本。
JBOD( Just a Bunch Of Disks)在分類上,JBOD并不是RAID的檔次。由于并沒有規範,市場上有兩類主流的做法
使用單獨的連結端口如SATA、USB或1394同時控制多個各别獨立的硬碟,使用這種模式通常是較進階的裝置,還具備有RAID的功能,不需要依靠JBOD達到合并邏輯扇區的目的。
隻是将多個硬碟空間合并成一個大的邏輯硬碟,沒有錯誤備援機制。
資料的存放機制是由第一顆硬碟開始依序往後存放,即作業系統看到的是一個大硬碟(由許多小硬碟組成的)。但如果硬碟損毀,則該顆硬碟上的所有資料将無法救回。若第一顆硬碟損壞,通常無法作救援(因為大部分檔案系統将磁盤分區表(partition table)存在磁盤前端,即第一顆),失去磁盤分區表即失去一切資料,若遭遇磁盤陣列資料或硬碟出錯的狀況,危險程度較RAID 0更劇。它的好處是不會像RAID,每次通路都要讀寫全部硬碟。但在部分的JBOD資料恢複實踐中,可以恢複未損毀之硬碟上的資料。同時,因為每次讀寫操作隻作用于單一硬碟,JBOD的傳輸速率與I/O表現均與單顆硬碟無異。
jbod:多個小的磁盤組合成一個大的磁盤。着眼于容量。
hadoop
HDFS:分布式檔案系統
性能表現優秀
硬碟總線類型
IDE(ATA)133Mbps,并行
SATA:6Gbps,串行
USB:串行
SCSI:ultraSCSI,320Mbps,并行8,7target;16,15target
initiator
lun:logical unit number
SAS:2.5轉速塊,目标(可以連接配接一個盤的)
RAID技術
硬體RAID
硬體控制器,接口,硬碟陣列
RAID控制晶片(cpu控制讀寫,也可提供記憶體),插槽、硬碟(BIOS界面進行配置)
RAID驅動程式
作業系統必須識别RAID
/dev/sd
帶記憶體的性能好,自帶電池
軟體RAID
核心的
中間模拟一個
主機闆,上有四塊磁盤
作業系統,資料
可以識别,/dev/sdb ,sdc,sdd,sde
核心要支援軟體RAID
Md:multi disk
MD,模拟一個raid
邏輯RAID
/dev/md0(表示不同的RAID的裝置)
/dev/md
軟體模拟硬體
raid子產品
fD:
安裝軟體
sudo apt-get install mdadm
man mdadm
MDADM(8) System Manager's Manual MDADM(8)
NAME
mdadm - manage MD devices aka Linux Software RAID
SYNOPSIS
mdadm [mode] <raiddevice> [options] <component-devices>
DESCRIPTION
RAID devices are virtual devices created from two or more real block devices. This allows multiple devices (typically disk drives or partitions thereof) to be combined into a single device to hold
(for example) a single filesystem. Some RAID levels include redundancy and so can survive some degree of device failure.
Linux Software RAID devices are implemented through the md (Multiple Devices) device driver.
Currently, Linux supports LINEAR md devices, RAID0 (striping), RAID1 (mirroring), RAID4, RAID5, RAID6, RAID10, MULTIPATH, FAULTY, and CONTAINER.
MULTIPATH is not a Software RAID mechanism, but does involve multiple devices: each device is a path to one common physical storage device. New installations should not use md/multipath as it is not
well supported and has no ongoing development. Use the Device Mapper based multipath-tools instead.
FAULTY is also not true RAID, and it only involves one device. It provides a layer over a true device that can be used to inject faults.
CONTAINER is different again. A CONTAINER is a collection of devices that are managed as a set. This is similar to the set of devices connected to a hardware RAID controller. The set of devices may
contain a number of different RAID arrays each utilising some (or all) of the blocks from a number of the devices in the set. For example, two devices in a 5-device set might form a RAID1 using the
whole devices. The remaining three might have a RAID5 over the first half of each device, and a RAID0 over the second half.
With a CONTAINER, there is one set of metadata that describes all of the arrays in the container. So when mdadm creates a CONTAINER device, the device just represents the metadata. Other normal
arrays (RAID1 etc) can be created inside the container.
ubuntu@youdi /dev mdadm --help
mdadm is used for building, managing, and monitoring
Linux md devices (aka RAID arrays)
Usage: mdadm --create device options...
Create a new array from unused devices.
mdadm --assemble device options...
Assemble a previously created array.
mdadm --build device options...
Create or assemble an array without metadata.
mdadm --manage device options...
make changes to an existing array.
mdadm --misc options... devices
report on or modify various md related devices.
mdadm --grow options device
resize/reshape an active array
mdadm --incremental device
add/remove a device to/from an array as appropriate
mdadm --monitor options...
Monitor one or more array for significant changes.
mdadm device options...
Shorthand for --manage.
Any parameter that does not start with '-' is treated as a device name
or, for --examine-bitmap, a file name.
The first such name is often the name of an md device. Subsequent
names are often names of component devices.
For detailed help on the above major modes use --help after the mode
e.g.
mdadm --assemble --help
For general help on options use
mdadm --help-options
核心子產品:md
mdadm:管理器,将任何塊裝置做成RAID
mdadm - manage MD devices aka Linux Software RAID
模式化的指令:
建立模式:建立RAID裝置
-C 裝置
專用選項:
-l:級别
-n:裝置個數
-a {yes|no}:自動為其建立裝置檔案
-c:chunk大小 2^n 預設為64k
-x # : 指定空閑盤個數
管理模式:管理,拆散,
--add,--del ,--fail
監控模式:監控
-F
裝配模式:換系統後,使用RAID
-A
mdadm -A /dev/md1 /dev/sdb3 /dev/sdb2
裝配過程
增長模式:添加磁盤
-G
-A, --assemble
Assemble a pre-existing array.
-C, --create
Create a new array.
-F, --follow, --monitor
Select Monitor mode.
mdadm -D /dev/md#
--detail 詳細顯示磁盤陣列的資訊。
mdadm -f --fail --set
mdadm /dev/md# --fail /dev/sda7
md - Multiple Device driver aka Linux Software RAID
RAID 0
2G
4:512M
2:1G
RAID 1/2
2G:
2:2G
額外的知識
/proc/partitions
/proc/mdstat 顯示系統上所有啟用的md裝置。
建立md
mdamd
格式化md裝置
挂載
mdadm -C /dev/md1 -a yes -n 2 -l 1 /dev/sdb1 /dev/sdb3
cat /proc/mdstat
鏡像 同步
fdisk -l 檢視
挂載使用
/etc/mdstats
模拟磁盤損壞
-f --fail
mdadm -D /dev/md1 詳細顯示磁盤陣列的資訊
md
停止陣列:
mdadm -S /dev/md1
磁盤壞掉後會發郵件
空閑盤:備援盤
熱空閑
watch - execute a program periodically, showing output fullscreen
每隔一段時間就在螢幕顯示一下。
周期性執行指定指令,并以全屏方式顯示結果。
-n # :指定周期長度,機關為秒。預設為2
格式: watch -n # `command`
mdadm -D --scan 顯示系統上所有的md裝置。
>/etc/mdadm.conf
裝配使用
将目前raid資訊儲存到/etc/mdadm.conf,以便以後進行裝配。
Raid5:校驗
2G: 3,1G
mkfs -E stride=# 格式化時,條帶大小
mkfs -t ext3 -E stride=
mdadm:管理工具
md:是核心子產品支援的。