创建软件磁盘阵列(RAID)

linux系统管理 struggling 1172次浏览 0个评论

一,什么是磁盘阵列

磁盘阵列全名是“Redundant Arrays of Independent Disks,RAID”,英翻中的意思是:独立冗余磁盘阵列。RAID 可以透过一个技术(软件或硬件),将多个较小的磁碟整合成为一个较大的磁碟装置; 而这个较大的磁碟功能可不止是储存而已,他还具有数据保护的功能。整个 RAID 由于选择的等级 (level) 不同,而使得整合后的磁碟具有不同的功能, 基本常见的 level 有这几种:

1,RAID-0:条带

这种模式的 RAID 会将磁碟先切出等量的区块, 然后当一个文件要写入 RAID 时,该文件会依据区块的大小切割好,之后再依序放到各个磁碟里面去。
特点:
——–> 性能提升: 读,写
——–> 冗余能力(容错能力): 无
——–> 空间利用率:nS
——–> 至少2块盘
2,RAID-1 (mirror):镜像

这种模式主要是让同一份数据,完整的保存在两个磁盘上。
特点:
——–> 性能表现:写性能下降,读性能提升
——–> 冗余能力:有
——–> 空间利用率:1/2
——–> 至少2块盘

3,RAID-5:轮流校验盘

RAID-5 至少需要三颗以上的磁碟才能够组成这种类型的磁盘阵列。这种磁盘阵列的数据写入有点类似 RAID-0 , 不过每个循环的写入过程中,在每颗磁碟还加入一个同位检查数据 (Parity) ,这个数据会记录其他磁碟的备份数据, 用于当有磁碟损毁时的救援。
特点:
——–> 性能表现:读,写提升
——–> 冗余能力:有
——–> 空间利用率:(n-1)/n
——–> 至少需要3块

4,RAID 1+0

RAID-0 的效能佳但是数据不安全,RAID-1 的数据安全但是效能不佳,RAID 1+0 就是先组成 RAID-1 再组成 RAID-0 。

特点:由于具有 RAID 0 的优点,所以效能得以提升,由于具有 RAID 1 的优点,所以数据得以备份。

——–> 性能表现:读、写提升
——–> 冗余能力:有
——–> 空间利用率:1/2
——–> 至少需要4块

5,RAID 0+1

(1)先让两颗磁碟组成 RAID 0,并且这样的配置共有两组; (2)将这两组 RAID 0 再组成一组 RAID 1,这就是 RAID 0+1 !

特点:由于具有 RAID 0 的优点,所以效能得以提升,由于具有 RAID 1 的优点,所以数据得以备份。
——–> 性能表现:读、写提升
——–> 冗余能力:有
——–> 空间利用率:1/2
——–> 至少需要4块

二,软件磁盘阵列(RAID)的配置

软件磁盘阵列的配置很简单,使用mdadm 这套软件。由于软件磁盘阵是系统模拟的,因此使用的装置档名是系统的装置档, 档名为 /dev/md0, /dev/md1…。
mdadm用法如下:
——–> 创建模式:-C
———–> 专用选项:
—————> -l: 级别
—————> -n #: 设备个数
—————> -a {yes|no}: 是否自动为其创建设备文件
—————> -c: CHUNK(数据块)大小, 2^n,默认为64K
—————> -x #: 指定空闲盘个数
——–> 管理模式:–add, –remove, –fail
——–> 监控模式:-F
——–> 增长模式:-G
——–> 装配模式(重新启动):-A
查看RAID阵列的详细信息:-D
停止阵列:-S

1,创建一个RAID0,使用 两个2G的分区,挂载到/mnt目录下,步骤如下:

创建分区–>创建软RAID–>格式化–>挂载

首先创建好需要使用的分区,每一个的大小都为2G,修改其类型为fd,创建好如下(不会创建的请参考他资料):

<code>
←#1#root@localhost ~  →fdisk -l
Disk /dev/sdc: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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: 0xaf97b19a

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1         132     1060258+  fd  Linux raid autodetect
/dev/sdc2             133         264     1060290   fd  Linux raid autodetect
/dev/sdc3             265         526     2104515   fd  Linux raid autodetect
/dev/sdc4             527        1832    10490445    5  Extended
/dev/sdc5             527         788     2104483+  fd  Linux raid autodetect
/dev/sdc6             789        1050     2104483+  fd  Linux raid autodetect
/dev/sdc7            1051        1312     2104483+  fd  Linux raid autodetect
/dev/sdc8            1313        1574     2104483+  fd  Linux raid autodetect
/dev/sdc9            1575        1832     2072353+  fd  Linux raid autodetect

