Linux中软件RAID的使用精品资料.doc
《Linux中软件RAID的使用精品资料.doc》由会员分享,可在线阅读,更多相关《Linux中软件RAID的使用精品资料.doc(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Linux 中软件 RAID 的使用一.简介在Linux系统中目前以MD (Multiple Devices)虚拟块设备的方式实现软件RAID,利用多个底层的块设备虚拟出一个新的虚拟块设备,并且利用条带化(stripping)技术将数据块均匀分布到多个磁盘上来提高虚拟设备的读写性能,利用不同的数据冗余算法来保护用户数据不会因为某个块设备的故障而完全丢失,而且还能在设备被替换后将丢失的数据恢复到新的设备上。关于不同冗余级别的定义和数据块以及校验块的分布示意图可以参考存储专业委员会给出的参考资料“Common RAID Disk Data Format Specification ”。目前MD支持
2、linear, multipath, raid0 (stripping), raid1 (mirror), raid4, raid5, raid6, raid10等不同的冗余级别和组成方式,当然也能支持多个RAID阵列的层叠组成raid1+0, raid5+1等类型的阵列。在参考资料“Software RAID HOWTO”中介绍了早期软件RAID阵列功能特点和使用方式,但是因为软件RAID程序的功能不断增加,因此很有必要写份新的使用介绍。本文主要先讲解用户层mdadm如何管理软件RAID以及使用中经常遇到的问题和解决方法。在流行的Linux的发布版中,如FedoraCore,Gentoo,
3、Ubuntu,Debian,SuseLinux系统中一般已经将MD驱动模块直接编译到内核中或编译为可动态加载的驱动模块。我们可以在机器启动后通过cat /proc/mdstat看内核是否已经加载MD驱动或者cat /proc/devices是否有md块设备,并且可以使用lsmod看MD是否是以模块形式加载到系统中。rootfc5 mdadm-2.6.3# cat /proc/mdstatPersonalities :unused devices: rootfc5 mdadm-2.6.3# cat /proc/devices | grep md1 ramdisk9 md253 mdprootfc
4、5 mdadm-2.6.3# lsmod | grep mdmd_mod 73364 0如果Linux系统既没有将MD编译到内核也没有自动加载MD模块,则没有/proc/mdstat文件,那么需要执行命令modprobe md加载驱动模块。rootfc5 mdadm-2.6.3#cat /proc/mdstatcat: /proc/mdstat: No such file or directoryrootfc5 mdadm-2.6.3# modprobe mdrootfc5 mdadm-2.6.3# lsmod | grep mdmd_mod 73364 0如果系统中没有MD驱动模块则需要自己
5、从Linux内核源代码网站下载源代码包,并且重新编译内核,并且需要在内核的配置文件选择。*Multiple devices driver support (RAID and LVM) RAID support Linear (append) mode RAID-0 (striping) mode RAID-1 (mirroring) mode RAID-10 (mirrored striping) mode (EXPERIMENTAL) RAID-4/RAID-5/RAID-6 mode * Support adding drives to a raid-5 array Multipath I
6、/O support Faulty test module for MD在Linux系统中用户层以前使用raidtool工具集来管理MD设备,目前广泛使用mdadm软件来管理MD设备,而且该软件都会集成在Linux的发布版中。如果系统中没有安装可以到RAID驱动程序和mdadm软件的维护者Neil Brown的个人网站来下载源码包进行编译安装,或者下载RPM包直接安装。mdadm的最新版本是2.6.3。可以使用mdadm -version查看当前系统使用的版本。本文使用的是mdadm-2.6.3, Linux内核版本是Linux-2.6.22.1。下面的测试命令是在虚拟机环境中测试运行的。ro
7、otfc5 mdadm-2.6.3# uname -r2.6.22.1rootfc5 mdadm-2.6.3# ./mdadm -versionmdadm - v2.6.3 - 20th August 2007二. mdadm管理软RAID阵列mdadm程序是一个独立的程序,能完成所有的软RAID管理功能,主要有7种使用模式:模式名字主要功能Create使用空闲的设备创建一个新的阵列,每个设备具有元数据块Assemble将原来属于一个阵列的每个块设备组装为阵列Build创建或组装不需要元数据的阵列,每个设备没有元数据块Manage管理已经存储阵列中的设备,比如增加热备磁盘或者设置某个磁盘失效,
8、然后从阵列中删除这个磁盘Misc报告或者修改阵列中相关设备的信息,比如查询阵列或者设备的状态信息Grow改变阵列中每个设备被使用的容量或阵列中的设备的数目Monitor监控一个或多个阵列,上报指定的事件2.1 为磁盘划分分区如果MD驱动被编译到内核中,当内核调用执行MD驱动时会自动查找分区为FD(Linux raid autodetect)格式的磁盘。所以一般会使用fdisk工具将HD磁盘或者SD磁盘分区,再设置为FD的磁盘。rootfc5 mdadm-2.6.3# fdisk /dev/sdkDevice contains neither a valid DOS partition tabl
9、e, nor Sun, SGI or OSF disklabelBuilding a new DOS disklabel. Changes will remain in memory only,until you decide to write them. After that, of course, the previouscontent wont be recoverable.Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)Command (m for help):nCommand
10、action e extended p primary partition (1-4)pPartition number (1-4):1First cylinder (1-512, default 1):1Using default value 1Last cylinder or +size or +sizeM or +sizeK (1-512, default 512):512Using default value 512Command (m for help):tSelected partition 1Hex code (type L to list codes):FDChanged sy
11、stem type of partition 1 to fd (Linux raid autodetect)Command (m for help):wThe partition table has been altered!Calling ioctl() to re-read partition table.Syncing disks.rootfc5 mdadm-2.6.3# fdisk -l /dev/sdkDisk /dev/sdk: 1073 MB, 1073741824 bytes128 heads, 32 sectors/track, 512 cylindersUnits = cy
12、linders of 4096 * 512 = 2097152 bytes Device Boot Start End Blocks Id System/dev/sdk1 1 512 1048560 fd Linux raid autodetect软RAID阵列实际上也可以使用任何标准的块设备作为底层设备,如SCSI设备、IDE设备、RAM disk磁盘和NBD(Network Block Device)等,甚至是其他的MD设备。如果MD驱动是模块形式加载,需要在系统运行时由用户层脚本控制RAID阵列启动运行。如在FedoraCore系统中在/etc/rc.d/rc.sysinit文件中有启动
13、软RAID阵列的指令,若RAID的配置文件mdadm.conf存在,则调用mdadm检查配置文件里的选项,然后启动RAID阵列。echo raidautorun /dev/md0 | nash -quietif -f /etc/mdadm.conf ; then /sbin/mdadm -A -sfi2.2 创建新的阵列mdadm使用-create(或其缩写-C)参数来创建新的阵列,并且将一些重要阵列的标识信息作为元数据可以写在每一个底层设备的指定区间。-level(或者其缩写-l)表示阵列的RAID级别,-chunk(或者其缩写-c)表示每个条带单元的大小,以KB为单位,默认为64KB,条带
14、单元的大小配置对不同负载下的阵列读写性能有很大影响。-raid-devices(或者其缩写-n)表示阵列中活跃的设备个数,而-spare-devices(或者其缩写-x)表示阵列中热备盘的个数,一旦阵列中的某个磁盘失效,MD内核驱动程序自动用将热备磁盘加入到阵列,然后重构丢失磁盘上的数据到热备磁盘上。创建一个RAID 0设备:mdadm -create /dev/md0 -level=0 -chunk=32 -raid-devices=3 /dev/sdi-k1创建一个RAID 1设备:mdadm -C /dev/md0 -l1 -c128 -n2 -x1 /dev/sdi-k1创建一个RAI
15、D 5设备:mdadm -C /dev/md0 -l5 -n5 /dev/sdc-g -x1 /dev/sdb 创建一个RAID 6设备:mdadm -C /dev/md0 -l6 -n5 /dev/sdc-g -x2 /dev/sdb /dev/sdh创建一个RAID 10设备:mdadm -C /dev/md0 -l10 -n6 /dev/sdb-g -x1 /dev/sdh创建一个RAID1+0设备:mdadm -C /dev/md0 -l1 -n2 /dev/sdb /dev/sdcmdadm -C /dev/md1 -l1 -n2 /dev/sdd /dev/sdemdadm -C
16、/dev/md2 -l1 -n2 /dev/sdf /dev/sdgmdadm -C /dev/md3 -l0 -n3 /dev/md0 /dev/md1 /dev/md2当RAID1/4/5/6/10等创建成功后,需要计算每个条带的校验和信息并写入到相应磁盘上,所以RAID阵列有一个冗余组数据同步的初始化过程(resync)。但是MD设备只要创建成功后即可对外被上层应用读写使用,当然由于上层数据读写降低数据同步的性能。初始化的时间长短和磁盘阵列自身性能以及读写的应用负载相关,使用cat /proc/mdstat信息查询RAID阵列当前重构的速度和预期的完成时间。rootfc5 mdadm-2
17、.6.3# cat /proc/mdstatPersonalities : raid10md0 : active raid10 sdh6(S) sdg5 sdf4 sde3 sdd2 sdc1 sdb0 3145536 blocks 64K chunks 2 near-copies 6/6 UUUUUU =. resync = 15.3% (483072/3145536) finish=0.3min speed=120768K/secunused devices: rootfc5 mdadm-2.6.3# cat /proc/mdstatPersonalities : raid10md0 :
18、active raid10 sdh6(S) sdg5 sdf4 sde3 sdd2 sdc1 sdb0 3145536 blocks 64K chunks 2 near-copies 6/6 UUUUUUunused devices: 如果一个块设备已经正在被其他的MD设备或者文件系统使用,则不能用来创建新的MD设备。rootfc5 mdadm-2.6.3# ./mdadm -C /dev/md1 -l0 -n2 /dev/sdh /dev/sdimdadm: Cannot open /dev/sdh: Device or resource busymdadm: create abortedB
19、uild模式可以用来创建没有元数据的RAID0/1设备,不能创建RAID4/5/6/10等带有冗余级别的MD设备。rootfc5 mdadm-2.6.3# ./mdadm -BR /dev/md0 -l0 -n6 /dev/sdb-gmdadm: array /dev/md0 built and started. rootfc5 mdadm-2.6.3# ./mdadm -BR /dev/md0 -l1 -n2 /dev/sdb-cmdadm: array /dev/md0 built and started.rootfc5 mdadm-2.6.3# ./mdadm -BR /dev/md0
20、-l5 -n6 /dev/sdb-gmdadm: Raid level 5 not permitted with -build.rootfc5 mdadm-2.6.3# ./mdadm -BR /dev/md0 l6 -n6 /dev/sdb-gmdadm: Raid level 5 not permitted with -build.rootfc5 mdadm-2.6.3# ./mdadm -BR /dev/md0 l10 -n6 /dev/sdb-gmdadm: Raid level 10 not permitted with -build.使用阵列:MD设备可以像普通块设备那样直接读写,
21、也可以做文件系统格式化。#mkfs.ext3 /dev/md0#mkdir -p /mnt/md-test#mount /dev/md0 /mnt/md-test停止正在运行的阵列:当阵列没有文件系统或者其他存储应用以及高级设备使用的话,可以使用-stop(或者其缩写-S)停止阵列;如果命令返回设备或者资源忙类型的错误,说明/dev/md0正在被上层应用使用,暂时不能停止,必须要首先停止上层的应用,这样也能保证阵列上数据的一致性。rootfc5 mdadm-2.6.3# ./mdadm -stop /dev/md0mdadm: fail to stop array /dev/md0: Devi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux中软件RAID的使用 精品资料 Linux 软件 RAID 使用 精品 资料
限制150内