RAID实战

来源:互联网 发布:监控器无网络视频 编辑:程序博客网 时间:2024/06/18 09:57

RAID简介:

RAID全称为独立磁盘冗余阵列(Rdeundant Array ofIndependent Disks),基本思想就是把 多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵、 容量巨大的硬盘。RAID通常被用在服务器电脑上,使用完全相同的硬盘组成一个逻辑扇区, 因此操作系统只会把它当做一个硬盘。

RAID分为不同的等级,各个不同的等级均在数据可靠性及读写性能上做了不同的权衡。 在实际应用中,可以依据自己的实际需求选择不同的RAID方案。

 

RAID方案 :

RAID0:

RAID0条带化(Striping)存储)将数据分段存储于各个磁盘中,读写均可以并行处理。因此其读写速率为单个磁盘的N倍(N为组成RAID0的磁盘个数),但是却没有数 据冗余,单个磁盘的损坏会导致数据的不可修复。

 

 

RAID1:

镜像存储(mirroring),没有数据校验。数据被同等地写入两个或多个磁盘中,可想而知,写入速度会比较 慢,但读取速度会比较快。读取速度可以接近所有磁盘吞吐量的总和,写入速度受限于最慢 的磁盘。

 

 

RAID5:

奇偶校验(XOR),数据以块分段条带化存储。校验信息交叉地存储在所有的数据盘上。

RAID 5可以理解为是RAID 0和RAID 1的折中方案。

 

 

RAID0+1:

RAID0和RAID1的结合。先做条带(0),再做镜像(1)。

 

RAID1+0:

      先做镜像(1),再做条带(0)。

 

实验环境:

一台虚拟机 :centos6.3 x86 mdadm

四块磁盘 :sdb、sdc、sdd、sde

 

Mdadm命令详解:

基本语法 : mdadm [mode] [options] <disk device>
 [mode]  有7种:
 Assemble
:将以前定义的某个阵列加入当前在用阵列。
 Build
:Build alegacy array ,每个device 没有superblocks
 Create:创建一个新的阵列,每个device 具有 superblocks
 Manage: 管理阵列,比如add 或 remove
 Misc:允许单独对阵列中的某个device 做操作,比如抹去superblocks 或 终止在用的阵列。
 Follow or Monitor:监控 raid 1,4,5,6 和 multipath 的状态
 Grow:改变raid 容量或阵列中的 device 数目
  [options]:
 -A, --assemble
:加入一个以前定义的阵列
 -B, --build
:Builda legacy array without superblocks.
 -C, --create:创建一个新的阵列
 -Q, --query
:查看一个device,判断它为一个 md device 或是 一个 md 阵列的一部分
 -D, --detail:打印一个或多个 md device的详细信息
 -E, --examine:打印device 上的 md superblock 的内容
 -F, --follow, --monitor:选择 Monitor 模式
 -G, --grow:改变在用阵列的大小或形态
 -h, --help:帮助信息,用在以上选项后,则显示该选项信息
 --help-options
 -V, --version
 -v, --verbose:显示细节
 -b, --brief:较少的细节。用于 --detail 和 --examine 选项
 -f, --force
 -c, --config= :指定配置文件,缺省为 /etc/mdadm/mdadm.conf
 -s, --scan:扫描配置文件或 /proc/mdstat以搜寻丢失的信息。配置文件/etc/mdadm/mdadm.conf
 create 或 build 使用的选项:
 -c, --chunk=:Specify chunk size ofkibibytes.  缺省为64.
 --rounding=: Specify rounding factor forlinear array (==chunk size)
 -l, --level=:设定 raid level.
 --create
可用:linear,raid0, 0, stripe, raid1,1, mirror, raid4, 4, raid5, 5, raid6, 6, multipath, mp.
 --build可用:linear,raid0, 0, stripe.
 -p, --parity=:设定raid5 的奇偶校验规则:eft-asymmetric, left-symmetric,right-asymmetric, right-symmetric, la, ra, ls, rs.缺省为left-symmetric
 --layout=:类似于--parity
 -n, --raid-devices=:指定阵列中可用  device数目,这个数目只能由--grow 修改
 -x, --spare-devices=:指定初始阵列的冗余device数目
 -z, --size=:组建RAID1/4/5/6后从每个device获取的空间总数
 --assume-clean:目前仅用于 --build 选项
 -R, --run:阵列中的某一部分出现在其他阵列或文件系统中时,mdadm会确认该阵列。此选项将不作确认。
 -f, --force:通常mdadm不允许只用一个device 创建阵列,而且创建raid5时会使用一个device作为missing drive。此选项正相反。
 -a, --auto{=no,yes,md,mdp,part,p}{NN}

 

实验1——RAID0:

1.     对RAID磁盘分区,指定分区类型为fd。

 

2.     重读分区表

# partprobe

 

3.     开始创建RAID0


# mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sd[b,c]1


4.     查看RAID0状态


说明:

Raid Level : 阵列级别; 
   Array Size : 阵列容量大小;
