关于IT运维技术的
最佳实践博客网站

在Linux系统中配置软 RAID 磁盘阵列 Software RAID的实验笔记

RAID 是英文 Redundant Array of Independent Disks 的缩写,翻译成中文意思是“独立磁盘冗余阵列”,有时也简称 磁盘阵列 (Disk Array)。简单的说,RAID是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份的技术。

一般来说,要实现RAID可以分为硬件实现和软件实现两种。所谓硬RAID就是指通过硬件实现,同理软件实现的就称作为软RAID。

所谓硬RAID 磁盘阵列 就是用专门的RAID控制器将硬盘和电脑连接起来,RAID控制器负责将所有的RAID成员磁盘配置成一个虚拟的RAID磁盘卷。对于操作系统而言,他只能识别到由RAID控制器配置后的虚拟磁盘,而无法识别到组成RAID的各个成员盘。

各raid阵列应用场景

软RAID 磁盘阵列 就是不使用RAID控制器,而是直接通过软件层实现的RAID。与硬RAID不同的是,软RAID的各个成员盘对于操作系统来说是可见的,但操作系统并不把各个成员盘呈现给用户,而只是把通过软件层配置好的虚拟RAID卷呈现给用户,使用户可以像使用一个普通磁盘一样使用RAID卷。

二、系统环境

实验环境:VMware Workstation 系统平台:CentOS release 6.5 (Final) mdadm 版本:mdadm - v3.2.6 - 25th October 2012

三、设置磁盘

在虚拟机里模拟物理增加磁盘,在这篇笔记中,我将创建RAID0, RAID1, RAID5分区,RAID0 需要两块硬盘,RAID1 需要两块硬盘,RAID5需要四块硬盘,所以在这里添加了八块物理硬盘,每块1.00 GB.

具体步骤详情:https://www.cnhzz.com/lvm/

查看下添加的硬盘

[root@C65mini ~]# fdisk -l | grep /dev
Disk /dev/sda: 21.5 GB, 21474836480 bytes
/dev/sda1   *           1          26      204800   83  Linux
/dev/sda2              26         217     1536000   82  Linux swap / Solaris
/dev/sda3             217        2611    19229696   83  Linux
Disk /dev/sdb: 1073 MB, 1073741824 bytes
Disk /dev/sdc: 1073 MB, 1073741824 bytes
Disk /dev/sdd: 1073 MB, 1073741824 bytes
Disk /dev/sde: 1073 MB, 1073741824 bytes
Disk /dev/sdg: 1073 MB, 1073741824 bytes
Disk /dev/sdh: 1073 MB, 1073741824 bytes
Disk /dev/sdi: 1073 MB, 1073741824 bytes
Disk /dev/sdf: 1073 MB, 1073741824 bytes

四、安装mdadm

mdadm 是multiple devices admin 的简称,它是Linux下的一款标准的软件RAID 管理工具。 一般情况下,系统都已经自动安装了。

查看是否安装?

[root@C65mini ~]# rpm -qa | grep mdadm
mdadm-3.2.6-7.el6_5.2.x86_64

我的已经安装了。如果没有安装可以使用yum来安装。

[root@C65mini ~]# yum install mdadm

准备工作完毕!

五、创建RAID0(主要应用于3D产业实时渲染、视频剪接高速缓存,最求的是最大容量和速度)

创建RAID0 需要两块硬盘,所以我们拿/dev/sdb 和/dev/sdc 来做实验。

第一步:做实验之前,先要对硬盘分区,使用fdisk命令 一次输入n,p,1,1,回车,t,键入fd,w保持。分区就这么简单
[root@C65mini ~]# fdisk /dev/sdb

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-130, default 1): 1
Last cylinder, +cylinders or +size{K,M,G} (1-130, default 130): 
Using default value 130

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

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

使用同样的方法对/dev/sdc 进行分区操作。

使用 partprobe命令 同步分区情况

[root@C65mini ~]# partprobe 
Warning: WARNING: the kernel failed to re-read the partition table on /dev/sda (设备或资源忙).  As a result, it may not reflect all of your changes until after reboot.

查看现在的分区状况

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

Disk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 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: 0x381da9c2

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         130     1044193+  fd  Linux raid autodetect

Disk /dev/sdc: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 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: 0xe9428b0a

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1         130     1044193+  fd  Linux raid autodetect
第二步:开始创建RAID0
[root@C65mini ~]# mdadm -C /dev/md0 -ayes -l0 -n2 /dev/sd[b,c]1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@C65mini ~]# 

