码迷,mamicode.com
首页 > 系统相关 > 详细

LinuxRAID实现

时间:2018-12-16 18:07:06      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:磁盘故障   开机   生成   lsb   persist   模拟   none   blocks   不同的   

RAID的作用

提高IO能力
磁盘并行读写
提高耐用性
磁盘冗余来实现
级别:多块磁盘组织在一起的工作方式有所不同
RAID实现的方式
外接式磁盘阵列:通过扩展卡提供适配能力
内接式RAID:主板集成RAID控制器,安装OS前在BIOS里配置
软件RAID:通过OS实现

RAID-0

RAID 0的优缺点

读、写性能提升
可用空间:N*min(S1,S2,…)
无容错能力,如果坏掉一块,那么raid0就不能用了
最少磁盘数:2, 2+

RAID-1

RAID1的优缺点

读性能提升、写性能略有下降
可用空间:1*min(S1,S2,…)
有冗余能力 ,只要不是两块硬盘同时损坏,基本上不会丢失数据
最少磁盘数:2, 2N

RAID-5

RAID5的优缺点

读、写性能提升
可用空间:(N-1)*min(S1,S2,…)
有容错能力:允许最多1块磁盘损坏
最少磁盘数:3, 3+
如果一块硬盘损坏,也可以通过其他硬盘的校验位来重新建立数据。

RAID-6:

技术分享图片

RAID6的优缺点

和raid5类似,校验位分开写到了不同的磁盘
读、写性能提升
可用空间:(N-2)*min(S1,S2,…)
有容错能力:允许最多2块磁盘损坏
最少磁盘数:4, 4+

RAID-10:

RAID10的优缺点
利用率只能达到百分之50
读、写性能提升
可用空间:N*min(S1,S2,…)/2
有容错能力:每组镜像最多只能坏一块
最少磁盘数:4, 4+

RAID-01

RAID 10是先镜射再分区数据,再将所有硬盘分为两组,视为是RAID 0的最低组合,然后将这两组各自视为RAID 1运作

RAID 01则是跟RAID 10的程序相反,是先分区再将数据镜射到两组硬盘。它将所有的硬盘分为两组,变成RAID 1的最低组合,而将两组硬盘各自视为RAID 0运作。

当RAID 10有一个硬盘受损,其余硬盘会继续运作。RAID 01只要有一个硬盘受损,
同组RAID 0的所有硬盘都会停止运作,只剩下其他组的硬盘运作,可靠性较低。

软RAID

mdadm:为软RAID提供管理界面
RAID设备可命名为/dev/md0、/dev/md1、/dev/md2、/dev/md3等
支持的RAID级别:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10
模式:
创建:-C
装配:-A
监控:-F
管理:-f, -r, -a

-C: 创建模式

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

-D:显示raid的详细信息

mdadm-D /dev/md#
管理模式:
-f: 标记指定磁盘为损坏
-a: 添加磁盘
-r: 移除磁盘
观察md的状态:cat /proc/mdstat

创建一个RAID-0

1.用分区来创建raid ,首先创建两个raid的分区,大小一样

[root@centos7 ~]#fdisk -l /dev/sdb

Disk /dev/sdb: 161.1 GB, 161061273600 bytes, 314572800 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x90c3db64

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10487807     5242880   fd  Linux raid autodetect
/dev/sdb2        10487808    20973567     5242880   fd  Linux raid autodetect

2.再把两个分区创建为raid-0,-C表示进入创建模式 -a自动创建设备文件 -l指定raid类型 -n指定块设备

[root@centos7 ~]#mdadm -C -a yes /dev/md0 -l 0 -n 2 /dev/sdb{1,2}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

查看已经建立好raid的信息

[root@centos7 ~]#mdadm -D /dev/md0 
/dev/md0:
           Version : 1.2
     Creation Time : Tue Oct 23 12:06:55 2018
        Raid Level : raid0
        Array Size : 10475520 (9.99 GiB 10.73 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Tue Oct 23 12:06:55 2018
             State : clean 
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

        Chunk Size : 512K

Consistency Policy : none

              Name : centos7.5.localdomain:0  (local to host centos7.5.localdomain)
              UUID : c954f4cf:3428c9c3:4e5dfc8c:96c3aece
            Events : 0

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       18        1      active sync   /dev/sdb2

3.创建raid的文件系统

[root@centos7 ~]#mkfs.xfs /dev/md0

4.挂载硬盘,把ID信息添加到/etc/fstab文件里

[root@centos7 ~]#blkid /dev/md0
/dev/md0: UUID="56089a5a-833c-4415-8c54-789173344652" TYPE="xfs"
[root@centos7 ~]#mount -a

创建RAID-5

1.以centos6 4块硬盘来试验(b,c,d,e)

[root@CentOS6 ~]$lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1  3.7G  0 rom  
sr1     11:1    1    2G  0 rom  
sda      8:0    0  200G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0 48.8G  0 part /
├─sda3   8:3    0 29.3G  0 part /data
├─sda4   8:4    0    1K  0 part 
└─sda5   8:5    0    2G  0 part [SWAP]
sdb      8:16   0   20G  0 disk 
sdc      8:32   0   20G  0 disk 
sdd      8:48   0   20G  0 disk 
sde      8:64   0   20G  0 disk

2.设置为raid-5 -x 指一个备用硬盘 发现其他硬盘损坏,自己立马顶替损坏硬盘的位置

[root@CentOS6 ~]$mdadm -C -a yes /dev/md1 -l 5 -n 3 -x 1 /dev/sd{b..e}

3.查看新建的md1硬盘信息硬盘sde为备用硬盘

[root@CentOS6 ~]$mdadm -D /dev/md1
/dev/md1:
        Version : 1.2
  Creation Time : Tue Oct 23 12:36:47 2018
     Raid Level : raid5
     Array Size : 41910272 (39.97 GiB 42.92 GB)
  Used Dev Size : 20955136 (19.98 GiB 21.46 GB)
   Raid Devices : 3
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Tue Oct 23 12:38:32 2018
          State : clean 
 Active Devices : 3
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 512K

           Name : CentOS6.10.localdomain:1  (local to host CentOS6.10.localdomain)
           UUID : afc70631:08758f06:c3c8b61c:7668a8c5
         Events : 18

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       4       8       48        2      active sync   /dev/sdd

       3       8       64        -      spare   /dev/sde
# 给硬盘建立文件系统即可挂载。

软RAID管理

生成配置文件:mdadm–D –s >> /etc/mdadm.conf
停止设备:mdadm–S /dev/md0
激活设备:mdadm–A –s /dev/md0 激活
强制启动:mdadm–R /dev/md0
删除raid信息:mdadm–zero-superblock /dev/sdb

软RAID测试和修复

模拟磁盘故障
mdadm /dev/md0 -f /dev/sda1
移除磁盘
mdadm /dev/md0 –r /dev/sda1
从软件RAID磁盘修复磁盘故障
?替换出故障的磁盘然后开机
?在备用驱动器上重建分区
?mdadm /dev/md0 -a /dev/sda1
mdadm /proc/mdstat及系统日志信息

LinuxRAID实现

标签:磁盘故障   开机   生成   lsb   persist   模拟   none   blocks   不同的   

原文地址:http://blog.51cto.com/yy1109lll/2331116

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!