设为首页 收藏本站
查看: 774|回复: 0

[经验分享] linux 软raid

[复制链接]

尚未签到

发表于 2018-5-23 10:24:16 | 显示全部楼层 |阅读模式
  linux 软件raid
  软件raid占用cpu资源,性能不是很好,不建议生产使用。
linux内核中 md模块实现软raid。用户不能直接操作md。
md可以将任何块设备(磁盘,分区)组合成raid
mdadm 供用户使用的命令。用户-->mdadm-->md
mdadm是个 模式化的工具,有多个模式,每种模式完成不同的功能。


  流行的系统中一般已经将MD驱动模块直接编译到内核中或编译为可动态加载的驱动模块,我们可以在机器启动后通过cat /proc/mdstat看内核是否已经加载MD驱动或者cat /proc/devices是否有md块设备,并且可以使用lsmod看MD是否可以模块加载到系统中.

  如果MD驱动被编译到内核中,当内核调用执行MD驱动时,会自动查找分区为FD(linux raid autodetect格式的磁盘或分区。所以一般会使用fdisk工具将HD磁盘或者SD磁盘分区,再设置为FD的磁盘。

  、
  

  mdadm [mode] <raidDevice> [options] [component-devices]
  mode:工作的具体模式
  raidDevice:将要配置的raid设备文件
  component-devices:构成raid设备的设备,类似于各块单独的硬盘。
  

  --B、--build:创建或组装不需要元数据的阵列,每个设备没有元数据块

  

  -C 、--create:创建模式,使用空闲的设备创建一个新的阵列,每个设备具有元数据块
          -n # 、raid-devices# :构建riaid的基本设备个数

          -x # 、--spare-devices # :热备设备个数

          -l 级别、--level 级别:指定raid的种类

          -a,--auto{=yes,md,mdp,part,p}{NN}  :为创建的raid设备文件

          -c # 、--chunk #:表示每个条带单元的大小,以KB为单位,默认为64KB,条带单元的大小配置对不同负载下的阵列读写性能有很大影响

       mdadm -C /dev/md0 -a yes -l 0 -n 2  /dev/sdb{1,2}
  mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sdb{3,4}
      /proc/mdstat 记录软raid的状态
      watch -n#  "命令"     每隔#秒运行一下命令
      watch -n1 "cat /proc/mdstat"  监视raid的状态,每1秒刷新一下

  

  /etc/mdadm.conf作为默认的配置文件,主要作用是方便跟踪软RAID的配置,尤其是可以配置监视和事件上报选项。Assemble命令也可以使用--config(或者其缩写-c)来指定配置文件。我们通常可以如下命令来建#立配置文件
#echo DEVICE /dev/sdc1 /dev/sdb1 /dev/sdd1 > /etc/mdadm.conf
#mdadm --detail --scan >> /etc/mdadm.conf

使用配置文件启动阵列时,mdadm会查询配置文件中的设备和阵列内容,然后启动运行所有能运行RAID阵列。如果指定阵列的设备名字,则只启动对应的阵列。

  

  -G、--grow:改变阵列中每个设备被使用的容量或阵列中的设备的数目

  

  -A 、--assemble 装配模式,让内核识别到之前已经做好的raid, 将原来属于一个阵列的每个块设备组装为阵列
          主要是检查底层设备的元数据信息,然后再组装为活跃的阵列。如果我们已经知道阵列由那些设备组成,可以指定使用那些设备来启动阵列。
              [root@fc5 mdadm-2.6.3]# ./mdadm -A /dev/md0 /dev/sd[b-h]
              mdadm: /dev/md0 has been started with 6 drives and 1 spare.
          如果有配置文件(/etc/mdadm.conf)可使用命令mdadm -As /dev/md0。mdadm先检查mdadm.conf中的DEVICE信息,然后从每个设备上读取元数据信息,并检查是否和ARRAY信息一致,如果信息一致则启动阵列。
          如果没有配置文件  mdadm -A --scan    会扫描每个磁盘和分区,查看超级快,从而发现阵列信息,如果合适,将组装并启动

          如果没有配置/etc/mdadm.conf文件,而且又不知道阵列由那些磁盘组成,则可以使用命令--examine(或者其缩写-E)来检测当前的块设备上是否有阵列的元数据信息。
      ./mdadm -E /dev/sdi    找到阵列的uuid
      mdadm -A  /dev/md0 uuid=uuid通过uuid来识别、并加载启动阵列  。这里的/dev/md0可以是别的名字,

  来源: <http://blog.csdn.net/yuesichiu/article/details/8502680>
  
  

  -I、--incremental :添加/移除 一个单独的设备 到/从 一个已存在的阵列上,可能的话还会启动阵列
  

  --auto-detect : 如果md被编译到内核,则通知内核启动所有 auto-detected阵列;如果md作为一个模块,则不具有这个功能。
  -F 、--follow 、-- monitor :监控模式Monitor,监控一个或多个阵列,上报指定的事件
  可以使用mdadm对RAID阵列进行监控,监控程序定时查询指定的事件是否发生,然后根据配置来妥善处理。例如当阵列中的磁盘设备出现问题的时候,可以发送邮件给管理员;或者当磁盘出现问题的时候由回调程序来进行自动的磁盘替换,所有监控事件都可以记录到系统日志中。目前mdadm支持的事件有RebuildStarted, RebuildNN(NN is 20, 40, 60, or 80), RebuildFinished, Fail,FailSpare,SpareActive,NewArray, DegradedArray, MoveSpare, SparesMissing, TestMessage。
如果配置每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/md0 --daemonise

  --Misc:报告或者修改阵列中相关设备的信息,比如查询阵列或者设备的状态信息

     

  manage:管理模式(默认)管理已经存储阵列中的设备,比如增加热备磁盘或者设置某个磁盘失效,然后从阵列中删除这个磁盘
      -f 、--fail 指定损坏的设备        mdadm /dev/md0 -f /dev/sda1
          如果有热备盘,则会在指定坏设备后立即顶替上去

      -r、 --remove参数将这个磁盘从磁盘阵列中移走;但如果设备还正在被阵列使用,则不能从阵列中移走移除损坏设备        mdadm /dev/md0 -r /dev/sda1
  ·    -a 添加更换新设备  mdadm /dev/md0 -a /dev/sda2
  

  

  -Q --query 显示阵列的简要信息
          mdadm -q /dev/md0

  -D,--detail 显示阵列的详细信息
          mdadm -D /dev/md0

  -S  停止某个阵列(停止前需要先卸载)
          mdadm -S /dev/md1

  

  

  查询阵列的状态
我们可以通过cat /proc/mdstat信息查看所有运行的RAID阵列的状态,在第一行中首先是MD的设备名,active和inactive选项表示阵列是否能读写,接着是阵列的RAID级别,后面是属于阵列的块设备,方括号[]里的数字表示设备在阵列中的序号,(S)表示其是热备盘,(F)表示这个磁盘是faulty状态。在第二行中首先是阵列的大小,单位是KB,接着是chunk-size的大小,然后是layout类型,不同RAID级别的layout类型不同,[6/6]和[UUUUUU]表示阵列有6个磁盘并且6个磁盘都是正常运行的,而[5/6]和[_UUUUU] 表示阵列有6个磁盘中5个都是正常运行的,下划线对应的那个位置的磁盘是faulty状态的。

  [root@fc5 mdadm-2.6.3]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [raid1]
md0 : active raid5 sdh[6](S) sdg[5] sdf[4] sde[3] sdd[2] sdc[1] sdb[0]
5242560 blocks level 5, 64k chunk, algorithm 2 [6/6] [UUUUUU]
unused devices:

  

  

  小结:
  1.mdadm -C 创建一个新的阵列并启用。
         这个操作将引起一些变化: 生成新的设备文件和目录:
         I:  生成 /dev/mdx     这个设备文件将在阵列信息查询、阵列控制和阵列挂载时使用

          II   生成/dev/md/md-device-map       这个文件中记录mdx的名字、版本号、uuid、路径

         III  在文件   /proc/mdstat    /proc/partitions 中做记录  

     
  2.mdadm -S  停用阵列,将引起以下变化
          删除设备文件  /dev/mdx

          清空记录 /dev/md/md-device-map

          删除 /proc/mdstat    /proc/partitions 中的记录

  3.mdadms -A  启用之前曾做好的阵列,将引起以下变化
          识别并生成设备文件 和记录文件,设备文件名可以指定新的,也可以默认是识别到的
          /dev/mdx     这个设备文件将在阵列信息查询、阵列控制和阵列挂载时使用

          /dev/md/md-device-map       这个文件中记录mdx的名字、版本号、uuid、路径 。如果之前曾做过或已经有阵列在运行,则这个文件应该已经存在了。

          在文件   /proc/mdstat    /proc/partitions 中做记录  

  

          mdadms -A --scan  先查找配置文件,如果有,就按照配置文件的记录来识别启动阵列;否则将扫描每个磁盘和分区的super-block来设别阵列,如果设别到就启动

  

  4.启动磁盘这列后可以rm掉 /dev/mdx  和 /dev/md/md-device-map,但是这样做会影响到使用到 /dev/mdx 的所有操作(除了卸载,卸载参考的是/etc/mtab);对于已经挂载的,可以正常使用。
  针对这种情况,可以重新生成阵列图。  mdadm -Ir 或者 重新识别mdadm -As  (重新识别时,对于已经在用的阵列设备将跳过)
  

          

  

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-480226-1-1.html 上篇帖子: Linux编程报错 下篇帖子: Linux目录的基本说明
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表