说明:

-C  --create  创建阵列;

-a  --auto   同意创建设备,如不加此参数时必须先使用mknod 命令来创建一个RAID设备,不过推荐使用-a yes参数一次性创建;

-l   --level   阵列模式,支持的阵列模式有 linear, raid0, raid1, raid4, raid5, raid6, raid10, multipath, faulty, container;

-n --raid-devices 阵列中活动磁盘的数目,该数目加上备用磁盘的数目应该等于阵列中总的磁盘数目;

/dev/md0     阵列的设备名称;

/dev/sd{b,c}1  参与创建阵列的磁盘名称;

第三步:查看RAID0状态
[root@C65mini ~]# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Tue Jul 22 18:11:16 2014
     Raid Level : raid0
     Array Size : 2087936 (2039.34 MiB 2138.05 MB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Tue Jul 22 18:11:16 2014
          State : clean 
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

     Chunk Size : 512K

           Name : C65mini.localdomain:0  (local to host C65mini.localdomain)
           UUID : 82c4722d:9a4228be:fde406ae:4ff6576a
         Events : 0

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1
[root@C65mini ~]# 

说明:

Raid Level : 阵列级别;

Array Size : 阵列容量大小;

Raid Devices : RAID成员的个数;

Total Devices : RAID中下属成员的总计个数,因为还有冗余硬盘或分区,也就是spare,为了RAID的正常运珩,随时可以推上去加入RAID的;

State : clean, degraded, recovering 状态,包括三个状态,clean 表示正常,degraded 表示有问题,recovering 表示正在恢复或构建;

Active Devices : 被激活的RAID成员个数;

Working Devices : 正常的工作的RAID成员个数;

Failed Devices : 出问题的RAID成员;

Spare Devices : 备用RAID成员个数,当一个RAID的成员出问题时,用其它硬盘或分区来顶替时,RAID要进行构建,在没构建完成时,这个成员也会被认为是spare设备;

UUID : RAID的UUID值,在系统中是唯一的;

第四步:创建RAID 配置文件 /etc/mdadm.conf

RAID 的配置文件为/etc/mdadm.conf,默认是不存在的,需要手工创建。该配置文件的主要作用是系统启动的时候能够自动加载软RAID,同时也方便日后管理。但不是必须的,推荐对该文件进行配置。 我这里需要创建这个文件,测试中发现,如果没有这个文件,则reboot 后,已经创建好的md0 会自动变成md127。 /etc/mdadm.conf 文件内容包括:由DEVICE 选项指定用于软RAID的所有设备,和ARRAY选项所指定阵列的设备名、RAID级别、阵列中活动设备的数目以及设备的UUID号。

标准mdadm配置文件格式

[root@C65mini ~]# cat /etc/mdadm.conf
DEVICE /dev/sdb1 /dev/sdc1
ARRAY /dev/md0 level=raid0 num-devices=2 UUID=82c4722d:9a4228be:fde406ae:4ff6576a
第五步:格式化磁盘整列

在使用之前必须格式化操作,指定一种文件系统才能使用,lvm也是这个道理。

[root@C65mini ~]# mkfs.ext4 /dev/md0
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
130560 inodes, 521984 blocks
26099 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8160 inodes per group
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912

正在写入inode表: 完成                            
Creating journal (8192 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

This filesystem will be automatically checked every 24 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@C65mini ~]# 
第六步:建立挂载目录,并且挂载
[root@C65mini /]# mkdir /raid0_test
[root@C65mini /]# mount /dev/md0 /raid0_test/
[root@C65mini /]# df -TH
Filesystem     Type   Size  Used Avail Use% Mounted on
/dev/sda3      ext4    20G  4.4G   15G  24% /
tmpfs          tmpfs  519M     0  519M   0% /dev/shm
/dev/sda1      ext4   204M   73M  120M  38% /boot
/dev/md0       ext4   2.2G   37M  2.0G   2% /raid0_test

可以看到,/dev/md0 的可用大小为2G

第七步:为了下次开机还能正常使用我们的RAID设备,需要将挂载的信息写入/etc/fstab 文件中。
[root@C65mini /]# cat /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Sat May 10 00:13:03 2014
#
# 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=ba01d8c6-71ba-4253-b840-5d71e66ddb89 /                       ext4    defaults        1 1
UUID=ed7f222a-86e3-4840-8a6e-c10847fa62c5 /boot                   ext4    defaults        1 2
UUID=f7de5a10-70c4-4c58-a3ac-ead3c8986f61 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
/dev/md0            /raid0_test         ext4    defaults        0 0
[root@C65mini /]# 

reboot测试下开机是否挂载,到此raid0 创建完毕了。

六、创建RAID1

和创建raid0 类似,我们拿/dev/sdd 和/dev/sde 这两块硬盘来做实验。

第一步:新建分区和修改类型

步骤一样:fdisk /dev/sdd 依次输入:n,1,1回车,t,fd,w保存 使用同样的方法对/devsde分区和修改和类型

[root@C65mini ~]# mdadm -C /dev/md1 -ayes -l1 -n2 /dev/sd[d,e]1
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.
[root@C65mini ~]# 

第二步:查看创建状态和RAID1信息

[root@C65mini ~]# cat /proc/mdstat
Personalities : [raid0] [raid1] 
md1 : active raid1 sde1[1] sdd1[0]
      1043648 blocks super 1.2 [2/2] [UU]

md0 : active raid0 sdc1[1] sdb1[0]
      2087936 blocks super 1.2 512k chunks

unused devices: <none>
[root@C65mini ~]# mdadm -D /dev/md1
/dev/md1:
        Version : 1.2
  Creation Time : Wed Jul 23 16:21:24 2014
     Raid Level : raid1
     Array Size : 1043648 (1019.36 MiB 1068.70 MB)
  Used Dev Size : 1043648 (1019.36 MiB 1068.70 MB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Wed Jul 23 16:30:10 2014
          State : clean 
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : C65mini.localdomain:1  (local to host C65mini.localdomain)
           UUID : ce81bf29:daa19c42:30a693c2:13706a1e
         Events : 17

    Number   Major   Minor   RaidDevice State
       0       8       49        0      active sync   /dev/sdd1
       1       8       65        1      active sync   /dev/sde1
[root@C65mini ~]# 

第三步:添加raid1 到RAID 配置文件/etc/mdadm.conf 并修改

[root@C65mini ~]# cat /etc/mdadm.conf 
DEVICE /dev/sdb1 /dev/sdc1
ARRAY /dev/md0 level=raid0 num-devices=2 UUID=82c4722d:9a4228be:fde406ae:4ff6576a
DEVICE /dev/sdd1 /dev/sde1
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=ce81bf29:daa19c42:30a693c2:13706a1e

第四步:为RAID1创建文件系统(格式化磁盘阵列)

[root@C65mini ~]# mkfs.ext4 /dev/md1
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65280 inodes, 260912 blocks
13045 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8160 inodes per group
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376

正在写入inode表: 完成                            
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

This filesystem will be automatically checked every 27 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@C65mini ~]# 

第五步:创建挂载目录,并且挂载。

[root@C65mini /]# rm -rf raid1_test/
[root@C65mini /]# mkdir /raid1_test
[root@C65mini /]# mount /dev/md1 /raid1_test/
[root@C65mini /]# df -TH
Filesystem     Type   Size  Used Avail Use% Mounted on
/dev/sda3      ext4    20G  4.4G   15G  24% /
tmpfs          tmpfs  519M     0  519M   0% /dev/shm
/dev/sda1      ext4   204M   73M  120M  38% /boot
/dev/md0       ext4   2.2G   37M  2.0G   2% /raid0_test
/dev/md1       ext4   1.1G   19M  981M   2% /raid1_test
[root@C65mini /]# 

第六步:让开机自动挂载磁盘阵列

[root@C65mini /]# cat /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Sat May 10 00:13:03 2014
#
# 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=ba01d8c6-71ba-4253-b840-5d71e66ddb89 /                       ext4    defaults        1 1
UUID=ed7f222a-86e3-4840-8a6e-c10847fa62c5 /boot                   ext4    defaults        1 2
UUID=f7de5a10-70c4-4c58-a3ac-ead3c8986f61 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
/dev/md0                /raid0_test             ext4    defaults        0 0
/dev/md1                /raid1_test             ext4    defaults        0 0
[root@C65mini /]# 

reboot重启下看看是否自动挂载,RAID1。已经创建完毕了。

7、创建RAID5

RAID5 至少需要三块硬盘,我们拿/dev/sdf, /dev/sdg, /dev/sdh, /dev/sdi 这四块硬盘来做实验,三块做为活动盘,另一块做为热备盘。

第一步:同样在使用之前都要新建分区和修改类型。
[root@C65mini /]# fdisk -l /dev/sdf /dev/sdg /dev/sdh /dev/sdi

Disk /dev/sdf: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 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: 0x62011f3e

   Device Boot      Start         End      Blocks   Id  System
/dev/sdf1               1         130     1044193+  fd  Linux raid autodetect

Disk /dev/sdg: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 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: 0xbbe6489a

   Device Boot      Start         End      Blocks   Id  System
/dev/sdg1               1         130     1044193+  fd  Linux raid autodetect

Disk /dev/sdh: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 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: 0xee04f593

   Device Boot      Start         End      Blocks   Id  System
/dev/sdh1               1         130     1044193+  fd  Linux raid autodetect

Disk /dev/sdi: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 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: 0xcb248cea

   Device Boot      Start         End      Blocks   Id  System
/dev/sdi1               1         130     1044193+  fd  Linux raid autodetect
[root@C65mini /]# 
第二步:创建RAID5
[root@C65mini /]# mdadm -C /dev/md5 -ayes -l5 -n3 -x1 /dev/sd[f,g,h,i]1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.
[root@C65mini /]# 

说明:"-x1" 或"--spare-devices=1" 表示当前阵列中热备盘只有一块,若有多块热备盘,则将"--spare-devices" 的值设置为相应的数目。

第三步:查看RAID5创建的状态
[root@C65mini /]# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] 
md5 : active raid5 sdh1[4] sdi1[3](S) sdg1[1] sdf1[0]
      2086912 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]