←#3#root@localhost ~  →mdadm -C /dev/md0  -a yes -l 0 -n 2 /dev/sdc{1,2}   #创建RAID0
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
←#4#root@localhost ~  →cat  /proc/mdstat   #显示当前设备上所有一起用的RAID设备
Personalities : [raid0] 
md0 : active raid0 sdc2[1] sdc1[0]
      2117632 blocks super 1.2 512k chunks
      
unused devices: <none>
</code>

第一行部分:指出 md0 为 raid0 ,且使用了 sdc2,sdc1 两块分区。每个装置后面的中括号 [] 内的数字为此分区在 RAID 中的顺序 (RaidDevice)。
第二行:此磁盘阵列拥有 2117632 个block(每个 block 单位为 1K),所以总容量约为 2GB, 使用 RAID 0 等级,写入磁碟的小区块 (chunk) 大小为 512K。

<code>
←#5#root@localhost ~  →mke2fs -j /dev/md0    #格式化分区
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
132464 inodes, 529408 blocks
26470 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=545259520
17 block groups
32768 blocks per group, 32768 fragments per group
7792 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912

Writing inode tables: done                            
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 37 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

←#6#root@localhost ~  →fdisk  -l   #查看创建好的分区

Disk /dev/md0: 2168 MB, 2168455168 bytes
2 heads, 4 sectors/track, 529408 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 524288 bytes / 1048576 bytes
Disk identifier: 0x00000000

←#12#root@localhost ~  →mount /dev/md0 /mnt/     #挂载

←#11#root@localhost ~  →ls /mnt/     #确认是否挂载成功
lost+found

←#6#root@localhost ~  →mdadm -D  /dev/md0   #查看md0详细信息
/dev/md0:                                      <==RAID 装置档名
        Version : 1.2   
  Creation Time : Thu Jun 18 02:45:08 2015            <==RAID 被创建的时间
     Raid Level : raid0               <==RAID 等级为 RAID 0
     Array Size : 2117632 (2.02 GiB 2.17 GB)             <==此 RAID 的可用磁碟容量
   Raid Devices : 2                                         <==用作 RAID 的装置数量
  Total Devices : 2                                       <==全部的装置数量
    Persistence : Superblock is persistent

    Update Time : Thu Jun 18 02:45:08 2015
          State : clean 
 Active Devices : 2                             <==启动的(active)装置数量
Working Devices : 2                                <==可动作的装置数量
 Failed Devices : 0                                  <==出现错误的装置数量
  Spare Devices : 0                                     <==预备磁碟的数量

     Chunk Size : 512K                             <==数据块大小

           Name : localhost.localdomain:0  (local to host localhost.localdomain)
           UUID : 7f598522:c203a686:58fe60ca:38c5d747          <==此装置(RAID)识别码
         Events : 0

    Number   Major   Minor   RaidDevice State
       0       8       33        0      active sync   /dev/sdc1
       1       8       34        1      active sync   /dev/sdc2
</code>

2,创建RAID1,2个2G的分区,挂载到/media目录下

<code>
←#7#root@localhost ~  →mdadm -C /dev/md1 -a yes -n 2 -l 1 /dev/sdc{5,6}     #创建镜像RAID1
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.

←#8#root@localhost ~  →cat  /proc/mdstat   #查看其同步过程
Personalities : [raid0] [raid1] 
md1 : active raid1 sdc6[1] sdc5[0]
      2102400 blocks super 1.2 [2/2] [UU]
      [===============>.....]  resync = 76.0% (1600000/2102400) finish=0.0min speed=228571K/sec
      
md127 : active raid0 sdc2[1] sdc1[0]
      2117632 blocks super 1.2 512k chunks
      
unused devices: <none>
←#9#root@localhost ~  →cat  /proc/mdstat 
Personalities : [raid0] [raid1] 
md1 : active raid1 sdc6[1] sdc5[0]
      2102400 blocks super 1.2 [2/2] [UU]
      [===================>.]  resync = 95.1% (2000000/2102400) finish=0.0min speed=222222K/sec
      
md127 : active raid0 sdc2[1] sdc1[0]
      2117632 blocks super 1.2 512k chunks
      
unused devices: <none>
←#10#root@localhost ~  →cat  /proc/mdstat   #同步完成
Personalities : [raid0] [raid1] 
md1 : active raid1 sdc6[1] sdc5[0]
      2102400 blocks super 1.2 [2/2] [UU]
      
md127 : active raid0 sdc2[1] sdc1[0]
      2117632 blocks super 1.2 512k chunks
      
unused devices: <none>
←#14#root@localhost ~  →mke2fs -j  /dev/md1   #格式化 
←#15#root@localhost ~  →mount /dev/md1 /media/  #挂载
←#17#root@localhost ~  →ls /media/
lost+found

