RAID——獨立磁盤冗餘陣列(Redundant Array of Independent Disks),本來叫作廉價磁盤冗餘陣列。RAID 的基本思想是將多個容量較小、相對廉價的磁盤進行有機組合,從而以較低的成本得到與昂貴大容量磁盤至關的容量、性能、可靠性。隨着磁盤成本和價格的不斷下降, RAID 可使用大部分的磁盤, 「廉價」 已經毫無心義。因此RAID諮詢委員會使用「獨立」代替「廉價」。linux
RAID的種類目前來講使用的較多的是RAID0、RAID一、RAID五、RAID6。RAID的初心是爲大型服務器提供高端的存儲功能和冗餘的數據安全,但RAID0顯然是不符合該要求的,由於RAID0是爲了極大程度地提升數據讀寫(I/O)的效率和硬盤的使用率,所以其原理是同時向多個磁盤中同時寫入信息,可是不保證數據的安全可靠性,有一塊磁盤掛了就沒法致使數據丟失,適用於僅僅只須要高讀寫能力的場景,然後面的類型對於數據的安全與可靠性都有了明顯的改善與增強。算法
RAID1——鏡像複製,使用兩塊或以上的磁盤(通常是偶數塊)進行讀寫,向一塊磁盤中寫入信息,而且複製一份到另外一塊磁盤中,這樣保證了數據的可靠讀寫,二者互不影響,可是使用率只有本來資源的一半,因此是可靠性較強但資源耗費也是比較大的。shell
說白了,RAID0是隻在意速度,而RAID1考慮的是安全。而RAID5則是由三塊磁盤構成,憑藉算法進行奇偶差錯校驗來確保數據的可靠性的同時兼顧磁盤使用率,其容許一塊磁盤掛掉,可是在修復重建數據的時間段中不能夠再有磁盤損壞,不然數據仍然會丟失。安全
RAID6則是基於RAID5的基礎上進行雙重校驗以保證兩塊磁盤掛掉的狀況下數據仍然不會丟失。可是其讀寫性能就比較低了尤爲是磁盤損壞的時候,讀寫速度將急劇降低,並且價格方面也是較其餘而言更加昂貴。服務器
下面對RAID0進行配置的實驗操做:less
[root@lokott ~]# lsblk //查看磁盤概要信息 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 40G 0 disk ├─sda1 8:1 0 6G 0 part /boot ├─sda2 8:2 0 20G 0 part / ├─sda3 8:3 0 4G 0 part [SWAP] ├─sda4 8:4 0 1K 0 part └─sda5 8:5 0 10G 0 part /home sdb 8:16 0 20G 0 disk sdc 8:32 0 20G 0 disk sdd 8:48 0 20G 0 disk sde 8:64 0 20G 0 disk sr0 11:0 1 4.2G 0 rom /run/media/root/CentOS 7 x86_64 [root@lokott ~]# fdisk /dev/sdb //設置b磁盤分區格式爲fd 歡迎使用 fdisk (util-linux 2.23.2)。 更改將停留在內存中,直到您決定將更改寫入磁盤。 使用寫入命令前請三思。 Device does not contain a recognized partition table 使用磁盤標識符 0x363a740e 建立新的 DOS 磁盤標籤。 命令(輸入 m 獲取幫助):n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): Using default response p 分區號 (1-4,默認 1): 起始 扇區 (2048-41943039,默認爲 2048): 將使用默認值 2048 Last 扇區, +扇區 or +size{K,M,G} (2048-41943039,默認爲 41943039): 將使用默認值 41943039 分區 1 已設置爲 Linux 類型,大小設爲 20 GiB 命令(輸入 m 獲取幫助):t 已選擇分區 1 Hex 代碼(輸入 L 列出全部代碼):fd 已將分區「Linux」的類型更改成「Linux raid autodetect」 命令(輸入 m 獲取幫助):w The partition table has been altered! Calling ioctl() to re-read partition table. 正在同步磁盤。 [root@lokott ~]# fdisk /dev/sdc 歡迎使用 fdisk (util-linux 2.23.2)。 更改將停留在內存中,直到您決定將更改寫入磁盤。 使用寫入命令前請三思。 Device does not contain a recognized partition table 使用磁盤標識符 0x1d0b68fc 建立新的 DOS 磁盤標籤。 命令(輸入 m 獲取幫助):n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): Using default response p 分區號 (1-4,默認 1): 起始 扇區 (2048-41943039,默認爲 2048): 將使用默認值 2048 Last 扇區, +扇區 or +size{K,M,G} (2048-41943039,默認爲 41943039): 將使用默認值 41943039 分區 1 已設置爲 Linux 類型,大小設爲 20 GiB 命令(輸入 m 獲取幫助):t 已選擇分區 1 Hex 代碼(輸入 L 列出全部代碼):fd 已將分區「Linux」的類型更改成「Linux raid autodetect」 命令(輸入 m 獲取幫助):w The partition table has been altered! Calling ioctl() to re-read partition table. 正在同步磁盤。 //查看分區是否正確 [root@lokott ~]# fdisk -l /dev/sd[b-c] 磁盤 /dev/sdb:21.5 GB, 21474836480 字節,41943040 個扇區 Units = 扇區 of 1 * 512 = 512 bytes 扇區大小(邏輯/物理):512 字節 / 512 字節 I/O 大小(最小/最佳):512 字節 / 512 字節 磁盤標籤類型:dos 磁盤標識符:0x363a740e 設備 Boot Start End Blocks Id System /dev/sdb1 2048 41943039 20970496 fd Linux raid autodetect 磁盤 /dev/sdc:21.5 GB, 21474836480 字節,41943040 個扇區 Units = 扇區 of 1 * 512 = 512 bytes 扇區大小(邏輯/物理):512 字節 / 512 字節 I/O 大小(最小/最佳):512 字節 / 512 字節 磁盤標籤類型:dos 磁盤標識符:0x1d0b68fc 設備 Boot Start End Blocks Id System /dev/sdc1 2048 41943039 20970496 fd Linux raid autodetect
[root@lokott ~]# mdadm -C -v /dev/md0 -l0 -n2 /dev/sd[b-c] //mdadm命令進行RAID磁盤管理 mdadm: chunk size defaults to 512K //md0是本身取的RAID0的設備名稱,-l是level,0表示的是RAID0 mdadm: partition table exists on /dev/sdb //1 就是RAID1,5就是RAID5,-n表示須要幾塊磁盤,後面的加的 mdadm: partition table exists on /dev/sdb but will be lost or //就是磁盤數量 meaningless after creating array mdadm: partition table exists on /dev/sdc mdadm: partition table exists on /dev/sdc but will be lost or meaningless after creating array Continue creating array? y mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started. [root@lokott ~]# lsblk /dev/md0 //查看概要信息的確是RAID0 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT md0 9:0 0 40G 0 raid0 [root@lokott ~]# mkfs -t xfs /dev/md0 meta-data=/dev/md0 isize=512 agcount=16, agsize=654720 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=10475520, imaxpct=25 = sunit=128 swidth=256 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=5120, version=2 = sectsz=512 sunit=8 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 [root@lokott ~]# mount /dev/md0 /mnt [root@lokott ~]# df -hT 文件系統 類型 容量 已用 可用 已用% 掛載點 /dev/sda2 xfs 20G 4.4G 16G 22% / devtmpfs devtmpfs 474M 0 474M 0% /dev tmpfs tmpfs 489M 0 489M 0% /dev/shm tmpfs tmpfs 489M 7.1M 482M 2% /run tmpfs tmpfs 489M 0 489M 0% /sys/fs/cgroup /dev/sda5 xfs 10G 37M 10G 1% /home /dev/sda1 xfs 6.0G 158M 5.9G 3% /boot tmpfs tmpfs 98M 4.0K 98M 1% /run/user/42 tmpfs tmpfs 98M 20K 98M 1% /run/user/0 /dev/sr0 iso9660 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64 /dev/md0 xfs 40G 33M 40G 1% /mnt
其實軟RAID的磁盤陣列的設置仍是比較簡單的,對於其餘類型的RAID的配置的步驟是同樣的,固然也但是設置備份,就是在mdadm命令的最後加上-xn (n表示的是備用的磁盤的數量),而後加上設備名稱,這裏主要是軟RAID的設置操做。ide