硬件阵列和软件阵列
硬件阵列需要使用磁盘阵列卡,系统要安装磁盘阵列的驱动器
RAID级别
RAID在存储的时候会将各个磁盘预划分为等同的小区块,在写数据时将数据按照磁盘小区(称为chunk)块的大小进行写数据。
RAID-0:
至少两块磁盘。在写数据时是按顺序依次写入各个磁盘中
优点:磁盘总容量是各磁盘之和。等量模式,性能最佳,写性能
缺点:1、任何一个磁盘损毁,整个RAID上面的数据都将丢失而无法读取。
2、如果组成RAID-0的磁盘容量不等,那么等到容量小的磁盘用完,数据只能写入容量大的磁盘中。
性能提升:读,写
冗余能力:无
空间利用率:ns
RAID-1:映像模式,完整备份
至少需要两块相同磁盘,如果不同,总容量将以容量小的磁盘容量为主
优点:数据完整备份,读性能好,写性能差
性能表现:写性能下降,读性能提升
冗余能力:有
空间利用率:1/2
RAID 0+1:先做两组RAID-0,在将两组RAID-0做成RAID-1
性能提升:读,写提升
冗错能力:有
空间利用率:1/2
RAID 1+0:先做两组RAID-1,在将两组RAID-1做成RAID-0
性能提升:读,写提升
冗错能力:每组只允许块一个磁盘
空间利用率:1/2
RAID-4 :至少需要3块磁盘,第三块磁盘做校验码
性能提升:读,写提升
冗错能力:有
空间利用率:(n-1)/n
RAID-5:至少三块磁盘,两块存数据,一块存校验码,只能允许有1块磁盘的损坏.在将数据块写入磁盘时采用校验码对角线存放的机制来保证数据的安全,分为左对角线存放(通常使用)和右对角线存放。
性能提升:读,写
冗余能力:有
空间利用率:(n-1)/n
RAID-6:是在RAID-5的基础上在加一块磁盘作为校验盘,可以允许出现两块磁盘损坏
性能提升:读,写
冗余能力:有
空间利用率:(n-2)/n
JBOD技术:简单将多个磁盘逻辑成一个磁盘来应用,单纯扩容功能,读写速度和数据安全不变
性能提升:读,写
冗余能力:有
空间利用率:完全利用
提供磁盘阵列的软件是mdadm
硬盘类型:
SATA:133Bbps,600Mbps,6Gbps 串行
IDE:133Mbps 并行
CISC: small computer system interface 并行总结
USB:3.0达到480Mbps 串行
SAS:
linux中有md模块支持做RAID磁盘阵列
使用mdadm命令,支持将任何模块设备做成RAID
模式化的命令: mdadm [mode] <raiddevice> [options] <component-devices>
创建模式
-C
-l :级别
-n:设备个数
-a:自动创建其设备文件。yes
-x :指明空闲盘的个数
-c:指明chunk大小(小分区块的大小)
管理模式
-f: 标记指定磁盘为损坏;
-a: 添加磁盘
-r: 移除磁盘
mdadm /dev/md# --fail或者-f /dev/sdb1
增长模式
-G
监控模式
-F
装配模式
-A
查看阵列的详细信息
-D 或者--detail
观察md的状态:
cat /proc/mdstat
停止md设备:
mdadm -S /dev/md#
watch命令:周期性的执行某个命令,并以全屏方式显示结果
watch -n # ‘commend’
停用阵列
-S 或者--stop
例如创建RAID-0
在同一磁盘不同分区创建RAID-0
第一步:创建两个2G的分区/dev/sdb1 /dev/sdb2,分区类型是fd
第二步:创建阵列/dev/md0
[root@localhost ~]# mdadm -C /dev/md0 -a yes -n 2 -l 0 /dev/sdb1 /dev/sdb2
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid0]
md0 : active raid0 sdb2[1] sdb1[0]
4208640 blocks super 1.2 512k chunks
unused devices: <none>
第三步:格式化/dev/md0
[root@localhost ~]# mkfs -t ext3 /dev/md0
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
263472 inodes, 1052160 blocks
52608 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=1077936128
33 block groups
32768 blocks per group, 32768 fragments per group
7984 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
This filesystem will be automatically checked every 32 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@localhost ~]#
第四步:挂载使用/dev/md0到/mnt/md文件
[root@localhost ~]# mkdir /mnt/md
[root@localhost ~]# ls /mnt/md
[root@localhost ~]# ls /mnt
md
[root@localhost ~]# mount /dev/md0 /mnt/md
[root@localhost ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda1 10079084 2172384 7394700 23% /
tmpfs 255464 0 255464 0% /dev/shm
/dev/sda3 3527712 72536 3275976 3% /home
/dev/sda2 5039616 141204 4642412 3% /usr/local
/dev/md0 4142444 139420 3792592 4% /mnt/md
[root@localhost ~]#
[root@localhost ~]# cd /mnt/md
[root@localhost md]# ls
lost+found
[root@localhost md]#
RAID-0完成
构建RAID-1
在/dev/sdc上创建/dev/sdc1 /dev/sdc2
创建RAID-1
[root@localhost mnt]# mdadm -C /dev/md1 -n 2 -l 1 /dev/sdc1 /dev/sdc2
[root@localhost mnt]# partprobe
[root@localhost mnt]# cat /proc/partitions
[root@localhost mnt]# cat /proc/mdstat
[root@localhost mnt]# mkfs -t ext3 /dev/md1
[root@localhost mnt]# mount /dev/md1 /mnt/md1
RAID 模拟错误救援模式
模拟/dev/md0下的/dev/sdb1损坏
[root@localhost mnt]# mdadm /dev/md1 --fail /dev/sdc2
mdadm: set /dev/sdc2 faulty in /dev/md1
[root@localhost mnt]# mdadm --detail /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Tue Jun 30 01:23:45 2015
Raid Level : raid1
Array Size : 2102400 (2.01 GiB 2.15 GB)
Used Dev Size : 2102400 (2.01 GiB 2.15 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Tue Jun 30 01:38:09 2015
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 1
Spare Devices : 0
Name : localhost.localdomain:1 (local to host localhost.localdomain)
UUID : 232ccdda:5a8d76ba:f42a131a:3ce54a72
Events : 20
Number Major Minor RaidDevice State
0 8 33 0 active sync /dev/sdc1
1 0 0 1 removed
1 8 34 - faulty spare /dev/sdc2
[root@localhost mnt]# mdadm /dev/md1 --remove /dev/sdc2
mdadm: hot removed /dev/sdc2 from /dev/md1
[root@localhost mnt]# mdadm --detail /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Tue Jun 30 01:23:45 2015
Raid Level : raid1
Array Size : 2102400 (2.01 GiB 2.15 GB)
Used Dev Size : 2102400 (2.01 GiB 2.15 GB)
Raid Devices : 2
Total Devices : 1
Persistence : Superblock is persistent
Update Time : Tue Jun 30 01:41:17 2015
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0
Name : localhost.localdomain:1 (local to host localhost.localdomain)
UUID : 232ccdda:5a8d76ba:f42a131a:3ce54a72
Events : 23
Number Major Minor RaidDevice State
0 8 33 0 active sync /dev/sdc1
1 0 0 1 removed
[root@localhost mnt]#
在重启系统之后重启RAID 启动不了,查看cat /proc/partitions 文件,发现之前设定的RAID0和RAID1 变成了RAID 126和RAID 127 .
解决办法,执行mdadm -Ds > /etc/mdadm.conf 将RAID信息记录到文件中,重启系统重新启动RAID就不会出错了
RAID调优:
可以在格式化RAID的时候指定条带(stride)参数
mkfs -t ext3 -E stride=16 -b 4096 /dev/md0
注意 stride=chunk/block 的倍数
创建RAID-10
创建第一组RAID-1
[root@localhost ~]# mdadm -C /dev/md1 -n 2 -c 16M -l 1 /dev/sdb{5,6}
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sdb6[1] sdb5[0]
1059200 blocks super 1.2 [2/2] [UU]
unused devices: <none>
创建第二组RAID-1
[root@localhost ~]# mdadm -C /dev/md2 -n 2 -c 16M -l 1 /dev/sdb{7,8}
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sdb8[1] sdb7[0]
1059200 blocks super 1.2 [2/2] [UU]
md1 : active raid1 sdb6[1] sdb5[0]
1059200 blocks super 1.2 [2/2] [UU]
unused devices: <none>
在此基础上创建RAID-0
[root@localhost ~]# mdadm -C /dev/md10 -n 2 -l 10 /dev/md{1,2}
查看RAID-10
[root@localhost ~]# mdadm -D /dev/md10
/dev/md10:
Version : 1.2
Creation Time : Thu Aug 27 06:56:55 2015
Raid Level : raid10
Array Size : 1057792 (1033.17 MiB 1083.18 MB)
Used Dev Size : 1057792 (1033.17 MiB 1083.18 MB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Thu Aug 27 06:57:03 2015
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Name : localhost.localdomain:10 (local to host localhost.localdomain)
UUID : 20bbfec0:fda1c342:18cb8605:2c9964af
Events : 17
Number Major Minor RaidDevice State
0 9 1 0 active sync set-A /dev/md1
1 9 2 1 active sync set-B /dev/md2
格式化RAID-10
[root@localhost ~]# mke2fs -t ext3 -L "RAID-10" /dev/md10
查看RAID-10信息
[root@localhost ~]# blkid /dev/md10
/dev/md10: LABEL="RAID-10" UUID="b12da796-fa15-48ad-a46e-d94b90fa62b5" SEC_TYPE="ext2" TYPE="ext3"
挂载RAID-10至/mnt目录
[root@localhost ~]# mount /dev/md10 /mnt
然后就可以正常使用了。