一,什么是磁盘阵列
磁盘阵列全名是“Redundant Arrays of Independent Disks,RAID”,英翻中的意思是:独立冗余磁盘阵列。RAID 可以透过一个技术(软件或硬件),将多个较小的磁碟整合成为一个较大的磁碟装置; 而这个较大的磁碟功能可不止是储存而已,他还具有数据保护的功能。整个 RAID 由于选择的等级 (level) 不同,而使得整合后的磁碟具有不同的功能, 基本常见的 level 有这几种:
1,RAID-0:条带
这种模式的 RAID 会将磁碟先切出等量的区块, 然后当一个文件要写入 RAID 时,该文件会依据区块的大小切割好,之后再依序放到各个磁碟里面去。
特点:
——–> 性能提升: 读,写
——–> 冗余能力(容错能力): 无
——–> 空间利用率:nS
——–> 至少2块盘
2,RAID-1 (mirror):镜像
这种模式主要是让同一份数据,完整的保存在两个磁盘上。
特点:
——–> 性能表现:写性能下降,读性能提升
——–> 冗余能力:有
——–> 空间利用率:1/2
——–> 至少2块盘
3,RAID-5:轮流校验盘
RAID-5 至少需要三颗以上的磁碟才能够组成这种类型的磁盘阵列。这种磁盘阵列的数据写入有点类似 RAID-0 , 不过每个循环的写入过程中,在每颗磁碟还加入一个同位检查数据 (Parity) ,这个数据会记录其他磁碟的备份数据, 用于当有磁碟损毁时的救援。
特点:
——–> 性能表现:读,写提升
——–> 冗余能力:有
——–> 空间利用率:(n-1)/n
——–> 至少需要3块
4,RAID 1+0
RAID-0 的效能佳但是数据不安全,RAID-1 的数据安全但是效能不佳,RAID 1+0 就是先组成 RAID-1 再组成 RAID-0 。
特点:由于具有 RAID 0 的优点,所以效能得以提升,由于具有 RAID 1 的优点,所以数据得以备份。
——–> 性能表现:读、写提升
——–> 冗余能力:有
——–> 空间利用率:1/2
——–> 至少需要4块
5,RAID 0+1
(1)先让两颗磁碟组成 RAID 0,并且这样的配置共有两组; (2)将这两组 RAID 0 再组成一组 RAID 1,这就是 RAID 0+1 !
特点:由于具有 RAID 0 的优点,所以效能得以提升,由于具有 RAID 1 的优点,所以数据得以备份。
——–> 性能表现:读、写提升
——–> 冗余能力:有
——–> 空间利用率:1/2
——–> 至少需要4块
二,软件磁盘阵列(RAID)的配置
软件磁盘阵列的配置很简单,使用mdadm 这套软件。由于软件磁盘阵是系统模拟的,因此使用的装置档名是系统的装置档, 档名为 /dev/md0, /dev/md1…。
mdadm用法如下:
——–> 创建模式:-C
———–> 专用选项:
—————> -l: 级别
—————> -n #: 设备个数
—————> -a {yes|no}: 是否自动为其创建设备文件
—————> -c: CHUNK(数据块)大小, 2^n,默认为64K
—————> -x #: 指定空闲盘个数
——–> 管理模式:–add, –remove, –fail
——–> 监控模式:-F
——–> 增长模式:-G
——–> 装配模式(重新启动):-A
查看RAID阵列的详细信息:-D
停止阵列:-S
1,创建一个RAID0,使用 两个2G的分区,挂载到/mnt目录下,步骤如下:
创建分区–>创建软RAID–>格式化–>挂载
首先创建好需要使用的分区,每一个的大小都为2G,修改其类型为fd,创建好如下(不会创建的请参考他资料):
<code> ←#1#root@localhost ~ →fdisk -l Disk /dev/sdc: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xaf97b19a Device Boot Start End Blocks Id System /dev/sdc1 1 132 1060258+ fd Linux raid autodetect /dev/sdc2 133 264 1060290 fd Linux raid autodetect /dev/sdc3 265 526 2104515 fd Linux raid autodetect /dev/sdc4 527 1832 10490445 5 Extended /dev/sdc5 527 788 2104483+ fd Linux raid autodetect /dev/sdc6 789 1050 2104483+ fd Linux raid autodetect /dev/sdc7 1051 1312 2104483+ fd Linux raid autodetect /dev/sdc8 1313 1574 2104483+ fd Linux raid autodetect /dev/sdc9 1575 1832 2072353+ fd Linux raid autodetect ←#3#root@localhost ~ →mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdc{1,2} #创建RAID0 mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started. ←#4#root@localhost ~ →cat /proc/mdstat #显示当前设备上所有一起用的RAID设备 Personalities : [raid0] md0 : active raid0 sdc2[1] sdc1[0] 2117632 blocks super 1.2 512k chunks unused devices: <none> </code>
第一行部分:指出 md0 为 raid0 ,且使用了 sdc2,sdc1 两块分区。每个装置后面的中括号 [] 内的数字为此分区在 RAID 中的顺序 (RaidDevice)。
第二行:此磁盘阵列拥有 2117632 个block(每个 block 单位为 1K),所以总容量约为 2GB, 使用 RAID 0 等级,写入磁碟的小区块 (chunk) 大小为 512K。
<code> ←#5#root@localhost ~ →mke2fs -j /dev/md0 #格式化分区 mke2fs 1.41.12 (17-May-2010) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=128 blocks, Stripe width=256 blocks 132464 inodes, 529408 blocks 26470 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=545259520 17 block groups 32768 blocks per group, 32768 fragments per group 7792 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 37 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. ←#6#root@localhost ~ →fdisk -l #查看创建好的分区 Disk /dev/md0: 2168 MB, 2168455168 bytes 2 heads, 4 sectors/track, 529408 cylinders Units = cylinders of 8 * 512 = 4096 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 524288 bytes / 1048576 bytes Disk identifier: 0x00000000 ←#12#root@localhost ~ →mount /dev/md0 /mnt/ #挂载 ←#11#root@localhost ~ →ls /mnt/ #确认是否挂载成功 lost+found ←#6#root@localhost ~ →mdadm -D /dev/md0 #查看md0详细信息 /dev/md0: <==RAID 装置档名 Version : 1.2 Creation Time : Thu Jun 18 02:45:08 2015 <==RAID 被创建的时间 Raid Level : raid0 <==RAID 等级为 RAID 0 Array Size : 2117632 (2.02 GiB 2.17 GB) <==此 RAID 的可用磁碟容量 Raid Devices : 2 <==用作 RAID 的装置数量 Total Devices : 2 <==全部的装置数量 Persistence : Superblock is persistent Update Time : Thu Jun 18 02:45:08 2015 State : clean Active Devices : 2 <==启动的(active)装置数量 Working Devices : 2 <==可动作的装置数量 Failed Devices : 0 <==出现错误的装置数量 Spare Devices : 0 <==预备磁碟的数量 Chunk Size : 512K <==数据块大小 Name : localhost.localdomain:0 (local to host localhost.localdomain) UUID : 7f598522:c203a686:58fe60ca:38c5d747 <==此装置(RAID)识别码 Events : 0 Number Major Minor RaidDevice State 0 8 33 0 active sync /dev/sdc1 1 8 34 1 active sync /dev/sdc2 </code>
2,创建RAID1,2个2G的分区,挂载到/media目录下
<code> ←#7#root@localhost ~ →mdadm -C /dev/md1 -a yes -n 2 -l 1 /dev/sdc{5,6} #创建镜像RAID1 mdadm: Note: this array has metadata at the start and may not be suitable as a boot device. If you plan to store '/boot' on this device please ensure that your boot-loader understands md/v1.x metadata, or use --metadata=0.90 Continue creating array? y mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md1 started. ←#8#root@localhost ~ →cat /proc/mdstat #查看其同步过程 Personalities : [raid0] [raid1] md1 : active raid1 sdc6[1] sdc5[0] 2102400 blocks super 1.2 [2/2] [UU] [===============>.....] resync = 76.0% (1600000/2102400) finish=0.0min speed=228571K/sec md127 : active raid0 sdc2[1] sdc1[0] 2117632 blocks super 1.2 512k chunks unused devices: <none> ←#9#root@localhost ~ →cat /proc/mdstat Personalities : [raid0] [raid1] md1 : active raid1 sdc6[1] sdc5[0] 2102400 blocks super 1.2 [2/2] [UU] [===================>.] resync = 95.1% (2000000/2102400) finish=0.0min speed=222222K/sec md127 : active raid0 sdc2[1] sdc1[0] 2117632 blocks super 1.2 512k chunks unused devices: <none> ←#10#root@localhost ~ →cat /proc/mdstat #同步完成 Personalities : [raid0] [raid1] md1 : active raid1 sdc6[1] sdc5[0] 2102400 blocks super 1.2 [2/2] [UU] md127 : active raid0 sdc2[1] sdc1[0] 2117632 blocks super 1.2 512k chunks unused devices: <none> ←#14#root@localhost ~ →mke2fs -j /dev/md1 #格式化 ←#15#root@localhost ~ →mount /dev/md1 /media/ #挂载 ←#17#root@localhost ~ →ls /media/ lost+found ←#26#root@localhost /media →mdadm -D /dev/md1 #-D显示设备的详细信息 /dev/md1: Version : 1.2 Creation Time : Thu Jun 18 04:03:29 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 : Thu Jun 18 04:08:19 2015 State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 Name : localhost.localdomain:1 (local to host localhost.localdomain) UUID : 2380ce94:98039c97:daf1f4c9:55b4bac1 Events : 17 Number Major Minor RaidDevice State 0 8 37 0 active sync /dev/sdc5 1 8 38 1 active sync /dev/sdc6 ←#29#root@localhost /media →mdadm /dev/md1 -f /dev/sdc5 #模拟损坏设备 mdadm: set /dev/sdc5 faulty in /dev/md1 ←#30#root@localhost /media →mdadm -D /dev/md1 #查看详细信息 /dev/md1: Version : 1.2 Creation Time : Thu Jun 18 04:03:29 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 : Thu Jun 18 04:13:50 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 : 2380ce94:98039c97:daf1f4c9:55b4bac1 Events : 19 Number Major Minor RaidDevice State 0 0 0 0 removed 1 8 38 1 active sync /dev/sdc6 0 8 37 - faulty /dev/sdc5 ----->已损坏 ←#34#root@localhost /media →mdadm /dev/md1 -r /dev/sdc5 #删掉磁盘 mdadm: hot removed /dev/sdc5 from /dev/md1 ←#35#root@localhost /media →mdadm -D /dev/md1 #再次查看 /dev/md1: Version : 1.2 Creation Time : Thu Jun 18 04:03:29 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 : Thu Jun 18 04:16:03 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 : 2380ce94:98039c97:daf1f4c9:55b4bac1 Events : 24 Number Major Minor RaidDevice State 0 0 0 0 removed 1 8 38 1 active sync /dev/sdc6 ←#36#root@localhost /media →mdadm /dev/md1 -a /dev/sdc7 #重新添加一块磁盘,注意大小要保持一直 mdadm: added /dev/sdc7 ←#37#root@localhost /media →mdadm -D /dev/md1 /dev/md1: Version : 1.2 Creation Time : Thu Jun 18 04:03:29 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 : Thu Jun 18 04:17:00 2015 State : clean, degraded, recovering Active Devices : 1 Working Devices : 2 Failed Devices : 0 Spare Devices : 1 Rebuild Status : 85% complete Name : localhost.localdomain:1 (local to host localhost.localdomain) UUID : 2380ce94:98039c97:daf1f4c9:55b4bac1 Events : 39 Number Major Minor RaidDevice State 2 8 39 0 spare rebuilding /dev/sdc7 1 8 38 1 active sync /dev/sdc6 ←#5#root@localhost ~ →mdadm /dev/md1 -f /dev/sdc6 #再损坏6 mdadm: set /dev/sdc6 faulty in /dev/md1 ←#6#root@localhost ~ →mdadm -D /dev/md1 /dev/md1: Version : 1.2 Creation Time : Thu Jun 18 04:03:29 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 : Thu Jun 18 04:56:54 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 : 2380ce94:98039c97:daf1f4c9:55b4bac1 Events : 45 Number Major Minor RaidDevice State 2 8 39 0 active sync /dev/sdc7 2 0 0 2 removed 1 8 38 - faulty /dev/sdc6 ------>损坏/dev/sdc6 ←#7#root@localhost ~ →cat /media/ fstab lost+found/ ←#7#root@localhost ~ →cat /media/fstab #查看数据是否同步了 # # /etc/fstab # Created by anaconda on Mon Apr 20 12:35:03 2015 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=a513b95f-c2cd-49a5-8fc7-1903f74d6dab / ext4 defaults 1 1 UUID=c691b684-befb-4215-8d34-4a1063927955 /boot ext4 defaults 1 2 UUID=da3b73a0-20b9-415b-879e-0519af98cf4f swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 /root/swap swap swap defaults 0 0 /dev/myvg/mydata /mydata ext3 defaults 0 0 #//192.168.2.114//test /mnt cifs credentials=/etc/samba/cred.passwd 0 0 ←#15#root@localhost /media →mdadm -S /dev/md1 #停止md1 mdadm: stopped /dev/md1 ←#16#root@localhost /media →cat /proc/mdstat Personalities : [raid0] [raid1] md127 : active raid0 sdc2[1] sdc1[0] 2117632 blocks super 1.2 512k chunks unused devices: <none> ←#22#root@localhost /media →mdadm -A /dev/md1 /dev/sdc{6,7} #重新装配设备,/dev/sdc6已损坏 mdadm: /dev/md1 has been started with 1 drive (out of 2). </code>
添加为三块盘设定一个作为热代替的,先删除/dev/sdc6,将/dev/sdc8添加上去
<code> ←#14#root@localhost ~ →mdadm /dev/md1 -a /dev/sdc5 #添加第三块 mdadm: added /dev/sdc5 ←#15#root@localhost ~ →mdadm -D /dev/md1 /dev/md126: Version : 1.2 Creation Time : Thu Jun 18 04:03:29 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 : 3 Persistence : Superblock is persistent Update Time : Thu Jun 18 05:59:41 2015 State : clean Active Devices : 2 Working Devices : 3 Failed Devices : 0 Spare Devices : 1 Name : localhost.localdomain:1 (local to host localhost.localdomain) UUID : 2380ce94:98039c97:daf1f4c9:55b4bac1 Events : 68 Number Major Minor RaidDevice State 2 8 39 0 active sync /dev/sdc7 3 8 40 1 active sync /dev/sdc8 4 8 37 - spare /dev/sdc5 ---->空闲的 ----------------(/dev/md1=/dev/md1) ←#20#root@localhost ~ →mdadm /dev/md1 -f /dev/sdc7 #模拟/dev/sdc7出错,测试/dev/sdc5是否会自动顶上去 mdadm: set /dev/sdc7 faulty in /dev/md1 ←#22#root@localhost ~ →mdadm -D /dev/md1 /dev/md1: Version : 1.2 Creation Time : Thu Jun 18 04:03:29 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 : 3 Persistence : Superblock is persistent Update Time : Thu Jun 18 06:02:50 2015 State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 1 Spare Devices : 0 Name : localhost.localdomain:1 (local to host localhost.localdomain) UUID : 2380ce94:98039c97:daf1f4c9:55b4bac1 Events : 87 Number Major Minor RaidDevice State 4 8 37 0 active sync /dev/sdc5 ------->/dev/sdc5自动顶上去了 3 8 40 1 active sync /dev/sdc8 2 8 39 - faulty /dev/sdc7 -------->/dev/sdc7出错 ←#23#root@localhost ~ → </code>
三,启动自动启动 RAID 并自动挂载
<code> ←#26#root@localhost ~ →mdadm -D --scan #自动扫描所有raid及其关联的设备 ←#27#root@localhost ~ →mdamd -D --scan > /etc/mdadm.conf #将当前RAID信息保存至配置文件,以便以后进行装配(以后开机会自动读取) ←#28#root@localhost ~ vim /etc/fstab #添加以下行 /dev/md1 /mnt/media ext3 defaults 1 2 </code>