←#26#root@localhost /media  →mdadm -D /dev/md1  #-D显示设备的详细信息
/dev/md1:
        Version : 1.2
  Creation Time : Thu Jun 18 04:03:29 2015
     Raid Level : raid1
     Array Size : 2102400 (2.01 GiB 2.15 GB)
  Used Dev Size : 2102400 (2.01 GiB 2.15 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Thu Jun 18 04:08:19 2015
          State : clean 
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : localhost.localdomain:1  (local to host localhost.localdomain)
           UUID : 2380ce94:98039c97:daf1f4c9:55b4bac1
         Events : 17

    Number   Major   Minor   RaidDevice State
       0       8       37        0      active sync   /dev/sdc5
       1       8       38        1      active sync   /dev/sdc6

	   
	   
←#29#root@localhost /media  →mdadm   /dev/md1 -f /dev/sdc5 #模拟损坏设备
mdadm: set /dev/sdc5 faulty in /dev/md1
←#30#root@localhost /media  →mdadm -D /dev/md1  #查看详细信息
/dev/md1:
        Version : 1.2
  Creation Time : Thu Jun 18 04:03:29 2015
     Raid Level : raid1
     Array Size : 2102400 (2.01 GiB 2.15 GB)
  Used Dev Size : 2102400 (2.01 GiB 2.15 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Thu Jun 18 04:13:50 2015
          State : clean, degraded 
 Active Devices : 1
Working Devices : 1
 Failed Devices : 1
  Spare Devices : 0

           Name : localhost.localdomain:1  (local to host localhost.localdomain)
           UUID : 2380ce94:98039c97:daf1f4c9:55b4bac1
         Events : 19

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8       38        1      active sync   /dev/sdc6

       0       8       37        -      faulty   /dev/sdc5	    ----->已损坏

←#34#root@localhost /media  →mdadm /dev/md1 -r /dev/sdc5  #删掉磁盘
mdadm: hot removed /dev/sdc5 from /dev/md1
←#35#root@localhost /media  →mdadm -D /dev/md1             #再次查看
/dev/md1:
        Version : 1.2
  Creation Time : Thu Jun 18 04:03:29 2015
     Raid Level : raid1
     Array Size : 2102400 (2.01 GiB 2.15 GB)
  Used Dev Size : 2102400 (2.01 GiB 2.15 GB)
   Raid Devices : 2
  Total Devices : 1
    Persistence : Superblock is persistent

    Update Time : Thu Jun 18 04:16:03 2015
          State : clean, degraded 
 Active Devices : 1
Working Devices : 1
 Failed Devices : 0
  Spare Devices : 0

           Name : localhost.localdomain:1  (local to host localhost.localdomain)
           UUID : 2380ce94:98039c97:daf1f4c9:55b4bac1
         Events : 24

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8       38        1      active sync   /dev/sdc6	   	   


←#36#root@localhost /media  →mdadm /dev/md1 -a /dev/sdc7  #重新添加一块磁盘,注意大小要保持一直
mdadm: added /dev/sdc7
←#37#root@localhost /media  →mdadm -D /dev/md1 
/dev/md1:
        Version : 1.2
  Creation Time : Thu Jun 18 04:03:29 2015
     Raid Level : raid1
     Array Size : 2102400 (2.01 GiB 2.15 GB)
  Used Dev Size : 2102400 (2.01 GiB 2.15 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Thu Jun 18 04:17:00 2015
          State : clean, degraded, recovering 
 Active Devices : 1
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 1

 Rebuild Status : 85% complete

           Name : localhost.localdomain:1  (local to host localhost.localdomain)
           UUID : 2380ce94:98039c97:daf1f4c9:55b4bac1
         Events : 39

    Number   Major   Minor   RaidDevice State
       2       8       39        0      spare rebuilding   /dev/sdc7
       1       8       38        1      active sync   /dev/sdc6	   
	   
	

←#5#root@localhost ~  →mdadm /dev/md1 -f /dev/sdc6  #再损坏6
mdadm: set /dev/sdc6 faulty in /dev/md1
←#6#root@localhost ~  →mdadm -D  /dev/md1
/dev/md1:
        Version : 1.2
  Creation Time : Thu Jun 18 04:03:29 2015
     Raid Level : raid1
     Array Size : 2102400 (2.01 GiB 2.15 GB)
  Used Dev Size : 2102400 (2.01 GiB 2.15 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Thu Jun 18 04:56:54 2015
          State : clean, degraded 
 Active Devices : 1
Working Devices : 1
 Failed Devices : 1
  Spare Devices : 0

           Name : localhost.localdomain:1  (local to host localhost.localdomain)
           UUID : 2380ce94:98039c97:daf1f4c9:55b4bac1
         Events : 45

    Number   Major   Minor   RaidDevice State
       2       8       39        0      active sync   /dev/sdc7
       2       0        0        2      removed

       1       8       38        -      faulty   /dev/sdc6     ------>损坏/dev/sdc6
←#7#root@localhost ~  →cat  /media/
fstab       lost+found/ 
←#7#root@localhost ~  →cat  /media/fstab   #查看数据是否同步了

#
# /etc/fstab
# Created by anaconda on Mon Apr 20 12:35:03 2015
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=a513b95f-c2cd-49a5-8fc7-1903f74d6dab /                       ext4    defaults        1 1
UUID=c691b684-befb-4215-8d34-4a1063927955 /boot                   ext4    defaults        1 2
UUID=da3b73a0-20b9-415b-879e-0519af98cf4f swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/root/swap              swap                    swap    defaults        0 0
/dev/myvg/mydata        /mydata                 ext3    defaults        0 0
#//192.168.2.114//test   /mnt                    cifs    credentials=/etc/samba/cred.passwd 0 0       	


←#15#root@localhost /media  →mdadm  -S  /dev/md1   #停止md1
mdadm: stopped /dev/md1
←#16#root@localhost /media  →cat  /proc/mdstat
Personalities : [raid0] [raid1] 
md127 : active raid0 sdc2[1] sdc1[0]
      2117632 blocks super 1.2 512k chunks
      
unused devices: <none>


←#22#root@localhost /media  →mdadm  -A  /dev/md1 /dev/sdc{6,7}    #重新装配设备,/dev/sdc6已损坏
mdadm: /dev/md1 has been started with 1 drive (out of 2). 
</code>

添加为三块盘设定一个作为热代替的,先删除/dev/sdc6,将/dev/sdc8添加上去

<code>
←#14#root@localhost ~  →mdadm  /dev/md1 -a /dev/sdc5   #添加第三块
mdadm: added /dev/sdc5
←#15#root@localhost ~  →mdadm -D /dev/md1
/dev/md126:
        Version : 1.2
  Creation Time : Thu Jun 18 04:03:29 2015
     Raid Level : raid1
     Array Size : 2102400 (2.01 GiB 2.15 GB)
  Used Dev Size : 2102400 (2.01 GiB 2.15 GB)
   Raid Devices : 2
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Thu Jun 18 05:59:41 2015
          State : clean 
 Active Devices : 2
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 1

           Name : localhost.localdomain:1  (local to host localhost.localdomain)
           UUID : 2380ce94:98039c97:daf1f4c9:55b4bac1
         Events : 68

    Number   Major   Minor   RaidDevice State
       2       8       39        0      active sync   /dev/sdc7
       3       8       40        1      active sync   /dev/sdc8

       4       8       37        -      spare   /dev/sdc5   ---->空闲的
	   
	   
	   ----------------(/dev/md1=/dev/md1)
←#20#root@localhost ~  →mdadm /dev/md1 -f  /dev/sdc7   #模拟/dev/sdc7出错,测试/dev/sdc5是否会自动顶上去
mdadm: set /dev/sdc7 faulty in /dev/md1   
←#22#root@localhost ~  →mdadm -D /dev/md1
/dev/md1:
        Version : 1.2
  Creation Time : Thu Jun 18 04:03:29 2015
     Raid Level : raid1
     Array Size : 2102400 (2.01 GiB 2.15 GB)
  Used Dev Size : 2102400 (2.01 GiB 2.15 GB)
   Raid Devices : 2
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Thu Jun 18 06:02:50 2015
          State : clean 
 Active Devices : 2
Working Devices : 2
 Failed Devices : 1
  Spare Devices : 0

           Name : localhost.localdomain:1  (local to host localhost.localdomain)
           UUID : 2380ce94:98039c97:daf1f4c9:55b4bac1
         Events : 87

    Number   Major   Minor   RaidDevice State
       4       8       37        0      active sync   /dev/sdc5    ------->/dev/sdc5自动顶上去了
       3       8       40        1      active sync   /dev/sdc8

       2       8       39        -      faulty   /dev/sdc7            -------->/dev/sdc7出错
←#23#root@localhost ~  →	   
</code>

三,启动自动启动 RAID 并自动挂载

<code>
←#26#root@localhost ~  →mdadm -D --scan  #自动扫描所有raid及其关联的设备

←#27#root@localhost ~  →mdamd -D --scan > /etc/mdadm.conf   
#将当前RAID信息保存至配置文件,以便以后进行装配(以后开机会自动读取)

←#28#root@localhost ~ vim /etc/fstab  #添加以下行
/dev/md1    /mnt/media    ext3    defaults     1 2

</code>

DevOps-田飞雨 》》转载请注明源地址
喜欢 (0)or分享 (0)
发表我的评论
取消评论
*

表情 贴图 加粗 链接 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址