RAID(RedundantArrays of Inexpensive(Independent) Disk):叫獨立磁盤冗餘陣列
其實現方式有:硬件實現方式和軟件實現方式
RAID是分級別(level)的,不同的級別代表不同的實現方式以及功能的不同
RAID-0:一般叫條帶卷,strip;分片進行存儲,每個硬盤存一部分,沒有備份
RAID-1: 一般叫鏡像卷,mirror;每個硬盤裏都存一份,有備份
RAID-2
...
RAID-5:
RAID-6
RAID10
RAID01
RAID-0: 是使用兩塊或兩塊以上的硬盤,以兩塊爲例,是把數據分成CHUNK(塊),然後每個硬盤存一部分數據
特點:讀、寫性能提升;
可用空間:N*min(S1,S2,...)
無容錯能力
最少磁盤數:2, 2+
RAID-1:是使用兩塊或兩塊以上的硬盤,以兩塊爲例,是把數據分別拷貝進每個硬盤存一份,做備份
特點:讀性能提升、寫性能略有下降;
可用空間:1*min(S1,S2,...)
有冗餘能力
最少磁盤數:2, 2+
RAID-5:使用3塊或3塊以上的硬盤實現,以3塊爲例,使用兩塊來按條帶卷的形式存儲數據,即每個硬盤存一部分數據,最後一塊硬盤做校驗盤,如果有一塊硬盤壞了,令兩塊硬盤裏的數據按位異或可以得到第三個盤的數據,但校驗盤負荷比較大,會容易壞
特點:讀、寫性能提升
可用空間:(N-1)*min(S1,S2,...),有一塊硬盤做校驗盤,其他做數據盤,
有容錯能力:可以在壞1塊磁盤的情況下正常工作,不過此時工作在降級模下
最少磁盤數:3, 3+
RAID-6:
使用4塊或4塊以上的硬盤實現,以3塊爲例,使用兩塊來按條帶卷的形式存儲數據,即每個硬盤存一部分數據,最後兩塊硬盤做校驗盤,如果有一塊硬盤壞了,令兩塊硬盤裏的數據按位異或可以得到第三個盤的數據
特點:讀、寫性能提升
可用空間:(N-2)*min(S1,S2,...)。有兩塊校驗盤,其他做數據盤
有容錯能力:
最少磁盤數:4, 4+
混合類型
RAID-10:就是先RAID1然後在RAID0,先兩兩一組,作爲鏡像卷,然後在把所有鏡像卷做RAID0,做成條帶卷
特點: 讀、寫性能提升
可用空間:N*min(S1,S2,...)/2
有容錯能力:每組鏡像最多隻能壞一塊;
最少磁盤數:4, 4+
RAID-01:就是先RAID0然後在RAID1;一般不會用
常用的RAID級別有RAID0,RAID1,RAID5,RAID10;一般還會用JBOD:將多塊磁盤的空間合併一個大的連續空間使用;
下面以CentOS6下實現軟件RAID:
mdadm:模式化的工具
命令的語法格式:mdadm[mode] <raiddevice> [options] <component-devices>
支持的RAID級別:LINEAR,RAID0, RAID1, RAID4, RAID5, RAID6, RAID10;
模式:
創建:-C
裝配: -A
監控: -F
管理:-f, -r, -a
<raiddevice>:/dev/md#
<component-devices>: 任意塊設備
-C:創建模式
-n#: 使用#個塊設備來創建此RAID;
-l#:指明要創建的RAID的級別;
-a{yes|no}:自動創建目標RAID設備的設備文件;
-cCHUNK_SIZE: 指明塊大小;
-x#: 指明空閒盤的個數;
D:顯示raid的詳細信息;
mdadm -D /dev/md#
管理模式:
-f:標記指定磁盤爲損壞;
-a:添加磁盤
-r:移除磁盤
例:mdadm/dev/md0 -f /dev/sda6;mdadm /dev/md0 -r /dev/sda6
觀察md的狀態:
cat/proc/mdstat
停止md設備:
mdadm-S /dev/md#
例如:創建一個10G可用空間的RAID5;3塊應用,一塊空閒(這樣能保證壞兩塊盤,也能正常工作)
首先要創建四個5G的分區,然後使用t選項修改三個分區的列表編號爲fd,
然後使用partx –a /dev/sda把分區加載到內核上,
然後使用cat /proc/mdstat查看是否有RAID,沒有的話然後創建,如果有名字不好建重複了
使用mdadm -C/dev/md0 -a yes -n 3 -x 1 -l 5 /dev/sda[5,6,7,8]創建,
[root@localhost~]# mdadm -C /dev/md0 -a yes -n 3 -x 1 -l 5 /dev/sda[5,6,7,8]
mdadm: /dev/sda5appears to contain an ext2fs file system
size=5253220K mtime=Sat Aug 2212:54:38 2015
mdadm: /dev/sda6appears to contain an ext2fs file system
size=5253220K mtime=Sat Aug 2212:59:07 2015
mdadm: /dev/sda7appears to contain an ext2fs file system
size=5253220K mtime=Thu Jan 1 08:00:00 1970
mdadm: /dev/sda8appears to contain an ext2fs file system
size=5253220K mtime=Sat Aug 2220:10:17 2015
Continuecreating array?
Continuecreating array? (y/n) y
mdadm:Defaulting to version 1.2 metadata
mdadm: array/dev/md0 started.
完成後,使用mke2fs -t ext4/dev/md0,對這個創建的md0進行格式化,
[root@localhost~]# mke2fs -t ext4 /dev/md0
mke2fs 1.41.12(17-May-2010)
Filesystemlabel=
OS type: Linux
Block size=4096(log=2)
Fragmentsize=4096 (log=2)
Stride=128blocks, Stripe width=256 blocks
657072 inodes,2624512 blocks
131225 blocks(5.00%) reserved for the super user
First datablock=0
Maximumfilesystem blocks=2688548864
81 block groups
32768 blocks pergroup, 32768 fragments per group
8112 inodes pergroup
Superblockbackups stored on blocks:
32768, 98304, 163840, 229376, 294912,819200, 884736, 1605632
Writing inodetables: done
Creating journal(32768 blocks): done
Writingsuperblocks and filesystem accounting information: done
This filesystemwill be automatically checked every 30 mounts or
180 days,whichever comes first. Use tune2fs -c or-i to override.
創建一個mydata目錄,然後進行掛載mount /dev/md0 mydata/,使用mount看是否掛載成功,使用 df –lh 查看創建的RAID的信息
[root@localhost~]# mount /dev/md0 mydata/
[root@localhost~]# mount
/dev/mapper/vg0-rooton / type ext4 (rw)
proc on /proctype proc (rw)
sysfs on /systype sysfs (rw)
devpts on/dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on/dev/shm type tmpfs (rw)
/dev/sda1 on/boot type ext4 (rw)
/dev/mapper/vg0-usron /usr type ext4 (rw)
/dev/mapper/vg0-varon /var type ext4 (rw)
none on/proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/md0 on/root/mydata type ext4 (rw)
[root@localhost~]# df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg0-root 20G 287M 19G 2% /
tmpfs 935M 0 935M 0% /dev/shm
/dev/sda1 190M 33M 148M 18% /boot
/dev/mapper/vg0-usr 9.8G 1.9G 7.4G 21% /usr
/dev/mapper/vg0-var 20G 195M 19G 2% /var
/dev/md0 9.8G 23M 9.3G 1% /root/mydata
這就算創建成功了,如果要開機自動掛載,需要寫入/etc/fstab中,要先使用
blkid /etc/md0查到UUID,進行編寫,因爲每次開機的設備名可能不同
[root@localhost~]# blkid /dev/md0
/dev/md0:UUID="ec8d3b6c-4599-4176-88e0-372cfd5b01c5" TYPE="ext4"