收藏 分销(赏)

Linux-中软件-RAID-的使用.docx

上传人:二*** 文档编号:4761903 上传时间:2024-10-12 格式:DOCX 页数:34 大小:74.25KB
下载 相关 举报
Linux-中软件-RAID-的使用.docx_第1页
第1页 / 共34页
本文档共34页,全文阅读请下载到手机保存,查看更方便
资源描述
Linux中软件RAID的使用 一 •简介 在Linux系统中目前以MD (Multiple Devices)虚拟块设备的方式实现软件RAID,利用多个底层的块设备 虚拟出一个新的虚拟块设备,并口利用条带化(stripping)技术将数据块均匀分布到多个磁盘上来提高虚拟设 备的读写性能,利用不同的数据冗余算法来保护用户数据不会因为某个块设备的故障而完全丧失,而且还 能在设备被替换后将丧失的数据恢复到新的设备上。关于不同冗余级别的定义和数据块以及校验块的分布 示意图可以参考存储专业委员会给出的参考资料“Common RAID Disk Data Format Specification H<,目前 MD 支持 linear, multipath, raidO (stripping), raidl (mirror), raid4, raid5, raid6, raidlO 等不同的冗余级别和 组成方式,当然也能支持多个RAID阵列的层叠组成raidl+0,raid5+1等类型的阵列。在参考资料“Software RAID HOWTO”中介绍了早期软件RAID阵列功能特点和使用方式,但是因为软件RAID程序的功能不断增 力口,因此很有必要写份新的使用介绍。 本文主要先讲解用户层mdadm如何管理软件RAID以及使用中经常遇到的问题和解决方法。在流行的 Linux的发布版中,如FedoraCore,Gentoo, Ubuntu,Debian,SuseLinux系统中一般已经将MD驱动模块直 接编译到内核中或编译为可动态加载的驱动模块。我们可以在机器启动后通过cat/proc/mdstat看内核是否 已经加载MD驱动或者cat /proc/devices是否有md块设备,并且可以使用Ismod看MD是否是以模块形 式加载到系统中。 [root@fc5 mdadm-2. 6. 3]# cat /proc/mdstatPersonalities : unused devices: <none>[root@fc5 mdadm-2. 6. 3]# cat /proc/devices | grep md 1 ramdisk9 md 253 mdp[root@fc5 mdadm-2. 6. 3]# Ismod | grep md md_mod73364 0如果Linux系统既没有将MD编译到内核也没有自动加载MD模块,那么没有/proc/mdstat文件,那么需要 执行命令modprobe md加载驱动模块。 [root@fc5 mdadm-2. 6. 3]#cat /proc/mdstatmdadm: no RAID superblock on /dev/sdk mdadm: /dev/sdk has wrong uuid. mdadm: /dev/sdkl has wrong uuid. mdadm: /dev/sdb is identified as a member of /dev/mdO, slot 0. mdadm: /dev/sdc is identified as a member of /dev/mdO, slot 1. mdadm: /dev/sdd is identified as a member of /dev/mdO, slot 2. mdadm: /dev/sde is identified as a member of /dev/mdO, slot 3. mdadm: /dev/sdf is identified as a member of /dev/mdO, slot 4. mdadm: /dev/sdg is identified as a member of /dev/mdO, slot 5. mdadm: /dev/sdh is identified as a member of /dev/mdO, slot 6. mdadm: added /dev/sdc to /dev/mdO asmdadm: added /dev/sdd to /dev/mdO as 2 mdadm: added /dev/sde to /dev/mdO as 3mdadm: mdadm: added /dev/sdf to /dev/mdO as 4 mdadm: added /dev/sdg to /dev/mdO as 5mdadm: added /dev/sdh to /dev/mdO as 6 mdadm: added /dev/sdb to /dev/mdO as 0 mdadm: /dev/mdO has been started with 6 drives and 1 spare. 配置文件: /etc/mdadm.conf作为默认的配置文件,主要作用是方便跟踪软RAID的配置,尤其是可以配置监视和事件 上报选项。Assemble命令也可以使用-config(或者其缩写-c)来指定配置文件。我们通常可以如下命令来建 立配置文件。 [root@fc5 mdadm-2. 6. 3]#echo DEVICE /dev/sd[b-h] /dev/sd[i-k]1 > /etc/mdadm. conf [root@fc5 mdadm-2. 6. 3]# . /mdadm -Ds >>/etc/mdadm. conf [root@fc5 mdadm-2. 6. 3]# cat /etc/mdadm. conf DEVICE /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg /dev/sdh/dev/sdi1 /dev/sdjl /dev/sdkl ARRAY /dev/mdl level=raidO num-devices=3 UUID=dcff6ec9:53c4c668:58b81af9:ef71989d ARRAY /dev/mdO level=raidlO num-devices* spares=l UUID=0cabc5e5:842d4baa:e3f6261b:al7a477a使用配置文件启动阵列时,mdadm会查询配置文件中的设备和阵列内容,然后启动运行所有能运行RAID 阵列。如果指定阵列的设备名字,那么只启动对应的阵列。 [root@fc5 mdadm-2. 6. 3]# . /mdadm -As mdadm: /dev/mdl has been started with 3 drives. mdadm: /dev/mdO has been started with 6 drives and 1 spare. [root@fc5 mdadm-2. 6. 3]# cat /proc/mdstat Personalities : [raidO] [raidlO] mdO : active raidlO sdb[0] sdh[6] (S) sdg[5] sdf[4] sde[3] sdd[2] sdc[1]3145536 blocks 64K chunks 2 near-copies [6/6] [UUUUUU] mdl : active raidO sdil [0] sdkl [2] sdjl[1] 7337664 blocks 32k chunksunused devices: <none> [root@fc5 mdadm-2. 6. 3]# . /mdadm -S /dev/mdO /dev/mdl mdadm: stopped /dev/mdO mdadm: stopped /dev/mdl [root@fc5 mdadm-2. 6. 3]# . /mdadm -As /dev/mdO mdadm: /dev/mdO has been started with 6 drives and 1 spare. [root@fc5 mdadm-2. 6. 3]# cat /proc/mdstat Personalities : [raidO] [raidlO] mdO : active raidlO sdb[O] sdh[6] (S) sdg[5] sdf[4] sde[3] sdd[2] sdc[l]3145536 blocks 64K chunks 2 near-copies [6/6] [UUUUUU] unused devices: <none> 2.4 查询阵列的状态 我们可以通过cat/proc/mdstat信息查看所有运行的RAID阵列的状态,在第一行中首先是MD的设备名, active和inactive选项表示阵列是否能读写,接着是阵列的RAID级别,后面是属于阵列的块设备,方括号 口里的数字表示设备在阵列中的序号,(S)表示其是热备盘,(F)表示这个磁盘是faulty状态。在第二行中首 先是阵列的大小,单位是KB,接着是chunk-size的大小,然后是layout类型,不同RAID级别的layout 类型不同,[6/6]和[UUUUUU]表示阵列有6个磁盘并且6个磁盘都是正常运行的,而[5/6]和LUUUUU]表 示阵列有6个磁盘中5个都是正常运行的,下划线对应的那个位置的磁盘是faulty状态的。 [root@fc5 mdadm-2. 6. 3]# cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] [raidl] mdO : active raid5 sdh[6](S) sdg[5] sdf[4] sde[3] sdd[2] sdc[l] sdb[0] 5242560 blocks level 5, 64k chunk, algorithm 2 [6/6] [UUUUUU]unused devices: <none> [root@fc5 mdadm-2. 6. 3]# . /mdadm /dev/mdO -f /dev/sdh /dev/sdbmdadm: set /dev/sdh faulty in /dev/mdO mdadm: set /dev/sdb faulty in /dev/mdO [root@fc5 mdadm-2. 6. 3]# cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] [raidl] mdO : active raid5 sdh[6](F) sdg[5] sdf[4] sde[3] sdd[2] sdc[l] sdb[7](F)5242560 blocks level 5, 64k chunk, algorithm 2 [6/5] [_UUUUU] unused devices: <none> 如果Linux系统目前支持sysfs也可以访问/sys/block/mdO目录查询阵列信息。 [root@fc5 mdadm-2. 6. 3]# Is -1 /sys/block/mdO/ capability holders range size stat uevent dev dev md removable slaves subsystem [root@fc5 mdadm-2. 6. 3]# Is /sys/block/mdO/md/ array_statedev-sdgrdl bitmapset—bits dev-sdhrd2 chunk_sizelayoutrd3 component_sizelevelrd4 dev-sdbmetadataversion rd5 suspendlo sync_action sync_completed sync_speed sync_speed_max dev-sdcmismatch_cntre shape_pos i t i on sync_speed_min dev-sddnewdevresync_start dev-sde raiddisks safe_mode_delay dev-sdf rdO suspendhi [root@fc5 mdadm-2. 6. 3]# Is /sys/block/mdO/slaves/ sdb sdc sdd sde sdf sdg sdh我们也可以通过mdadm命令查看指定阵列的简要信息(使用-query或者其缩写・Q)和详细信息(使用-detail 或者其缩写.D)详细信息包括RAID的版本、创立的时间、RAID级别、阵列容量、可用空间、设备数量、 超级块状态、更新时间、UUID信息、各个设备的状态、RAID算法级别类型和布局方式以及块大小等信息。 设备状态信息分为 active, sync, spare, faulty, rebuilding, removing 等等。 [root@fc5 mdadm-2. 6. 3]# . /mdadm 一一query /dev/mdO /dev/mdO: 2. lOOGiB raidlO 6 devices, 1 spare. Use mdadm 一一detail for more detail. [root@fc5 mdadm-2. 6. 3]# . /mdadm 一一detail /dev/mdO /dev/mdO: Creation Time : Sun Aug 22 17:49:53 1999 Raid Level : raidlOArray Size : 3145536 (3.00 GiB 3. 22 GB) Used Dev Size : 1048512 (1024.11 MiB 1073.68 MB) Raid Devices : 6Total Devices : 7 Preferred Minor : 0Persistence : Superblock is persistent Update Time : Sun Aug 22 21:55:02 1999State : clean Active Devices : 6Working Devices : 7 Failed Devices : 0Spare Devices : 1 Layout : near=2, far=lChunk Size : 64K UUID : 0cabc5e5:842d4baa:e3f6261b:al7a477aEvents : 0. 122 68112 spare/dev/sdh Number Major Minor RaidDevice State 0 8 16 0 active sync /dev/sdb 1 8 32 1 active sync /dev/sdc 2 8 48 2 active sync /dev/sdd 3 8 64 3 active sync /dev/sde 4 8 80 4 active sync /dev/sdf 5 8 96 5 active sync /dev/sdg 2.5 管理阵列 mdadm可以在Manage模式下,对运行中的阵列进行添加及删除磁盘。常用于标识failed磁盘,增力口 spare(热备)磁盘,以及从阵列中移走已经失效的磁盘等等。使用-fail(或者其缩写・f)指定磁盘损坏。 [root@fc5 mdadm-2. 6. 3]# . /mdadm /dev/mdO 一一fail /dev/sdb mdadm: set /dev/sdb faulty in /dev/mdO 当磁盘已经损坏时,使用-remove(或者其缩写・・f)参数将这个磁盘从磁盘阵列中移走;但如果设备还正在被 阵列使用,那么不能从阵列中移走。 [root@fc5 mdadm-2.6. 3]# . /mdadm /dev/mdO 一一remove /dev/sdb mdadm: hot removed /dev/sdb [root@fc5 mdadm-2. 6. 31# . /mdadm /dev/mdO 一一remove /dev/sde mdadm: hot remove failed for /dev/sde: Device or resource busy 如果阵列带有spare磁盘,那么自动将损坏磁盘上的数据重构到新的spare磁盘上; [root@fc5 mdadm-2. 6. 3]# . /mdadm -f /dev/mdO /dev/sdb ; cat /proc/mdstat mdadm: set /dev/sdb faulty in /dev/mdO Personalities : [raidO] [raidlO] mdO : active raidlO sdh[6] sdb[7] (F) sdc[0] sdg[5] sdf[4] sde[3] sdd[2] 3145536 blocks 64K chunks 2 near-copies [6/5] [U_UUUU] [====>]recovery = 35. 6% (373888/1048512) finish=0.lmin speed=93472K/sec unused devices: <none>如果阵列没有热备磁盘,可以使用-add(或者其缩写-a)参数增加热备磁盘 [root@fc5 mdadm-2. 6. 3]# . /mdadm /dev/mdO 一一add /dev/sdhmdadm: added /dev/sdh 2. 6监控阵列 可以使用mdadm对RAID阵列进行监控,监控程序定时查询指定的事件是否发生,然后根据配置来妥善处理。例如当阵列中的磁盘设备出现问题的时候,可以发送邮件给管理员;或者当磁盘出现问题的时候由 回调程序来进行自动的磁盘替换,所有监控事件都可以记录到系统日志中。目前mdadm支持的事件有 RebuildStarted, RebuildNN(NN is 20, 40, 60, or 80), RebuildFinished, Fail,FailSpare,SpareActive,NewArray, DegradedArray, MoveSpare, SparesMissing, TestMessageo如果配置每300秒mdadm监控进程查询MD设备一次,当阵列出现错误,会发送邮件给指定的用户,执 行事件处理的程序并且记录上报的事件到系统的日志文件。使用-daemonise参数(或者其缩写・f)使程序持 续在后台运行。如果要发送邮件需要sendmail程序运行,当邮件地址被配置为外网地址应先测试是否能发 送出去。 [root@fc5 mdadm-2. 6. 3]#. /mdadm 一一monitor 一一mail=root@localhost --program=/root/md. sh 一一syslog 一一delay=300 /dev/mdO 一一daemonise查看系统日志信息,可以看到哪个阵列或者阵列中的哪个设备发生过的哪些事件。 [root@fc5 mdadm-2. 6. 3]# mdadm -f /dev/mdO /dev/sdb mdadm: set /dev/sdb faulty in /dev/mdO [root@fc5 mdadm-2. 6. 3]#tail - f /var/log/messages Aug 22 22:04:12 fc5 mdadm: RebuildStarted event detected on md device /dev/mdO Aug 22 22:04:12 fc5 kernel: md: using maximum available idle 10 bandwidth (but not more than 200000 KB/sec) for recovery. Aug 22 22:04:12 fc5 kernel: md: using 128k window, over a total of 1048512 blocks. Aug 22 22:04:14 fc5 mdadm: Fail event detected on md device /dev/mdO, component device /dev/sdbAug 22 22:04:14 fc5 mdadm: Rebuild80 event detected on md device /dev/mdO Aug 22 22:04:16 fc5 mdadm: RebuildFinished event detected on md device /dev/mdO Aug 22 22:04:16 fc5 mdadm: SpareActive event detected on md device /dev/mdO, component device /dev/sdhAug 22 22:04:16 fc5 kernel: md: mdO: recovery done. 回调程序从mdadm程序接受两个或者三个参数:事件名字,监控阵列的名字和特殊事件可能使用到的底 层块设备名字。上面的事件返回的信息如下: Eventname: RebuildStarted Device: /dev/mdO next: Eventname: Fail Device: /dev/mdO next: /dev/sdb Eventname: Rebuild80 Device: /dev/mdO next: Eventname: RebuildFinished Device: /dev/mdO next: Eventname:SpareActive Device: /dev/mdO next: /dev/sdh 2.7扩展阵列 如果在创立阵列时不想使用整个块设备,可以指定用于创立RAID阵列每个块设备使用的设备大小。 mdadm -CR /dev/mdO -15 -n6 /dev/sd[b-g] -xl /dev/sdh --size=102400然后在阵列需要扩展大小时: 使用模式-grow(或者其缩写-Q)以及-size参数(或者其缩写-z)在加上合适的 大小数值就能分别扩展阵列所使用每个块设备的大小。 [root@fc5 mdadm-2. 6. 3]# . /mdadm -Q /dev/mdO /dev/mdO: 500. OOMiB raid5 6 devices, 1 spare. Use mdadm 一一detail for more detail. [root@fc5 mdadm-2.6.3]# ./mdadm -grow /dev/mdO -size=204800 [root@fc5 mdadm-2. 6. 3]# cat /proc/mdstat Personalities : [raidO] [raidlO] [raid6] [raid5] [raid4] mdO : active raid5 sdh[6] (S) sdg[5] sdf[4] sde[3] sdd[2] sdc[1] sdb[0] 1024000 blocks level 5, 64k chunk, algorithm 2 [6/6] [UUUUUU] [============>]resync = 69. 6% (144188/204800) finish=0. Omin speed=10447K/sec unused devices: <none> [root@fc5 mdadm-2. 6. 3]# . /mdadm -Q /dev/mdO/dev/mdO: 1OOO. OOMiB raid5 6 devices, 1 spare. Use mdadm 一一detail for more detail. 如果上面是文件系统(ext2,ext3, reiserfs),在设备大小扩展后,文件系统也要同时扩展。 [root@fc5 mdadm-2. 6. 3]# df -h | grep md /dev/mdO485M11M 449M3% /mnt/md-test[root@fc5 mdadm-2. 6. 3]# ext2online /dev/mdO [root@fc5 mdadm-2. 6. 3]# df -h | grep md/dev/mdO969M11M 909M2% /mnt/md-test mdadm还提供增加或减少阵列中设备个数的功能(reshape),使用模式一grow和-raid-disks(或者其缩写・n)参数再加上合适的设备个数°扩展后阵列中原来的热备盘变为活跃磁盘,所以阵列的设备个数增加,阵 列的大小也相应增加。 [root@fc5 mdadm-2. 6. 3]# . /mdadm -D /dev/mdO/dev/mdO: Version : 00.90. 03Creation Time : Sun Aug 22 22:16:19 1999 Raid Level : raid5Array Size : 1024000 (1000.17 MiB 1048.58 MB) Used Dev Size : 204800 (200.03 MiB 209.72 MB)Raid Devices : 6 Total Devices : 7Preferred Minor : 0 Persistence : Superblock is persistentUpdate Time : Sun Aug 22 22:23:46 1999 State : cleanActive Devices : 6 Working Devices : 7Failed Devices : 0 Spare Devices : 1 Layout : left-symmetricChunk Size : 64K 112 spare/dev/sdh UUID : 53e6395c:laf16258:087cb2a0:b66b087f Events :0. 12 Number Major Minor RaidDevice State 0 8 16 0 active sync /dev/sdb 1 8 32 1 active sync /dev/sdc 2 8 48 2 active sync /dev/sdd 3 8 64 3 active sync /dev/sde 4 8 80 4 active sync /dev/sdf 5 8 96 5 active sync /dev/sdg [root@fc5 mdadm-2. 6. 3]# . /mdadm 一一grow /dev/mdO 一一raid-disks=7mdadm: Need to backup 1920K of critical section.. mdadm: ... critical section passed. [root@fc5 mdadm-2. 6. 3]# cat /proc/mdstat Personalities : [raidO] [raidlO] [raid6] [raid5] [raid4] mdO : active raid5 sdh[6] sdg[5] sdf[4] sde[3] sdd[2] sdc[1] sdb[0]1024000 blocks super 0. 91 level 5, 64k chunk, algorithm 2 [7/7] [UUUUUUU] [===> ]reshape = 19. 4% (40256/204800) finish=0. 7mincat: /proc/mdstat: No such file or directory [root@fc5 mdadm-2. 6. 3]# modprobe md [root@fc5 mdadm-2. 6. 3]# Ismod | grep md mdmod73364 0 如果系统中没有MD驱动模块那么需要自己从Linux内核源代码网站下载源代码包,并且重新编译内核,并且需要在内核的配置文件选择。 devices driver support (RAID and LVM)<*> RAID support < M>Linear (append) mode < M>RAID-0 (striping) mode < M>RAID-1 (mirroring) mode < M> RAID-10 (mirrored striping) mode (EXPERIMENTAL) < M>RA1D-4/RA1D-5/RAID-6 mode [*]Support adding drives to a raid-5 array <M>Multipath I/O support <M>Faulty test module for MD在Linux系统中用户层以前使用raidtool工具集来管理MD设备,目前广泛使用mdadm软件来管理MD设 备,而且该软件都会集成在Linux的发布版中。如果系统中没有套装可以到RAID驱动程序和mdadm软件 的维护者Neil Brown的个人网站来下载遮码包进行编译安装,或者下载RPM包直接安装。mdadm的最 新版本是可以使用mdadm -version查看当前系统使用的版本。本文使用的是mdadm-2.6.3, Linux 内核版本是Linux-2.6.22.1 o下面的测试命令是在虚拟机环境中测试运行的。 [root@fc5 mdadm-2. 6. 3]# uname -r2. 6. 22. 1 [root@fc5 mdadm-2. 6. 3]# . /mdadm 一一versionmdadm - v2.6.3 - 20th August 2007 speed=3659K/secunused devices: <none> [root@fc5 mdadm-2. 6. 3]# . /mdadm -D /dev/mdO /dev/mdO: Creation Time : Sun Aug 22 22:16:19 1999 Raid Level : raid5Array Size : 1024000 (1000.17 MiB 1048.58 MB) Used Dev Size : 204800 (200.03 MiB 209.72 MB) Raid Devices : 7Total Devices : 7 Preferred Minor : 0Persistence : Superblock is persistent Update Time : Sun Aug 22 22:26:46 1999State : clean, recovering Active Devices : 7Working Devices : 7 Failed Devices : 0Spare Devices : 0 Layout : left-symmetricChunk Size : 64K Reshape Status : 25% complete Delta Devices : 1, (6->7) UUID : 53e6395c:laf16258:087cb2a0:b66b087f Events : 0. 76 Number Major Minor RaidDevice State 0 8 16 1 8 32 2 8 48 3 8 64 4 8 80 5 8 96 6 8 112 0 8 16 1 8 32 2 8 48 3 8 64 4 8 80 5 8 96 6 8 112 0activesync 1 activesync 2 activesync 3 activesync 4 activesync 5 activesync 6 activesync /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg /dev/sdh cat /proc/mdstat [root@fc5 mdadm-2. 6. 3]#Personalities : [raidO] [raidlO] [raid6] [raid5] [raid4] mdO : active raid5 sdh[6] sdg[5] sdf[4] sde[3] sdd[2] sdc[l] sdb[O]1228800 blocks level 5, 64k chunk, algorithm 2 [7/7] [UUUUUUU] unused devices: <none> [root@fc5 mdadm-2. 6. 3]# . /mdadm -D /dev/mdO/dev/mdO: Creation Time : Sun Aug 22 22:16:19 1999 Raid Level : raid5Array Size : 1228800 (1200.20 MiB 1258.29 MB) Used Dev Size : 204800 (200.03 MiB 209.72 MB) Raid Devices : 7Total Devices : 7 Preferred Minor : 0 Persistence : Superblock is persistentUpdate Time : Sun Aug 22 22:37:11 1999 State : cleanActive Devices : 7 Working Devices : 7Failed Devices : 0 Spare Devices : 0Layout : left-symmetric Chunk Size : 64KUUID : 53e6395c:laf16258:087cb2a0:b66b087f Events :0.204 Number Major Minor RaidDevice State 0 8 16 0 active sync /dev/sdb 1 8 32 1 active sync /dev/sdc 2 8 48 2 active sync /dev/sdd 3 8 64 3 active sync /dev/sde 4 8 80 4 active sync /dev/sdf 5 8 96 5 active sync /dev/sdg 6 8 112 6 active sync /dev/sdh 2.8Bitmap 记录 使用bitmap模式记录RAID阵列有多少个块已经同步(resync)。参数-bitmap(或者其缩写七)指定记录 bitmap信息的文件名,如果是interval参数表示bitmap记录在每个设备的元数据区。-bitmap-c
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 通信科技 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服