md1 : active raid1 sde1[1] sdd1[0]
      1043648 blocks super 1.2 [2/2] [UU]

md0 : active raid0 sdc1[1] sdb1[0]
      2087936 blocks super 1.2 512k chunks

unused devices: <none>
[root@C65mini /]# mdadm -D /dev/md5
/dev/md5:
        Version : 1.2
  Creation Time : Wed Jul 23 16:56:59 2014
     Raid Level : raid5
     Array Size : 2086912 (2038.34 MiB 2137.00 MB)
  Used Dev Size : 1043456 (1019.17 MiB 1068.50 MB)
   Raid Devices : 3
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Wed Jul 23 16:57:08 2014
          State : clean 
 Active Devices : 3
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 512K

           Name : C65mini.localdomain:5  (local to host C65mini.localdomain)
           UUID : 38cceb86:348fe499:e86b104b:1c3a22e1
         Events : 18

    Number   Major   Minor   RaidDevice State
       0       8       81        0      active sync   /dev/sdf1
       1       8       97        1      active sync   /dev/sdg1
       4       8      113        2      active sync   /dev/sdh1

       3       8      129        -      spare   /dev/sdi1
[root@C65mini /]# 

说明:spare为热备盘

第四步:添加raid5 到RAID配置文件/etc/mdadm.conf 并修改
[root@C65mini /]# cat /etc/mdadm.conf 
DEVICE /dev/sdb1 /dev/sdc1
ARRAY /dev/md0 level=raid0 num-devices=2 UUID=82c4722d:9a4228be:fde406ae:4ff6576a

