服务器硬件及RAID配置实战
一 磁盘阵列
1. RAID磁盘阵列介绍
(1) 是 Redundant Array of Independent Disks的缩写,中文简称为独立冗余磁盘阵列。
(2) 把多块独立的物理硬盘按不同的方式组合起来形成一个硬盘组(逻辑硬盘) ,从而提供比单个硬盘更高的存储性能和提供数据备份技术。
(3) 组成磁盘阵列的不同方式称为RAID级别(RAID Levels)
(4) 常用的RAID级别
RAIDO, RAID1, RAID5, RAID6 , RAID1+0等
2. RAID 0磁盘阵列介绍(条带化存储)
(1) 连续以位或字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据传输率,但它没有数据冗余。
(2) 只是单纯地提高性能,而且其中的一个磁盘失效将影响到所有数据。
(3) 数据安全性差。
3. RAID 1磁盘阵列介绍(镜像存储)
(1) 通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据
(2) 当原始数据繁忙时,可以直接从镜像拷贝中读取数据,因此,RAID 1 可以提高读取性能
(3) RAID 1 是磁盘阵列中单位成本最高的,但是提供了很高的数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据。
4. RAID 5磁盘阵列介绍
(1) N (N>=3) 块盘组成阵列,一份数据产生N-1 个条带,同时还有1分校验数据,共N份数据在N块盘上循环存储
(2) N块盘同时读写,读性能很高,但是由于有校验机制的问题,写性能相对不高
(3) (N -1 )/ N 磁盘利用率
(4) 可靠性高,允许坏 1 块盘,不影响所有数据
5. RAID 6磁盘阵列介绍
(1) N (N>=4) 块盘组成阵列。
(2) (N -2) /N 磁盘利用率
(3) 与RAID 5 相比 , RAID 6 增加了 第二块独立的奇偶校验信息块
(4) 两个独立的奇偶系统使用不同的算法,即使两块磁盘同时失效也不会影响数据的使用
(5) 相对于RAID 5 有更大的“写损失” ,因此写性能相对较差
6. RAID 1+0磁盘阵列介绍(先做镜像,再做条带)
(1) RAID 1+0 (先做镜像,再做条带)
(2) N(偶数,N>=4) 块盘两两镜像后,再组合成一个RAID 0
(3) N/2 磁盘利用率
(4) N/2 块盘同时写入,N块盘同时读取
(5) 性能高,可靠性高
7. RAID 0+1磁盘阵列介绍(先做条带,再做镜像)
(1) 读写性能与RAID 10
(2) 安全性低于RAID 10
8. 各级RAID
RID 级别 |
硬盘数量 |
硬盘利用率 |
是否有校验 |
安全性 |
写性能 |
RAID 0 |
N |
N |
无 |
无 |
单个硬盘的N倍 |
RAID1 |
N(偶数) |
N/2 |
无 |
允许一个设备故障 |
需要写两对存储设备 |
RAID5 |
N>=3 |
(N-1)/N |
有 |
允许有一个设备故障 |
需要写计算校验数据 |
RAID6 |
N>=4 |
(N-2)/N |
有 |
允许有两个设备故障 |
需要写双重计算校验数据 |
RAID10 |
N>=4 |
N/2 |
无 |
允许两个基组中各坏一个 |
N/2 块盘同时写入 |
二 阵列卡
1. 阵列卡介绍
(1) 阵列卡是用来实现RAID功能的板卡
(2) 通常是由I/O处理器,硬盘控制器,硬盘连接器和缓存等一系列组建构成
(3) 不同的RAID 卡支持的RAID 功能不同
(4) RAID 卡接口类型:IDE接口,SCSI 接口,SATA接口,SAS接口
2. 阵列卡的缓存
(1) 缓存(Cache) 是RAID 卡与外部总线交换数据的场所,RAID 卡先是将数据传送到缓存,再由缓存和外边数据总线交换数据
(2) 缓存的大小与速度是直接关系到RAID 卡的实际传输速度的重要因素
(3) 不同的RAID 卡出厂时配备的内存容量不同,一般为几兆到数百兆容量等
三 创建RAID磁盘阵列步骤
1.检查是否已安装mdadm软件包
rpm -q mdadm
yum install -y mdadm
2.使用fdisk工具将新磁盘设备/dev/sdb、/dev/sdc、/dev/sd、/dev/sde划分出主分区sdb1、sdc1、sdl、sde1,并且把分区类型的ID标记号改为”fd"
fdisk / dev / sdb
fdisk /dev / sdc
3.创建RAID 设备
#创建RAID5
mdadm -C -v /dev/md0 [-a yes] -15 -n3 /dev/sd [bcd]1 -x1 1/dev/sde1
-c:表示新建;
-v:显示创建过程中的详细信息。
/ dev / md0:创建 PAID5的名称。
-a yes : --auto,表示如果有什么设备文件没有存在的话就自动创建,可省略。
-l:指定RAID的级别,15表示创建RAID5。
-n:指定使用几块硬盘创建RAID,n3表示使用3块硬盘创建RAID。
/dev/sd [bcd]1:指定使用这3块磁盘分区去创建RAID。
-x:指定使用几块硬盘做RAID的热备用盘,x1表示保留1块空闲的硬盘作备用/ dev / sde1:指定用作于备用的磁盘
#创建RAID10(先做镜象,再做条带)
mdadm -Cv /dev/md0 -11 -n2 /dev/sd [bc]1
mdadm -Cv /dev/md1 -11 -n2 /dev/sd [de]1
mdadm -Cv /dev/md10 -10 -n2 /dev/md0/dev/md1
#检查磁盘是否已做RAID
Mdadm -E /dev / sd[b-e]1
4.创建并挂载文件系统
mkfs -t xfs / dev / md0
Mkdir /myraid
mount /dev/ md0 / myraid/
df -Th
cp /etc/ fstab /etc/fstab. Bak
vim /etc/fstab
/dev/md0 /myraid xfs defaults 0 0
5.实现故障恢复
mdadm /dev/md0 -f /dev / sdb1 #模拟/dev / sdb1 故障
mdadm -D /dev/ md0 #查看发现sde1己顶替sdb1
6.创建/etc/mdadm.conf配置文件,方便管理软RAID的配置,比如启动、停止
echo 'DEVICE /dev/sdc1 /dev/sdb1 /dev/sdd1 /dev/sde1' > /etc/mdadm.confmdadm --detail --scan >> letc/mdadm. Conf
mdadm /dev/ md0 -f / dev / sdb1
mdadm /dev/ md0 -r /dev / sdb1
mdadm /dev/md0 -a /dev / sde1
echo 'DEVICE /dev/sdc1 /dev/sdb1 /dev/sdd1' > /etc/mdadm.confmdadm --detail --scan >> letc/ mdadm. Conf
umount /dev/md0
mdadm -s / dev/md0
mdadm -As /dev/md0
#一s:指查找/etc/mdadm. conf文件中的配置信息
四 实际操作
1.查看mdadm是否安装
[root@localhost ~]# rpm -qa | grep mdadm
2.磁盘分区并修改标记
[root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 60G 0 disk ├─sda1 8:1 0 500M 0 part /boot ├─sda2 8:2 0 4G 0 part [SWAP] └─sda3 8:3 0 55.5G 0 part / 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 [root@localhost ~]# echo 'n > p > > > > t > fd > w' | fdisk /dev/sdb #非交互式磁盘分区,并修改分区系统类型为raid ##磁盘/dev/sdbc /dev/sdd /dev/sde重复操作一下 [root@localhost ~]# for i in {b,c,d,e}; do fdisk -l /dev/sd$i | grep /dev/sd$i ; done #查看分区结果 磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区/dev/sdb1 2048 41943039 20970496 fd Linux raid autodetect 磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区/dev/sdc1 2048 41943039 20970496 fd Linux raid autodetect 磁盘 /dev/sdd:21.5 GB, 21474836480 字节,41943040 个扇区/dev/sdd1 2048 41943039 20970496 fd Linux raid autodetect 磁盘 /dev/sde:21.5 GB, 21474836480 字节,41943040 个扇区/dev/sde1 2048 41943039 20970496 fd Linux raid autodetect
3.创建RAID 设备
[root@localhost ~]# mdadm -C -v /dev/md0 -l5 -n3 /dev/sd[bcd]1 -x1 /dev/sde1 mdadm: layout defaults to left-symmetric mdadm: layout defaults to left-symmetric mdadm: chunk size defaults to 512K mdadm: size set to 20954112K mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 start [root@localhost ~]# cat /proc/mdstat #查看磁盘阵列的创建过程 Personalities : [raid6] [raid5] [raid4] md0 : active raid5 sdd1[4] sde1[3](S) sdc1[1] sdb1[0] #参与创建的磁盘 41908224 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_] #uu表示 两块磁盘状态完好 _ 表示磁盘不在线 (当前只创建好两个) [==========>..........] recovery = 53.7% (11271168/20954112) finish=0.7min speed=206000K/sec #创建进度 unused devices: <none> [root@localhost ~]# mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Tue Jun 22 09:09:38 2021 Raid Level : raid5 #磁盘阵列是raid 5 Array Size : 41908224 (39.97 GiB 42.91 GB) #阵列容量大小 Used Dev Size : 20954112 (19.98 GiB 21.46 GB) Raid Devices : 3 Total Devices : 4 Persistence : Superblock is persistent Update Time : Tue Jun 22 09:11:23 2021 State : clean Active Devices : 3 #正活跃的磁盘 Working Devices : 4 #此阵列工作的磁盘数 Failed Devices : 0 Spare Devices : 1 Layout : left-symmetric Chunk Size : 512K Consistency Policy : resync Name : localhost.localdomain:0 (local to host localhost.localdomain) UUID : 71f5d2f1:6c7c50ac:785f4ba3:58b2aa00 Events : 18 Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 1 8 33 1 active sync /dev/sdc1 4 8 49 2 active sync /dev/sdd1 #正在使用的三块磁盘 3 8 65 - spare /dev/sde1 #热备份的磁盘
4.格式化磁盘并挂载使用
[root@localhost ~]# mkfs.xfs /dev/md0 #格式化为xfs 文件系统 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@localhost ~]# mkdir /data [root@localhost ~]# mount /dev/md0 /data #挂载使用 [root@localhost ~]# df -hT 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/sda3 xfs 56G 5.0G 51G 9% / devtmpfs devtmpfs 978M 0 978M 0% /dev tmpfs tmpfs 993M 0 993M 0% /dev/shm tmpfs tmpfs 993M 9.1M 984M 1% /run tmpfs tmpfs 993M 0 993M 0% /sys/fs/cgroup /dev/sda1 xfs 497M 151M 346M 31% /boot tmpfs tmpfs 199M 12K 199M 1% /run/user/42 tmpfs tmpfs 199M 0 199M 0% /run/user/0 /dev/md0 xfs 40G 33M 40G 1% /data
5. 手动挂掉一个磁盘测试测试
手动故障磁盘阵列md0 中的磁盘 /dev/sdb1
[root@localhost ~]# mdadm /dev/md0 -f /dev/sdb1 #将/dev/sdb1 磁盘 手动故障 mdadm: set /dev/sdb1 faulty in /dev/md0 [root@localhost ~]# cat /proc/mdstat #查看阵列创建 Personalities : [raid6] [raid5] [raid4] md0 : active raid5 sdd1[4] sde1[3] sdc1[1] sdb1[0](F) 41908224 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [_UU] [====>................] recovery = 20.1% (4212992/20954112) finish=1.3min speed=210649K/sec unused devices: <none> [root@localhost ~]# mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Tue Jun 22 09:09:38 2021 Raid Level : raid5 Array Size : 41908224 (39.97 GiB 42.91 GB) Used Dev Size : 20954112 (19.98 GiB 21.46 GB) Raid Devices : 3 Total Devices : 4 Persistence : Superblock is persistent Update Time : Tue Jun 22 09:38:56 2021 State : clean, degraded, recovering Active Devices : 2 #活跃的只剩下两块(因为一块正在创建中 Working Devices : 3 #一共只剩下三块盘 Failed Devices : 1 Spare Devices : 1 Layout : left-symmetric Chunk Size : 512K Consistency Policy : resync Rebuild Status : 44% complete Name : localhost.localdomain:0 (local to host localhost.localdomain) UUID : 71f5d2f1:6c7c50ac:785f4ba3:58b2aa00 Events : 27 Number Major Minor RaidDevice State 3 8 65 0 spare rebuilding /dev/sde1 1 8 33 1 active sync /dev/sdc1 4 8 49 2 active sync /dev/sdd1 0 8 17 - faulty /dev/sdb1 #磁盘失效
6. 创建配置文件
[root@localhost ~]# echo 'DEVICE /dev/sdcl /dev/sdb1 /dev/sddl /dev/sdel' > /etc/mdadm.conf [root@localhost ~]# mdadm --detail --scan >> /etc/mdadm.conf [root@localhost ~]# cat /etc/mdadm.conf DEVICE /dev/sdcl /dev/sdb1 /dev/sddl /dev/sdel ARRAY /dev/md0 metadata=1.2 name=localhost.localdomain:0 UUID=71f5d2f1:6c7c50ac:785f4ba3:58b2aa00
2.7 mdadm命令其它常用选项
mdadm -D /dev/md0 #查看阵列md0 的信息
mdadm -E /dev/sd[bcde] #查看磁盘/dev/sdd-sde 是否已做raid
mdadm /dev/md0 -f /sdb1 #可以手动下线设备,模拟故障
mdadm /dev/mdo -r /dev/sdb1 #移除设备
mdadm /dev/mdo -a /dev/sde1 #添加设备
mdadm -s /dev/md0 #扫描配置文件
mdadm -S /dev/md0 #停止RAID
[root@localhost ~]# mdadm /dev/md0 -r /dev/sdb1 #将sdb1 从阵列 md0 中移除 mdadm: hot removed /dev/sdb1 from /dev/md0 [root@localhost ~]# mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Tue Jun 22 09:09:38 2021 Raid Level : raid5 Array Size : 41908224 (39.97 GiB 42.91 GB) Used Dev Size : 20954112 (19.98 GiB 21.46 GB) Raid Devices : 3 Total Devices : 3 Persistence : Superblock is persistent Update Time : Tue Jun 22 10:38:07 2021 State : clean Active Devices : 3 Working Devices : 3 Failed Devices : 0 Spare Devices : 0 Layout : left-symmetric Chunk Size : 512K Consistency Policy : resync Name : localhost.localdomain:0 (local to host localhost.localdomain) UUID : 71f5d2f1:6c7c50ac:785f4ba3:58b2aa00 Events : 41 Number Major Minor RaidDevice State 3 8 65 0 active sync /dev/sde1 1 8 33 1 active sync /dev/sdc1 4 8 49 2 active sync /dev/sdd1 [root@localhost ~]# mdadm /dev/md0 -a /dev/sdb1 #将sdb1 添加到 md0中 mdadm: added /dev/sdb1 [root@localhost ~]# mdadm -D /dev/md0 | grep sdb1 5 8 17 - spare /dev/sdb1 [root@localhost ~]# umount /dev/md0 #先卸载md0 [root@localhost ~]# mdadm -S /dev/md0 #停止阵列 md0 mdadm: stopped /dev/md0 [root@localhost ~]# mdadm -As /dev/md0 #启动md0 并扫描 配置文件 mdadm: /dev/md0 has been started with 3 drives and 1 spare.
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Tue Jun 22 09:09:38 2021
Raid Level : raid5
Array Size : 41908224 (39.97 GiB 42.91 GB)
Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Tue Jun 22 10:51:34 2021
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 71f5d2f1:6c7c50ac:785f4ba3:58b2aa00
Events : 42
Number Major Minor RaidDevice State
3 8 65 0 active sync /dev/sde1
1 8 33 1 active sync /dev/sdc1
4 8 49 2 active sync /dev/sdd1
5 8 17 - spare /dev/sdb1