博客8:RAID阵列的实现

RAID阵列的组成原理:
 
   1.RAID:Redundant Arrays of Independent Disks 独立冗余磁盘阵列
          1)提高IO能力,提高耐用性
          2)级别:即多块磁盘组织在一起的工作方式不同
          3)RAID实现的方式:
                      外接式磁盘阵列:通过扩展适配器提供适配能力
                      内接式RAID(软RAID):主板集成RAID控制器
          4)RAID的级别:
                      RAID-0:条带卷
                      RAID-1:镜像卷
                      ...
                      RAID-5:校验码存盘
                      RAID10:从底层开始先镜像,后条带(企业专用)
                      RAID01:从底层开始先条带,后镜像
                      JBOD:简单的将多个盘连接成一个大盘的技术
   2.RAID-0:
   读、写性能提升;
   可用空间:N*min(S1,S2,...)
   无容错能力
   最少磁盘数:2, 2+

RAID-1:
   读性能提升、写性能略有下降;
   可用空间:1*min(S1,S2,...)
   有冗余能力
   最少磁盘数:2, 2+

RAID-4:
   1101, 0110, 1011

RAID-5:
   读、写性能提升
   可用空间:(N-1)*min(S1,S2,...)
   有容错能力:1块磁盘
   最少磁盘数:3, 3+

RAID-6:
   读、写性能提升
   可用空间:(N-2)*min(S1,S2,...)
   有容错能力:2块磁盘
   最少磁盘数:4, 4+

混合类型
   RAID-10:
    读、写性能提升
    可用空间:N*min(S1,S2,...)/2
    有容错能力:每组镜像最多只能坏一块;
    最少磁盘数:4, 4+

JBOD:Just a Bunch Of Disks
    功能:将多块磁盘的空间合并一个大的连续空间使用;
    可用空间:sum(S1,S2,...)

软RAID的实现原理及相关命令的介绍
   1.内核中有个模块md:multidisks,借此实现了软RAID
   2.这个模块有其特有的管理工具:mdadm。
     这是个模式化的工具,首先它的语法格式为:

mdadm [mode] [raiddevice] [options] <component-devices>

支持的RAID级别:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10;

模式:
      创建:-C
      装配: -A
      监控: -F
      管理:-f, -r, -a

<raiddevice>: /dev/md#
     <component-devices>: 任意块设备

-C: 创建模式
      -n #: 使用#个块设备来创建此RAID;
      -l #:指明要创建的RAID的级别;
      -a {yes|no}:自动创建目标RAID设备的设备文件;
      -c CHUNK_SIZE: 指明块大小;
      -x #: 指明空闲盘的个数;

-D:显示raid的详细信息;
      mdadm -D /dev/md#

管理模式:
      -f: 标记指定磁盘为损坏;
      -a: 添加磁盘
      -r: 移除磁盘

观察md的状态:
      cat /proc/mdstat

停止md设备:
      mdadm -S /dev/md#

watch命令:
     -n #: 刷新间隔,单位是秒;

watch -n# ‘COMMAND‘

软RAID实践操作:

1.首先我们要准备4个分区,其中三个用于RAID5的组成部分,剩余一个用于做空闲的RAID磁盘,防止RAID5中一块硬盘发生错误时,能够及时的顶替上。
[[email protected] ~]# fdisk /dev/sda
Command (m for help): n
First cylinder (8513-15665, default 8513): 5
Value out of range.
First cylinder (8513-15665, default 8513):
Using default value 8513
Last cylinder, +cylinders or +size{K,M,G} (8513-15665, default 15665): +5G

Command (m for help): t
Partition number (1-7): 5
Hex code (type L to list codes): fd
Changed system type of partition 5 to fd (Linux raid autodetect)

Command (m for help): p

Disk /dev/sda: 128.8 GB, 128849018880 bytes
255 heads, 63 sectors/track, 15665 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0008ea5a

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26        7859    62914560   8e  Linux LVM
/dev/sda3            7859        8512     5252256   fd  Linux raid autodetect
/dev/sda4            8513       15665    57456472+   5  Extended
/dev/sda5            8513        9166     5253223+  fd  Linux raid autodetect
/dev/sda6            9167        9820     5253223+  fd  Linux raid autodetect
/dev/sda7            9821       10474     5253223+  fd  Linux raid autodetect

通过以上命令准备好我们将要使用的分区

[[email protected] ~]# partx -a /dev/sda

2.接着我们就要创建RAID5了
   [[email protected] ~]# mdadm -C /dev/md0 -a yes -n 3 -x 1 -l 5 /dev/sda{3,5,6,7}

查看系统中的md设备
   [[email protected] ~]# cat /proc/mdstat
   在这个过程中会做recovery的过程,起作用是
    要对raid的磁盘做按位对齐处理,使得raid有冗余能力,能够做按位异或处理

这样我们的硬件设备就处理好了,接着就要进行格式化处理
  [[email protected] ~]# mke2fs -t ext4 /dev/md0

进行挂载
  [[email protected] ~]# mkdir /mydata
  [[email protected] ~]# mount /dev/md0 /mydata

查看创建的相关信息
  [[email protected] ~]# df -lh
  [[email protected] ~]# blkid /dev/md0

这样一个完整的,有工作能力的RAID5就完成了

2.如果我们人为地破坏其中一个分区,那么会有什么情况发生呢?
   [[email protected] ~]# mdadm /dev/md0 -f /dev/sda7