DEVICE /dev/sdd1 /dev/sde1
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=ce81bf29:daa19c42:30a693c2:13706a1e

DEVICE /dev/sdf1 /dev/sdg1 /dev/sdh1 /dev/sdi1 
ARRAY /dev/md5 level=raid5 num-devices=3 UUID=38cceb86:348fe499:e86b104b:1c3a22e1

[root@C65mini /]# 
第五步:格式化磁盘整列
[root@C65mini /]# mkfs.ext4 /dev/md5
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
130560 inodes, 521728 blocks
26086 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8160 inodes per group
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912

正在写入inode表: 完成                            
Creating journal (8192 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

This filesystem will be automatically checked every 25 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@C65mini /]# 
第六步:建立挂载目录并且挂载
[root@C65mini /]# mkdir /raid5_test
[root@C65mini /]# mount /dev/md5 /raid5_test/
[root@C65mini /]# df -TH
Filesystem     Type   Size  Used Avail Use% Mounted on
/dev/sda3      ext4    20G  4.4G   15G  24% /
tmpfs          tmpfs  519M     0  519M   0% /dev/shm
/dev/sda1      ext4   204M   73M  120M  38% /boot
/dev/md0       ext4   2.2G   37M  2.0G   2% /raid0_test
/dev/md1       ext4   1.1G   19M  981M   2% /raid1_test
/dev/md5       ext4   2.2G   37M  2.0G   2% /raid5_test
[root@C65mini /]# 

