RAID(独立冗余磁盘阵列)由加利福尼亚大学伯克利分校(University of California-Berkeley)在1987年提出这个概念,首先提出的是廉价冗余磁盘阵列(Redundant Arrays of Inexpensive Disks),后来发现,大量便宜磁盘组合并不能适用于现实的生产环境,后来改为独立冗余磁盘阵列(Redundant Arrays of Independent Disks)。
RAID的类型
RAID 0 : 只需要2块硬盘以上即可组建,条带化读写,可以提高整个磁盘的性能和吞吐量,但没有冗余或错误修复能力,任何一块磁盘块都会导至阵列无法使用,数据丢失,磁盘利用量为NS,即n*磁盘容量
RAID 1 : 磁盘镜像,写入一块磁盘时,另一块磁盘上生成镜像文件,写性能降低,读性能提升,有冗余能力,磁盘的利用率50%,需要2的倍数来组建阵列
RAID 3,4 : 带有奇偶校验码的存储数据方式, 访问数据时一次处理一个带区,可以提升读写数据性能,有冗余能力,但校验码是存在一块磁盘上,校验盘的写性能会成为瓶颈,3与4的区别在于存储数据时,3是横向条带化读写的,4是竖向存储的,磁盘利用率为(n-1)/n。如图
RAID 5 : 与RAID4相似,都是有奇偶检验的独立磁盘结构,但是校验码不是存在一个磁盘上,而是轮流写入每个磁盘,读写性能提升,有冗余,空间利用率为(n-1)/n。
RAID 01 与RAID 10 : RAID 01 是RAID0与RAID1的结合体,先做RAID0条带化提升性能,然后再做镜像,保证冗余,RAID10是先做镜像保证冗余然后再做条带化提升性能,但当磁盘出现故障时修复能力RAID10比RAID01好,至少需要4块磁盘才能做阵列,磁盘的利用率为50%。如图
阵列的实现方式有硬阵列和软阵列,LINUX中软阵列的实现方法:
linux中是通过内核中的md模块来模拟一个RAID的,在创建RAID时需要把磁盘的模式设置为fd模式,mdadm命令能把任何的块设备模拟成RAID,过程如下
1. 将用fdisk命令将磁盘/dev/xvdb /dev/xvdc 模式设置为fd模式,
fdisk /dev/xvdb ,创建磁盘 n ,按P 创建主分区,按1 创建第一个主分区,回车,按m,显示所有帮助信息
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
按t ,
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): L 显示所有linux系统支持的文件系统ID,输入fd
fd为linux raid auto
然后按p
显示磁盘列表为
Device Boot Start End Blocks Id System
/dev/xvdb1 1 2610 20964793+ fd Linux raid autodetect
创建磁盘模式为RAID结束
同样把xvdbc创建为RAID模式,cat /proc/partitions 可以显示所有的分区
2 .mdadm命令
mdadm
创建模式 -C /dev/md#
专用选项:
-l :RAID级别 0 、1、3、5、10、 等
-n #: 设备个数,多少个硬盘设备来做RAID
-a {yes|no} : 是否自动为其创建设备文件
-c : chunk 大小 ,2^n
-x # :指定空闲盘个数,当RAID正常是,这些盘是没有起作用的,但当RAID当中有一个磁盘有故障时,这个空闲盘会自动顶替有故障的磁盘,并同步数据。
输入命令 mdadm -C /dev/md0 -l 0 -n 2 -a yes /dev/xvdb1 /dev/xvdc1
[root@jiankong ~]# mdadm -C /dev/md0 -l 0 -n 2 -a yes /dev/xvdb1 /dev/xvdc1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
然后格式化 /dev/md0 mkfs.ext4 /dev/md0
就可以挂载了,
mount /dev/md0 /data
然后用df命令查看磁盘
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 19G 1.6G 16G 9% /
tmpfs 497M 0 497M 0% /dev/shm
/dev/xvda1 485M 33M 427M 8% /boot
/dev/md0 40G 176M 38G 1% /data
软阵列RAID0就已经创建并使用了。
管理模式
-a : --add 添加一块磁盘到阵列中去
-r : --remove 移除一块磁盘到阵列中去
-f : --fail 设置一块磁盘状态为fail 不可用
装配模式
-D :—detail 显示阵列的详细信息 mdadm –D /dev/md0
-s : --scan 把阵列详细信息保存到配置文件 mdadm –D –s /dev/md0 > /etc/mdadm.conf
-S : --stop 停止阵列 mdadm –S /dev/md0
-A : 加载启动阵列,如果没有保存阵列的配置文件,则需要把阵列以及阵列包含的磁盘信息都要加上,否则无法加载
mdadm -A /dev/md1 /dev/xvdb1 /dev/xvdc1
cat /proc/mdstat 可以查看 md阵列的状态,如果有同步的话可以看到同步过程
转载于:https://blog.51cto.com/piao719/1406232