4 RAID
时间:2007-01-09 来源:yixiaoyun
安全的动态磁盘策略
1 软件raid技术
raid0/raid1/raid5
2 LVM逻辑卷管理技术
PV/VG/LV
3整合RAID和LVM的磁盘存储策略
RAID技术产生的背景
。普通的IDE硬盘速度不够快,性能不够稳定,不能应用于企业级的关键任务
。高效并且稳定可靠的SCSI硬盘价格昂贵,中小企业承受不起
。RAID(Redundant Array of Inexpensive/Independent Disks),即廉价/独立磁盘冗余阵列(或者简称磁盘阵列),它的出现,可以让我们把普通的IDE硬盘组成快速安全可靠的存储设备。
RAID原理
。RAID是一种把多块独立的硬盘按不同方式组合起来形成一个磁盘组,从而提供比单个硬盘更高的存储性能和提供数据冗余技术。不同的组织方式成为RAID级别(RAID Levels)。
。数据冗余的功能是在用户数据一旦发生损坏后,利用冗余信息可以使损坏数据得以恢复,从而保障了用户数据的安全性
。在用户看来,组成的磁盘组就像是一个硬盘,对磁盘阵列的操作与单个硬盘以模一样。
RAID级别
。目前共有0-6 共7个基本的RAID级别
。常用RAID级别是 ,RAID0,RAID1,RAID5
。需要RAID控制器(一种pc适配器)来管理硬盘
。LINUX内核可以模拟raid控制器,用来管理硬盘,但只支持级别0,1,4,5
raid0 striping ,条带备份
数据上的并行操作可以充分利用总线的带宽,显著提高磁盘整体存取性。但是不具备冗余功能
raid1 mirror或者mirroring
最大限度的保证用户数据的可用性和可修复性。但是浪费硬盘空间
raid5
不对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后,利用剩下的数据和相应得奇偶校验信息去恢复被损坏的数据。
至少需要3块硬盘
raid0+1
raid0 和1 的组合形式,也成为raid10
磁盘利用率比较低,但是冗余度最高。
Linux中的软件raid
。使用linux内核实现的软件raid控制器
。需要内核支持
。需要相应得应用软件(raidtools)创建管理raid设备
。软件raid设备文件名
/dev/mdN (N=0,1,2。。。)
。软件raid设备可以当分区看待,需要格式化后挂载
#mkfs.ext3 /dev/md1
#mount /dev/md1 /opt
软件raid创建过程
。添加硬盘
raid设备的成员是硬盘分区,需要先对每个硬盘分区,raid中分区不能同一个物理硬盘上
。安装raidtoools
raidtools中包含有raid创建管理工具和默认的示范性配置文件
。编写配置文件 /etc/raidtab
可以从raidtools中的示范配置文件里复制
。创建raid设备
例:#mkraid /dev/md0
rpm –q raidtools
rpm –ql raidtools
raidtools 的示范配置文件在/usr/share/doc/raidtools-1.00.3/raid0.conf.sample
raid1.conf.sample
raid4.conf.sample
raid5.conf.sample
raidtab.sample
man 5 raidtab 有简单的示范
直接该示范文件会比较方便
cp /usr/share/doc/raidtools-1.00.3/raid0.conf.sample /etc/raidtab
vi /etc/raidtab
其中
nr-raid-disks 磁盘数量
nr-spare-disks 冗余磁盘的数量,这里是raid0所以冗余的数量是0
device /dev/hda1
raid-disk 0 给磁盘编号,不能重复。
退出 后
#mkraid /dev/md0
#mkfs.ext3 /dev/md0
#mount /dev/md0 /opt
再cp文件测试,是否成功。
编辑fstab可以启动自动挂载
停止使用raid
#raidstop /dev/md0
停止使用raid前,要首先把挂载的raid磁盘卸载掉
raid1的raidtab 用sample就可以
察看磁盘是不是有问题,或者损坏可以用命令
lsraid –A –a /dev/md1
如果服务器开机,etc里有raidtab文件,系统会自动作raid,不再使用raid时可以把raidtab文件删除。
在建好raid后可以从
more /proc/mdstat
察看raid的状态
恢复破坏的数据
cp /usr/share/doc/raidtools-1.00.3/raid0.conf.sample /etc/raidtab
模拟raid阵列实效的情况用
raidsetfaulty –help
raidsetfaulty /dev/md0 /dev/sdb1
用 lsraid –A –a /dev/md0 就可以看出状态变failed
手动
raidhotadd /dev/md0 /dev/sdd1 向raid里添加一个磁盘
此时用 lsraid –A –a /dev/md0
里面新添加的硬盘的状态是 spare
可以察看 /proc/mdstat 的信息,可以看到磁盘的修复过程
raidhotremove /dev/md0 /dev/sdb1 移除出问题的硬盘。
在lsraid –A –a /dev/md0 可以看出 被移除的磁盘的状态是missing
也可以自动的,即添加冗余的磁盘
先修改 raidtab 里的 nr-spare-disks 的值为冗余磁盘的数量加一块冗余就是1
device /dev/sdd1
spare-disk 0
重新构建raid mkraid –R /dev/md0
mkfs.ext3 /dev/md0
raid1,5可以放冗余磁盘,0就没有必要了。
可以用 raidsetfaulty 来测试
man 5 raidtab
可以同时使用raid0和raid1 可以先把两块硬盘作raid0,然后再把两个raid0 和成raid1 。这样的速度比较快。
raidtab可以这样配置。
raiddev /dev/md0
raid-level 0
nr-raid-disks 2
nr-spare-disks 0
chunk-size 4
device /dev/sda1
raid-disk 0
device /dev/sdb1
raid-disk 1
raiddev /dev/md1
raid-level 0
nr-raid-disks 2
nr-spare-disks 0
chunk-size 4
device /dev/sdc1
raid-disk 0
device /dev/sdd1
raid-disk 1
raiddev /dev/md2
raid-level 1
nr-raid-disks 2
nr-spare-disks 0
chunk-size 4
device /dev/md0
raid-disk 0
device /dev/md1
raid-disk 1
如果以前有raid ,要先把raid去掉挂载,raidstop然后重新建立。
上面的情况 md0,和md1是md2的成员,此时不能格式化md0,和md1,可以直接格式化md2就可以了。