此时RAID会自动进行同步恢复的,查看命令为:
   [[email protected] ~]# cat /proc/mdstat
   如果想要动态的查询,则可使用watch命令
   [[email protected] ~]# watch -n 1 `cat /proc/mdstat`
   此时再查看此RAID,会发现此时坏了的硬盘已经被空闲盘替换上了
   [[email protected] ~]# mdadm -D /dev/md0
   注意,此时的RAID5仍然可以容纳一块硬盘发生损坏,此时为降级使用RAID设备
   [[email protected] ~]# mdadm /dev/md0 -r /dev/sda6

3.在已经设定好的RAID上在家硬盘,那么只能作为空闲盘来使用,要使其成为RAID5中的一部分,需要使用grow自命令,但在此处就不再赘述了,毕竟不是很重要!

时间: 2024-10-19 22:41:56

博客8:RAID阵列的实现的相关文章

funtoo 安装手册阅读 (博客第 100 篇文章纪念)

*/--> pre.src {background-color: Black; color: White;} pre.src {background-color: Black; color: White;} pre.src {background-color: Black; color: White;} pre.src {background-color: Black; color: White;} pre.src {background-color: Black; color: White;}

从入门到放弃,.net构建博客系统(一):系统构建篇

demo:http://tonyblogs.top/ Git源码:https://github.com/Halifa/TonyBlogs 项目采用的技术有:asp.net mvc4 + autofac + ormlite + mysql + metronic + jquery.datatable + vue 一.项目分层 1. TonyBlogs.Framework,主要实现了框架的依赖注入,定义了依赖的生命周期 2. TonyBlogs.Entity,主要是数据表的实体对象,以Entity为后

Android ListView工作原理完全解析(转自 郭霖老师博客)

原文地址:http://blog.csdn.net/guolin_blog/article/details/44996879 在Android所有常用的原生控件当中,用法最复杂的应该就是ListView了,它专门用于处理那种内容元素很多,手机屏幕无法展示出所有内容的情况.ListView可以使用列表的形式来展示内容,超出屏幕部分的内容只需要通过手指滑动就可以移动到屏幕内了. 另外ListView还有一个非常神奇的功能,我相信大家应该都体验过,即使在ListView中加载非常非常多的数据,比如达到

团队作业6——展示博客(Alpha版本)

团队成员的简介和个人博客地址,团队的源码仓库地址. 代泽旭:平时做事认真负责,组织能力强,擅长C#.C++等多门语言,,此次学习了PHP语言.微信接口等新技能,负责总体任务分配,开发微信接口. 林至贤:相信坚持了就一定能成功,代码领略能力高,擅长JAVA,C++等,为人谦虚谨慎,做事低调,有着崇高的艺术追求,对编程有着一定的自我理解. 王李焕:编程能力较好,为人诚实友善,不爱张扬,擅长JAVA.C++等语言编程,对网页制作也有一定了解,对编程有着浓厚的兴趣. 童毅南:自己爱动手,动手能力强,编程

第1篇博客

注册5年了 在这个初期对我提供帮助最大的网站 我却直到今天才写博客 是有点晚了 今天原本想在csdn上创建博客的 因为csdn的百度指数是51cto的5倍不止 它的火热是无容置疑的 但是那里是程序员的天下 国内网络工程师或运维工程师的大本营还是51cto. 本人勉强算80后,奔三十了,网络工程师出身,自学,cisco入门 huawei/h3c/linux就业,经历过小公司大公司,目前在一个国内一个日落西山的通信设备厂商工作,企业市场占有率第一或第二,薪资在IT行业里应该是垫底的队列. 以后我会不

【集美大学1411_助教博客】2017软件工程开跑啦。。。

一.自我介绍 各位同学大家好,我是各位同学本学期软件工程这门课的助教,我叫郑蕊,现工作于吉林省长春市.很荣幸能再一次为<构建之法>担当助教,在之前担当助教的过程中,我已经获益良多,在此还是要感谢周老师和邹老师,感谢两位老师给我树立的优秀榜样,也感谢两位老师对我的教导和引导.很高兴这次能担当集美大学软工课的助教,在15年冬,我曾去过集美大学,那真的是一所风景非常优美的院校,从暴雪的东北到达绿意盎然的夏门,在集美大学的校园中漫步真是一件让人享受的事.希望本学期能和集美大学的同学们共同探讨软件工程,

delphi 移动开发博客地址收集

这个是各位博主学习整理的笔记,很值得大家学习. XE2011的博客: http://www.cnblogs.com/xe2011/ 万一的博客:http://www.cnblogs.com/del/ 武稀松的博客:http://www.raysoftware.cn/ delphiteacher的博客:http://blog.csdn.net/DelphiTeacher 我一路走来的博客:http://blog.csdn.net/tingsking18/article/details/477210

windows上使用mkdocs搭建静态博客

windows上使用mkdocs搭建静态博客 之前尝试过用HEXO搭建静态博客,最近发现有个叫mkdocs的开源项目也是搭建静态博客的好选择,而且它支持markdown格式,下面简要介绍一下mkdocs的环境搭建过程 项目地址:https://github.com/mkdocs/mkdocs 介绍:英文版----http://www.mkdocs.org/ 中文版----http://markdown-docs-zh.readthedocs.io/zh_CN/latest/ 使用环境:win8.

MetaWeblog博客客户端工具之Windows Live Writer

吐槽&注意的坑: 刚听说了有这么一个东西,据说Windows Live Writer开源之后就改名为Open Live Writer,我以为Open Live Writer就要比Windows Live Writer要好于是就去下了Open Live Writer,然而我还是native了- 我说我装个插件吧,去官网一看,据说九个月没更新了,娘的coming了九个月-! 中英文这种问题就不吐槽了,按照网上的办法Open Live Writer安装插件根本装不上,因为默认安装的时候没有让选择安装目