RaidDevices : RAID成员的个数;
TotalDevices : RAID中下属成员的总计个数,因为还有冗余硬盘或分区,也就是spare,为了RAID的正常运珩,随时可以推上去加入RAID的;
State:RAID状态。三个状态,clean表示正常,degraded表示有问题,recovering表示正在恢复或构建;
ActiveDevices : 被激活的RAID成员个数;
WorkingDevices : 正常的工作的RAID成员个数;
FailedDevices : 出问题的RAID成员;
SpareDevices : 备用RAID成员个数,当一个RAID的成员出问题时,用其它硬盘或分区来顶替时,RAID要进行构建,在没构建完成时,这个成员也会被认为是spare设备;
UUID : RAIDUUID值,在系统中是唯一的;

 

5.     创建/etc/mdadm.conf配置文件,为了系统启动能自动加载RAID

#echo DEVICE /dev/sdb1 /dev/sbc1 > /etc/mdadm.conf


#mdadm -Ds >> /etc/mdadm.conf

 

6.     格式化RAID与挂载

# mkfs.ext4 /dev/md0

#mkdir -p /data

#mount /dev/md0 /data

 

7.     查看磁盘状态

#df -h


8.     写入/etc/fstab

#vi /etc/fstab

/dev/md0       /raid0         ext4   defaults        0 0

 

9.     磁盘性能对比测试

RAID——写速度:

       在挂载目录内写入一个文件,测试写入速度,文件大小最好大于内存的数倍,以防止内存把文件给缓存了。

      #timedd if=/dev/zero of=/data/test bs=4k count= 1310720 conv=fdatasync

      命令解释:写入5G文件,写入到/data/下命名为test,测试写入速度。

普通(根目录)——写速度:

#time dd if=/dev/zero of=/test bs=4k count= 1310720 conv=fdatasync

       同上,写入到根目录

 

RAID——读取速度:

#time dd if=/data/testof=/dev/null bs=4k count=1310720

 

普通(根目录)——读取速度:

#time dd if=/testof=/dev/null bs=4k count=1310720

 

RAID——读写速度:

#time dd if=/data/test of=/data/test bs=4k count= 1310720conv=fdatasync

普通(根目录)——读写速度:

#time dd if=/test of=/test bs=4k count=1310720 conv=fdatasync

 

实验2——RAID1:

1. 对RAID磁盘分区,指定分区类型为fd。


2.     重读分区表

# partprobe


3.     建立RAID1

# mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sd[d,e]1

 

4.     查看RAID1状态

# cat /proc/mdstat

#  mdadm -D /dev/md1


5.     创建/etc/mdadm.conf配置文件,为了系统启动能自动加载RAID

#echo DEVICE /dev/sdd1 /dev/sbe1 > /etc/mdadm.conf

#mdadm -Ds >> /etc/mdadm.conf

 

6.     格式化且挂载

#mkfs.ext4 /dev/md1

#mkdir -p /raid1

#mount /dev/md0 /raid1

 


7.     写入/etc/fstab

/dev/md1        /raid1      ext4   defaults        0 0

 

8.     测试。和RAID0一样,这里就不详细介绍了。

 

实验3——RAID5:

      三块活动盘,一块热备盘。

1.      对RAID磁盘分区,指定分区类型为fd。


2.     重读分区表

# partprobe


3.     建立RAID5

# mdadm -C /dev/md5 -a yes -l 5 -n 3 -x 1 /dev/sd[b,c,d,e]1


4.     查看RAID5状态

# cat /proc/mdstat

# mdadm -D /dev/md5


5.     创建/etc/mdadm.conf配置文件,为了系统启动能自动加载RAID

#echo DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 > /etc/mdadm.conf

#mdadm -Ds >> /etc/mdadm.conf


6.     格式化且挂载

#mkfs.ext4 /dev/md1

#mkdir -p /raid1

#mount /dev/md0 /raid1

 

7.     写入/etc/fstab文件


8.     性能测试和RAID0一样测试,这里不详细讲解。


9.     模拟磁盘损坏

# mdadm /dev/md5 -f /dev/sdd1


10.  查看RAID5状态

# cat /proc/mdstat

# mdadm -D /dev/md5

 


11.  移除损坏硬盘

# mdadm /dev/md5 -r /dev/sdd1


12. 再次查看状态



13.  再次添加新硬盘作为热备盘

# mdadm /dev/md5 -a /dev/sdd1

14.  如果RAID5空间不足,可以添加新硬盘扩容。

#mdadm /dev/md5 -a /dev/sdf1

把一个热备盘改为活动盘(由3个活动盘扩展到4个)

#mdadm --grow /dev/md5 --raid-devices=4

查看状态(转化中—转化完成)

# cat /proc/mdstat

# mdadm -D /dev/md5

查看RAID5大小(没有变化)

#df -h

调整磁盘大小

#resize2fs /dev/md5

再次查看(完成扩容)

#df -h

 

实验4——RAID1+0:

       先创建2个RAID1,在把两个RAID1作为RAID0的材料,创建RAID0.

       实验步骤上同。