创建raid
# 创建软 RAID
在 Linux 服务器中可通过 mdadm 工具来创建和维护软 RAID 的, mdadm 在创建和管理软 RAID 时非常方便,而且很灵活。
mdadm 常用的参数有如下:
- -C --create:创建一个软 RAID,后面需要标识 RAID 设备的名称。例如,/dev/md0,/dev/md1
- -A --assemble:加载一个已存在的 RAID,后面跟 RAID 以及设备的名称。
- -D --detail:输出指定 RAID 设备的详细信息。
- -S --stop:停止指定的 RAID 设备。
- -l --level:指定 RAID 配置级别,例如,设置“--level=5”则表示创建阵列的级别是 RAID 5。
- -n --raid-devices:指定 RAID 中活动磁盘的数目。
- -r --remove:删除 RAID 中的某个磁盘
- -a --add:向 RAID 中添加磁盘
- -s --scan:扫描配置文件/proc/mdstat 来搜索软 RAID 的配置信息,该参数不能单独使用,需要配合其它参数才能使用。
在实际生产环境中,系统硬盘与数据库和应用是分开的,这样有利于系统的维护和对数据应用的使用,磁盘阵列可以在安装系统之前或之后产生,系统会视之为一个(大型)硬盘,而它具有容错及冗余的功能。磁盘阵列不单只可以加入一个现成的系统,它更可以支持容量扩展,方法也很简单,只需要加入一个新的硬盘并执行一些简单的指令,系统便可以实时利用这新加的容量。
# RAID 的种类及应用
IDE 和 SCSI 是计算机的两种不同的接口,前者普遍用于 PC 机,后者一般用于服务器。
基于这两种接口,RAID 分为两种类型:
- 基于 IDE 接口的 RAID 应用,称为 IDE RAID;
- 基于 SCSI接口的 RAID 应用则相应称为 SCSI RAID。
基于不同的架构,RAID 又可以分为:
- 软件 RAID (软件 RAID)
- 硬件 RAID (硬件 RAID)
- 外置 RAID (External RAID)
软件 RAID 很多情况下已经包含在系统之中,并成为其中一个功能,如 Windows、Netware及 Linux。软件 RAID 中的所有操作皆由中央处理器负责,所以系统资源的利用率会很高,从而使系统性能降低。软件 RAID 是不需要另外添加任何硬件设备,因为它是靠你的系统,主要是中央处理器的功能提供所有现成的资源。
硬件 RAID 通常是一张 PCI 卡,你会看到在这卡上会有处理器及内存。因为这卡上的处理器已经可以提供一切 RAID 所需要的资源,所以不会占用系统资源,从而令系统的表现可以大大提升。硬件 RAID 可以连接内置硬盘、热插拔背板或外置存储设备。无论连接何种硬盘,控制权都是在 RAID 卡上,亦即是由系统所操控。在系统里,硬件 RAID PCI 卡通常都需要安驱动程序,否则系统会拒绝支持。
外置式 RAID 也是属于硬件 RAID 的一种,区别在于 RAID 卡不会安装在系统里,而是安装在外置的存储设备内。而这个外置的储存设备则会连接到系统的 SCSI 卡上。系统没有任何的 RAID 功能,因为它只有一张 SCSI 卡;所有的 RAID 功能将会移到这个外置存储里。好处是外置的存储往往可以连接更多的硬盘,不会受系统机箱的大小所影响。而一些高级的技术,如双机容错,是需要多个服务器外连到一个外置储存上,以提供容错能力。
环境描述:
操作系统 IP 地址 主机名 软件包列表
CentOS6.6-x86_64 192.168.200.101 localhost mdadm
LINUX 服务器中添加 1 块 100G 空闲的硬盘,划分 4 个 20G 的分区用来练习创建一个RAID 5 及其后期维护操作。
# 安装前准备配置
[root@localhost ~]# cat /etc/redhat-release
CentOS release 6.6 (Final)
[root@localhost ~]# uname -r
2.6.32-504.el6.x86_64
[root@localhost ~]# uname -m
x86_64
[root@localhost ~]# rpm -q mdadm
mdadm-3.3-6.el6.x86_64
2
3
4
5
6
7
8
创建 4 个 个 20G 的分区
首先使用“fdisk”命令在硬盘上创建 4 个分区,操作如下:
[root@localhost ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel with disk identifier 0x8f67b364.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to sectors (command 'u').
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-13054, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-13054, default 13054): +20G
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (2613-13054, default 2613):
Using default value 2613
Last cylinder, +cylinders or +size{K,M,G} (2613-13054, default 13054): +20G
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (5225-13054, default 5225):
Using default value 5225
Last cylinder, +cylinders or +size{K,M,G} (5225-13054, default 13054): +20G
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Selected partition 4
First cylinder (7837-13054, default 7837):
Using default value 7837
Last cylinder, +cylinders or +size{K,M,G} (7837-13054, default 13054): +20G
Command (m for help): p
Disk /dev/sdb: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 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: 0x8f67b364
Device Boot Start End Blocks Id System
/dev/sdb1 1 2612 20980858+ 83 Linux
/dev/sdb2 2613 5224 20980890 83 Linux
/dev/sdb3 5225 7836 20980890 83 Linux
/dev/sdb4 7837 10448 20980890 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@localhost ~]# partprobe /dev/sdb
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# 创建 RAID5
创建完/dev/sdb1、 /dev/sdb2、 /dev/sdb3、 /dev/sdb4 四个分区后,下面就可以创建RAID 5 了,其中设定/dev/sdb4 作为备用磁盘,其余为活动磁盘,备用磁盘的作用是一旦某一设磁盘损坏可以立即使用备用磁盘替换。
操作命令如下:
[root@localhost ~]# mdadm --create /dev/md5 --level=5 --raid-devices=3 --spare-devices=1
/dev/sdb[1-4]
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.
2
3
4
其中“--spare-devices=1”表示当前阵列中备用设备只有一块,即作为备用设备的“/dev/sdb4”,若有多块备用设备,则将“--spare-devices”的值设置为相应的数目。
成功创建完成 RAID 设备后,通过如下命令可以查看到 RAID 的详细信息:
[root@localhost ~]# mdadm --detail /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Tue Oct 18 22:59:32 2016
Raid Level : raid5
Array Size : 41928704 (39.99 GiB 42.93 GB)
Used Dev Size : 20964352 (19.99 GiB 21.47 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Tue Oct 18 23:01:01 2016
State : clean, degraded, recovering
Active Devices : 2
Working Devices : 4
Failed Devices : 0
Spare Devices : 2
Layout : left-symmetric
Chunk Size : 512K
Rebuild Status : 14% complete
Name : localhost.localdomain:5 (local to host localhost.localdomain)
UUID : 307f1234:08c3d0ec:c31390d1:cbbecfc9
Events : 3
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 18 1 active sync /dev/sdb2
4 8 19 2 spare rebuilding /dev/sdb3
3 8 20 - spare /dev/sdb4
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 创建 RAID 的配置文件
RAID 的配置文件名为“mdadm.conf”,默认是不存在的,所以需要手工创建,该配置文件存在的主要作用是系统启动的时候能够自动加载软 RAID,同时也方便日后管理。
“mdadm.conf”文件内容包括:由 DEVICE 选项指定用于软 RAID 的所有设备,和 ARRAY 选项所指定阵列的设备名、 RAID 级别、阵列中活动设备的数目以及设备的 UUID 号。
生成RAID 配置文件操做如下:
[root@localhost ~]# mdadm --detail --scan > /etc/mdadm.conf
但是当前生成“mdadm.conf”文件的内容并不符合所规定的格式,所以也是不生效的,这时需要手工修改该文件内容为如下格式:
[root@localhost ~]# vim /etc/mdadm.conf
DEVICE /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb4
ARRAY /dev/md5 metadata=1.2 spares=1 name=localhost.localdomain:5
UUID=307f1234:08c3d0ec:c31390d1:cbbecfc9
2
3
4
如果没有创建 RAID 的配置文件,那么在每次系统启动后,需要手工加载软 RAID 才能使用,手工加载软 RAID 的命令是:
[root@localhost ~]# mdadm --assemble /dev/md5 /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb4
# 创建文件系统
接下来就只需要在 RAID 设备上创建文件系统就可使用了,在 RAID 设备上创建文件系统和在分区或磁盘上创建文件系统的方法一样。在设备“/dev/md5”上创建 ext4 的文件系统命令如下:
[root@localhost ~]# mkfs.ext4 /dev/md5
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
2621440 inodes, 10482176 blocks
524108 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
320 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 22 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@localhost ~]# mkdir /data
[root@localhost ~]# mount /dev/md5 /data
[root@localhost ~]# df -TPh
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root ext4 50G 4.4G 43G 10% /
tmpfs tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 ext4 477M 34M 419M 8% /boot
/dev/mapper/VolGroup-lv_home ext4 26G 44M 25G 1% /home
/dev/sr0 iso9660 4.4G 4.4G 0 100% /media/cdrom
/dev/md5 ext4 40G 48M 38G 1% /data
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
创建完文件系统后,将该设备挂载上就可正常的使用了。如果要创建其它级别的 RAID,其步骤和创建 RAID 5 基本都一样,区别在于指定“--level”值的时候,需要将该值设置为相应的级别。
设置开机自动挂载,在/etc/fstab 中加入下面一行:
/dev/md5 /data ext4 defaults 0 0
挂载测试
[root@localhost ~]# umount /dev/md5
[root@localhost ~]# mount /dev/md5
[root@localhost ~]# mount | tail -1
/dev/md5 on /data type ext4 (rw)
2
3
4
# 维护软 RAID
软 RAID 虽然很大程度上能保证数据的可靠性,但是在日常的工作中,有时可能需要对 RAID进行调整以及不排除 RAID 设备物理介质损坏的可能等相关问题,当遇到这些情况时,那么同样可以通过“mdadm”命令来完成这些操作。下面也将通过一个实例来介绍更换 RAID 故障磁盘的完整过程。
# 模拟故障磁盘
假设其中的“/dev/sdb2”设备出现故障时,更换一个新的磁盘,整个过程的详细说明如下:
在实际中,当软 RAID 检测到某个磁盘有故障时,会自动标记该磁盘为故障磁盘,并停止对故障磁盘的读写操作,所以这里需要将/dev/sdb2 标记为出现故障的磁盘,命令如下:
[root@localhost ~]# mdadm /dev/md5 --fail /dev/sdb2
mdadm: set /dev/sdb2 faulty in /dev/md5
2
由于 RAID 5 设置了一个备用设备,所以当有标记为故障磁盘的时候,备用磁盘会自动顶替故障磁盘工作,阵列也能够在短时间内实现重建。通过“/proc/mdstat”文件可查看到当前阵列的状态,如下:
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md5 : active raid5 sdb3[4] sdb4[3] sdb2[1](F) sdb1[0]
41928704 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [U_U]
[==>..................] recovery = 11.9% (2503664/20964352) finish=10.0min
speed=30455K/sec
unused devices: <none>
2
3
4
5
6
7
以上信息表明阵列正在重建, 当一个设备出现故障或被标记故障时,相应设备的方括号后将被标以(F),如“sdc1[4](F)”,其中“[3/2]”的第一位数表示阵列所包含的设备数,第二位数表示活动的设备数,因为目前有一个故障设备,所以第二位数为 2;这时的阵列以降级模式运行,虽然该阵列仍然可用,但是不具有数据冗余;而“[U_U]”表示当前阵列可以正常使用的设备是/dev/sdb1 和/dev/sdb3,如果是设备“/dev/sdb1”出现故障时,则将变成[_UU]。
重建完数据后,再次查看阵列状态时,就会发现当前的 RAID 设备又恢复了正常,如下:
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md5 : active raid5 sdb3[4] sdb4[3] sdb2[1](F) sdb1[0]
41928704 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
unused devices: <none>
2
3
4
5
# 移除故障磁盘
既然“/dev/sdb2”出现了故障,当然要移除该设备,移除故障磁盘的操作如下:
[root@localhost ~]# mdadm /dev/md5 --remove /dev/sdb2
mdadm: hot removed /dev/sdb2 from /dev/md5
2
其中“--remove”表示移除指定 RAID 设备中的某个磁盘,也可用“-r”来代替该参数。
# 添加新硬盘
在添加新的硬盘前,同样需要对新硬盘进行创建分区的操作,例如,添加新硬盘的设备名为“/dev/sdb2”,则具体操作如下:
[root@localhost ~]# mdadm /dev/md5 --add /dev/sdb2
mdadm: added /dev/sdb2
2
其中“--add”与前面的“--remove”其义刚好相反,用于将某个磁盘添加到指定的设备中,也可用“-a”代替该参数。
由于 RAID 5 设置了一个备用设备,所以不需要做任何操作 RAID 5 也能正常运行,但是如果这时某块磁盘再出现故障的话,会导致 RAID 5 没有数据冗余功能,这对于存放重要的数据的设备来说显得太不安全了。那么这时增加到 RAID 5 中的“/dev/sdb2”则作为备用设备出现在阵列中,如下:
[root@localhost ~]# mdadm --detail /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Tue Oct 18 22:59:32 2016
Raid Level : raid5
Array Size : 41928704 (39.99 GiB 42.93 GB)
Used Dev Size : 20964352 (19.99 GiB 21.47 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Tue Oct 18 23:45:36 2016
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Name : localhost.localdomain:5 (local to host localhost.localdomain)
UUID : 307f1234:08c3d0ec:c31390d1:cbbecfc9
Events : 39
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
3 8 20 1 active sync /dev/sdb4
4 8 19 2 active sync /dev/sdb3
5 8 18 - spare /dev/sdb2
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 测试
[root@localhost ~]# hdparm -t /dev/md5
/dev/md5:
Timing buffered disk reads: 1314 MB in 3.00 seconds = 437.64 MB/sec
[root@localhost ~]# hdparm -t /dev/sda
/dev/sda:
Timing buffered disk reads: 58 MB in 3.00 seconds = 19.32 MB/sec
2
3
4
5
6
# 阵列卡介绍( raid 控制器 )
阵列卡就是用来实现 RAID 功能的板卡,通常是由 I/O 处理器、硬盘控制器、硬盘连接器和缓存等一系列零组件构成的。
不同的 RAID 卡支持的 RAID 功能不同,例如支持 RAID 0、RAID 1、RAID 5、RAID 6、RAID10 等,RAID 卡的接口类型:IDE 接口、SCSI 接口、SATA 接口和 SAS 接口。
缓存(Cache)是 RAID 卡与外部总线交换数据的场所,RAID 卡先将数据传送到缓存,再由缓存和外边数据总线交换数据。它是 RAID 卡电路板上的一块存储芯片,与硬盘盘片相比,具有极快的存取速度。缓存的大小与速度是直接关系到 RAID 卡的实际传输速度的重要因素,大缓存能够大幅度地提高数据命中率从而提高 RAID 卡整体性能。不同的 RAID 卡出厂时配置的内存容量不同,一般为几兆到数百兆容量不等。
# 硬 RAID 创建步骤
# DELL 0 R710 服务器案例
1、开机等待出现以下界面后看屏幕提示,准备按组合键(DELL :Crtl+R IBM:Crtl+H)进入raid 配置界面
2、当 dell 界面过去后屏幕会有相关组合键提示,同时按下 ctrl + r 进入 raid 配置界面,根据经验建议多按几次,进入到如下的配置界面,在图的右侧可以看到默认为 raid 5,磁盘大小等信息。
3、使用上下键移动到第二行的位置按下 F2,出现以下窗口,选择第二项( Delet Disk Group)然后回车,删除 raid5
出现确认窗口,选择 yes 确认。
4、删除 raid 5 后的状态:
5、然后按 F2 选择第一项(Create New VD)创建新的 RAID
6、进入到下面的界面,蓝色体的为选中状态,此时光标移动到 RAID level 那一栏,继续回车
7、此时出现三个选项,分别是 RAID-0 RAID-1 RAID-5 说明只能做 raid 0 和 raid1 和 raid5 ,raid10 需要至少 4 块磁盘,所以这里没有 raid10 的选项。
8、选择需要做的选项比如 RAID-0 ,然后在三块硬盘中选择需要做的硬盘, tab 键移动到该位置选择用空格键就可以,最后选择 ok
RAID-1 只能选择两块硬盘,如下图 ( raid-0 和 raid-5 都可以选择 3 块)
然后再选择 ok
然后按 ctrl + n 可以翻屏查看其他信息
最后按 esc 准备保存退出,弹出下图窗口选择 ok
出现以下界面后,根据提示操作就可以了