说明:raid5 的可用大小为2.2G,即(3-1)x 1G.

第七步:写入 /etc/fstab 开机自动挂载
[root@C65mini /]# cat  /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Sat May 10 00:13:03 2014
#
# 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=ba01d8c6-71ba-4253-b840-5d71e66ddb89 /                       ext4    defaults        1 1
UUID=ed7f222a-86e3-4840-8a6e-c10847fa62c5 /boot                   ext4    defaults        1 2
UUID=f7de5a10-70c4-4c58-a3ac-ead3c8986f61 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
/dev/md0                /raid0_test             ext4    defaults        0 0
/dev/md1                /raid1_test             ext4    defaults        0 0
/dev/md5                /raid5_test             ext4    defaults        0 0
[root@C65mini /]# 

然后reboot 测试开机是否自动挂载,raid5 创建完毕。

8、RAID维护

RAID 做好之后,还需要进行日常的维护操作,比如其中一块物理硬盘损坏,我们需要进行更换故障磁盘的操作,下面我们将模拟raid5 中磁盘损坏来讲解软RAID 的维护操作。

模拟磁盘损坏(在实际中,当软RAID 检测到某个磁盘有故障时,会自动标记该磁盘为故障磁盘,并停止对故障磁盘的读写操作。在这里我们将/dev/sdh1 模拟为出现故障的磁盘,命令如下:)

[root@C65mini /]# mdadm /dev/md5 -f /dev/sdh1
mdadm: set /dev/sdh1 faulty in /dev/md5
[root@C65mini /]#

查看重建RAID的状态

在最开始RAID5创建过程中,我设置一个热备盘,/dev/sdi1 ,当我标记/dev/sdf1为故障磁盘的时候,热备盘sdi就会自动的顶替故障磁盘工作,阵列也能在短时间内重建。

[root@C65mini /]# mdadm /dev/md5 -f /dev/sdh1
mdadm: set /dev/sdh1 faulty in /dev/md5
[root@C65mini /]# cat /proc/mdstat 
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] 
md5 : active raid5 sdi1[4] sdh1[3](F) sdg1[1] sdf1[0]
      2086912 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]
      [==========>..........]  recovery = 51.3% (536832/1043456) finish=0.0min speed=178944K/sec

md1 : active raid1 sde1[1] sdd1[0]
      1043648 blocks super 1.2 [2/2] [UU]

md0 : active raid0 sdc1[1] sdb1[0]
      2087936 blocks super 1.2 512k chunks

unused devices: <none>
[root@C65mini /]# mdadm -D /dev/md5
/dev/md5:
        Version : 1.2
  Creation Time : Wed Jul 23 16:56:59 2014
     Raid Level : raid5
     Array Size : 2086912 (2038.34 MiB 2137.00 MB)
  Used Dev Size : 1043456 (1019.17 MiB 1068.50 MB)
   Raid Devices : 3
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Wed Jul 23 18:30:32 2014
          State : clean 
 Active Devices : 3
Working Devices : 3
 Failed Devices : 1
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

           Name : C65mini.localdomain:5  (local to host C65mini.localdomain)
           UUID : 38cceb86:348fe499:e86b104b:1c3a22e1
         Events : 112

    Number   Major   Minor   RaidDevice State
       0       8       81        0      active sync   /dev/sdf1
       1       8       97        1      active sync   /dev/sdg1
       4       8      129        2      active sync   /dev/sdi1

       3       8      113        -      faulty   /dev/sdh1
[root@C65mini /]# 

以上信息表明阵列正在重建,当一个设备出现故障或被标记故障时,相应设备的方括号后将被标以(F),如 "sdh14"。 其中 "[3/2]" 的第一位数表示阵列所包含的设备数,第二位数表示活动的设备数,因为目前有一个故障设备,所以第二位数为2; 这时的阵列以降级模式运行,虽然该阵列仍然可用,但是不具有数据冗余; 而 "[UU_]" 表示当前阵列可以正常使用的设备是/dev/sdf1 和/dev/sdg1,如果是设备 “/dev/sdf1” 出现故障时,则将变成[_UU]。

再次查看阵列状态

