RAID
(Redundant Array of Independent Disks,独立磁盘冗余阵列)可以提供较普通磁盘更高的速度、安全性,所以服务器在安装时都会选择创建RAID。
两种方式:软RAID(通过操作系统软件实现)和硬RAID(硬件阵列卡)
RAID-0:striping(条带模式),至少需要两块磁盘,做RAID的分区的大小最好是相同的;数据分散存储于不同的磁盘上,在读写的时候可以实现并发,所以相对其读写性能最好;但是没有容错功能,任何一个磁盘的损坏将损坏全部数据;磁盘利用率为100%。
优点:磁盘利用率100%,读写速度提升;
缺点:没有备份;
RAID-1:mirroring(镜像卷),至少需要两块硬盘,raid大小等于两个raid分区中最小的容量(最好一样大),数据有冗余,在存储时同时写入两块硬盘,实现了数据备份;
优点:有备份;
缺点:磁盘利用率为50%,读写速度无提升;
RAID-5:需要三块或以上硬盘,可以提供热备盘实现故障的恢复;利用简单的异或逻辑运算,比对校验位信息,达到推算坏盘系统的内容。
优点:有备份,读写速度提升,只损坏一块数据无丢失;
缺点:磁盘利用率为75%(=(n-1)/n),损坏两块则丢。
管理软raid工具mdadm
mdadm命令常用参数:
-C或--creat 建立一个新阵列
-A 激活磁盘阵列
-D或--detail 打印阵列设备的详细信息
-s或--scan 扫描配置文件或/proc/mdstat得到阵列缺失信息
-f 将设备状态定为故障
-a或--add 添加设备到阵列
-v --verbose显示详细信息
-r 移除设备
-l或--level= 设定磁盘阵列的级别
-n或--raid-devices= 指定阵列成员(分区/磁盘)的数量
-x或--spare-devices= 指定阵列中备用盘的数量
-c或--chunk= 设定阵列的块chunk大小,单位为KB
-G或--grow 改变阵型大小或形态
建立RAID-0
[root@cxg ~]# madadm -C -v /dev/md0 -l 0 -n 2 /dev/sdb1 /dev/sdb2
mdadm: chunk size defaults to 512K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started
[root@cxg ~]# mdadm -Ds
#查看具体信息
[root@cxg ~]# mdadm -D /dev/md0
#默认没有配置文件,手动生成
[root@cxg ~]# mdadm -Ds > /etc/mdadm.conf
#分区
[root@cxg ~]# fdisk /dev/md0
[root@cxg ~]# ll /dev/md0*
brw-rw---- 1 root disk 9,0 Oct 4 10:15 /dev/md0
brw-rw---- 1 root disk 259,0 Oct 4 10:15 /dev/md0p1
#格式化
[root@cxg ~]# mkfs.ext4 /dev/md0p1
[root@cxg ~]# mkdir /raid0
[root@cxg ~]# mount /dev/md0p1 /raid0/
#开机自动挂载
[root@cxg ~]# vim /etc/fstab
#查看
[root@cxg ~]# df -h
/dev/md0p1 2.0G 68M 1.9G 4% /raid0
#创建分区
[root@cxg ~]# fdisk /dev/sdc
Command(m for help):p
Command(m for help):n
p
Partition number(1-4):1
Last cylinder,+cylinders or +size{K,M,G}(1-2610,default 2610):+1G
Command(m for help):n
p
Partition number(1-4):2
Last cylinder,+cylinders or +size{K,M,G}(1-2610,default 2610):+1G
Command(m for help):n
p
Partition number(1-4):3
Last cylinder,+cylinders or +size{K,M,G}(1-2610,default 2610):+1G
Command(m for help):w
[root@cxg ~]# ll /dev/sdc
brw-rw---- 1 root disk 8,32 Oct 4 10:17 /dev/sdc
brw-rw---- 1 root disk 8,33 Oct 4 10:17 /dev/sdc1
brw-rw---- 1 root disk 8,34 Oct 4 10:17 /dev/sdc2
brw-rw---- 1 root disk 8,35 Oct 4 10:17 /dev/sdc3
#创建raid1,-x 1设定sd3是备用盘
[root@cxg ~]# mdadm -C -v /dev/md1 -l 1 -n 2 -x 1 /dev/sdc{1,2,3}
[root@cxg ~]# ll /dev/md1
#默认没有配置文件,手动生成
[root@cxg ~]# mdadm -Ds > /etc/mdadm.conf
#分区
[root@cxg ~]# fdisk /dev/md1
[root@cxg ~]# ll /dev/md1*
brw-rw---- 1 root disk 9,0 Oct 4 10:15 /dev/md1
brw-rw---- 1 root disk 259,0 Oct 4 10:15 /dev/md1p1
#格式化
[root@cxg ~]# mkfs.ext4 /dev/md1p1
[root@cxg ~]# mkdir /raid1
[root@cxg ~]# mount /dev/md1p1 /raid1/
#开机自动挂载
[root@cxg ~]# vim /etc/fstab
#查看
[root@cxg ~]# df -h
/dev/md1p1 1019M 34M 934M 4% /raid1
#模拟故障
[root@cxg ~]# cat /proc/mdstat
[root@cxg ~]# cat /etc/mdadm.conf
#md1 spares=1 表示有一个热备盘
#设定sdc1故障
[root@cxg ~]# mdadm -f /dev/md1 /dev/sdc1
mdadm:set /dev/sdc1 faulty in /dev/md1
#新开一个终端
[root@cxg ~]# whatch -n 1 cat /proc/mdstat
#/dev/sdc3 [s]消失,成功顶替故障盘
#更新配置文件
[root@cxg ~]# mdadm -Ds > /etc/mdadm.conf
[root@cxg ~]# cat /etc/mdadm.conf
#md1 spares=1 消失
#移除故障盘
[root@cxg ~]# mdadm -r /dev/md1 /dev/sdc1
#拔掉硬盘更换新的
#分区
[root@cxg ~]# ls /dev/sde*
/dev/sde /dev/sde2 /dev/sde4 /dev/sde6
/dev/sde1 /dev/sde3 /dev/sde5
#创建raid5,-x 1设定sde5是备用盘,sde4扩展分区无法使用
[root@cxg ~]# mdadm -C -v /dev/md5 -l 5 -n 3 -x 1 /dev/sde{1,2,3,5}
#默认没有配置文件,手动生成
[root@cxg ~]# mdadm -Ds > /etc/mdadm.conf
#停止md5
[root@cxg ~]# mdadm -S /dev/md5
mdadm:stopped /dev/md5
#激活
[root@cxg ~]# mdadm -As
#扩展sde6实验
[root@cxg ~]# fdisk /dev/md5
[root@cxg ~]# mkfs.ext4 /dev/md5p1
[root@cxg ~]# mkdir /raid5
[root@cxg ~]# mount /dev/md5p1 /raid5
[root@cxg ~]# df -h
[root@cxg ~]# umount /raid5
#-a添加设备到阵列
[root@cxg ~]# mdadm -a /dev/md5 /dev/sde6
#查看sde6[5](s)是热备
[root@cxg ~]# cat /proc/mdstat
#扩容
[root@cxg ~]# mdadm -G /dev/md5 -n 4
#新开一个终端动态查看-G过程,sde6[s]变成sde6[5]
[root@cxg ~]# whatch -n 1 cat /proc/mdstat
[root@cxg ~]# mdadm -Ds > /etc/mdadm.conf