[root@C65mini /]# cat /proc/mdstat 
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] 
md5 : active raid5 sdi1[4] sdh1[3](F) sdg1[1] sdf1[0]
      2086912 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]

md1 : active raid1 sde1[1] sdd1[0]
      1043648 blocks super 1.2 [2/2] [UU]

md0 : active raid0 sdc1[1] sdb1[0]
      2087936 blocks super 1.2 512k chunks

unused devices: <none>
[root@C65mini /]# 

当前的RAID 设备又恢复了正常。

移除刚才的故障盘 /dev/sdh1,并且查看RAID5状态

[root@C65mini /]# mdadm /dev/md5 -r /dev/sdh1
mdadm: hot removed /dev/sdh1 from /dev/md5
[root@C65mini /]# mdadm -D /dev/md5
/dev/md5:
        Version : 1.2
  Creation Time : Wed Jul 23 16:56:59 2014
     Raid Level : raid5
     Array Size : 2086912 (2038.34 MiB 2137.00 MB)
  Used Dev Size : 1043456 (1019.17 MiB 1068.50 MB)
   Raid Devices : 3
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Wed Jul 23 18:35:17 2014
          State : clean 
 Active Devices : 3
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

           Name : C65mini.localdomain:5  (local to host C65mini.localdomain)
           UUID : 38cceb86:348fe499:e86b104b:1c3a22e1
         Events : 113

    Number   Major   Minor   RaidDevice State
       0       8       81        0      active sync   /dev/sdf1
       1       8       97        1      active sync   /dev/sdg1
       4       8      129        2      active sync   /dev/sdi1
[root@C65mini /]# 

/dev/sdh1 已经移除了。

添加新的热备磁盘

如果是实际生产中添加新的硬盘,同样需要对新硬盘进行创建分区的操作,这里我们为了方便,将刚才模拟损坏的硬盘再次新加到raid5 中

[root@C65mini /]# mdadm /dev/md5 -a /dev/sdh1
mdadm: added /dev/sdh1
[root@C65mini /]# mdadm -D /dev/md5
/dev/md5:
        Version : 1.2
  Creation Time : Wed Jul 23 16:56:59 2014
     Raid Level : raid5
     Array Size : 2086912 (2038.34 MiB 2137.00 MB)
  Used Dev Size : 1043456 (1019.17 MiB 1068.50 MB)
   Raid Devices : 3
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Wed Jul 23 18:38:18 2014
          State : clean 
 Active Devices : 3
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 512K

           Name : C65mini.localdomain:5  (local to host C65mini.localdomain)
           UUID : 38cceb86:348fe499:e86b104b:1c3a22e1
         Events : 114

    Number   Major   Minor   RaidDevice State
       0       8       81        0      active sync   /dev/sdf1
       1       8       97        1      active sync   /dev/sdg1
       4       8      129        2      active sync   /dev/sdi1

       3       8      113        -      spare   /dev/sdh1
[root@C65mini /]# cat /proc/mdstat 
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] 
md5 : active raid5 sdh1[3](S) sdi1[4] sdg1[1] sdf1[0]
      2086912 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]

md1 : active raid1 sde1[1] sdd1[0]
      1043648 blocks super 1.2 [2/2] [UU]

md0 : active raid0 sdc1[1] sdb1[0]
      2087936 blocks super 1.2 512k chunks

unused devices: <none>
[root@C65mini /]# 

九、向RAID中增加存储硬盘

如果现在已经做好的RAID 空间还是不够用的话,那么我们可以向里面增加新的硬盘,来增加RAID 的空间。

在虚拟机中添加物理硬盘(如同真机上面一样,先热插一块硬盘)

用 fdisk -l | grep /dev 查看硬盘得知,刚才我创建(插入)的硬盘名是:/dev/sdj

在像md5中添加硬盘之前,必须先分区在使用。然后使用命令

[root@C65mini ~]# mdadm /dev/md5 -a /dev/sdj1
mdadm: added /dev/sdj1
[root@C65mini ~]# mdadm -D /dev/md5
/dev/md5:
        Version : 1.2
  Creation Time : Wed Jul 23 16:56:59 2014
     Raid Level : raid5
     Array Size : 2086912 (2038.34 MiB 2137.00 MB)
  Used Dev Size : 1043456 (1019.17 MiB 1068.50 MB)
   Raid Devices : 3
  Total Devices : 5
    Persistence : Superblock is persistent

    Update Time : Tue Jul 29 15:52:55 2014
          State : clean 
 Active Devices : 3
Working Devices : 5
 Failed Devices : 0
  Spare Devices : 2

         Layout : left-symmetric
     Chunk Size : 512K

           Name : C65mini.localdomain:5  (local to host C65mini.localdomain)
           UUID : 38cceb86:348fe499:e86b104b:1c3a22e1
         Events : 115

    Number   Major   Minor   RaidDevice State
       0       8       81        0      active sync   /dev/sdf1
       1       8       97        1      active sync   /dev/sdg1
       4       8      129        2      active sync   /dev/sdi1

       3       8      113        -      spare   /dev/sdh1
       5       8      145        -      spare   /dev/sdj1
[root@C65mini ~]# 

查看RAID的状态得知:默认情况下,我们向RAID中增加的磁盘,会被默认当作热备盘,我们需要把热备盘加入到RAID 的活动盘中。

热备盘转换成活动盘(注意n为为阵列的硬盘编号,只按照顺序进行,不能跨越,比如这,我如果n5的话会吧4到5的硬盘全都转换为活动盘了)

[root@C65mini ~]# mdadm -G /dev/md5 -n4
mdadm: Need to backup 3072K of critical section..
[root@C65mini ~]# mdadm -D /dev/md5
/dev/md5:
        Version : 1.2
  Creation Time : Tue Jul 29 16:27:08 2014
     Raid Level : raid5
     Array Size : 3130368 (2.99 GiB 3.21 GB)
  Used Dev Size : 1043456 (1019.17 MiB 1068.50 MB)
   Raid Devices : 4
  Total Devices : 5
    Persistence : Superblock is persistent

    Update Time : Tue Jul 29 16:33:37 2014
          State : clean 
 Active Devices : 4
Working Devices : 5
 Failed Devices : 0
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 512K

           Name : C65mini.localdomain:5  (local to host C65mini.localdomain)
           UUID : 4d786790:a638eab7:3467a62e:f141113f
         Events : 69

    Number   Major   Minor   RaidDevice State
       0       8       81        0      active sync   /dev/sdf1
       1       8       97        1      active sync   /dev/sdg1
       3       8      129        2      active sync   /dev/sdi1
       5       8      145        3      active sync   /dev/sdj1

       4       8      113        -      spare   /dev/sdh1
[root@C65mini ~]# 

已经构建完成了,硬盘容量增加到了1G(Array Size : 3130368 (2.99 GiB 3.21 GB))

RAID 构建完毕后,阵列容量增加,但是文件系统还没有增加,这时我们还需要对文件系统进行扩容。

查看挂载分区得知文件系统容量没有改变

df -TH

resize2fs /dev/md5

文件系统已经扩容到3G,而且测试数据正常,未丢失,新增物理硬盘成功。

最后注意:修改/etc/mdadm.conf 添加刚才的硬盘到里面

第十:RAID设备的删除

1、首先需要卸载挂载点

umount /dev/md5

2、停止RAID设备

mdadm -S /dev/md5

3、当然了停止后也是可以开启的。

mdadm -A -s /dev/md5

4、停止之前先查看下RAID设备有哪些硬盘

mdadm -D /dev/md5

5、使用逐个删除

mdadm --misc --zero-superblock /dev/sdf
mdadm --misc --zero-superblock /dev/sdg
mdadm --misc --zero-superblock /dev/sdh
mdadm --misc --zero-superblock /dev/sdi
mdadm --misc --zero-superblock /dev/sdj

6、删除相关配置文件里面的RAID信息

vim /etc/mdadm.conf

7、还有开机启动项也要清理了

vim /etc/fstab

到此为止,RAID软阵列的笔记整理也已经完成了。

最后说明下,软整理在实际生产环境里面基本是不用的。都是硬RAID来实现。当然这些都影响自己去学习RAID的基本命令和操作。

未经允许不得转载:菜鸟HOW站长 » 在Linux系统中配置软 RAID 磁盘阵列 Software RAID的实验笔记
分享到: 更多 (0)

留下你的脚印

1 评论 开启 "在Linux系统中配置软 RAID 磁盘阵列 Software RAID的实验笔记"

关注动态
排序:   最新 | 最早 | 最多
过客

大神,我用的是xshell5,请问您用的是什么软件,为什么代码是彩色的,看起来非常清晰,本人是小白,还请大神指点,我的邮箱是langzi888808@126.com

wpDiscuz