软raid实现

Posted 莫孟林

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软raid实现相关的知识,希望对你有一定的参考价值。

几种raid类型,我就不在这里赘述了,企业一般都是用raid卡,所以一般使用软raid的非常少,但是也有用的,所以就写一个软raid的实验吧,其实用处不大。

实验环境:centos6.9

需要的硬件:5块硬盘,或者5个分区勉强当做试验也行。

#添加两个小技巧

测试磁盘读速
            dd if=a_big_file of=/dev/null bs=1M count=2048 可以测试每秒的读速度
            dd if=/dev/zero of=a_big_file bs=1M count=2048 可以测试每秒的写速度

一、我们先做创建raid10的试验

1、创建raid设备

            注意:在创建raid前,应该先查看磁盘是否被识别,如果内核还为识别,创建Raid时会报错:
   cat /proc/partitions
  如果没有被识别,可以执行命令:
  kpartx /dev/sdb或者partprobe/dev/sdb
  1. [[email protected]7-01 ~]# mdadm -C /dev/md0 -a yes -l 10 -n 4 -x 1 /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg
  2. mdadm: Defaulting to version 1.2 metadata
  3. mdadm: array /dev/md0 started.

#上面命令  -a 表示“自动创建目标RAID设备的设备文件”  yes表示创建,no表示不创建

#-l 表示要创建的raid的类型,我们使用的是10。

#-n表示使用几个磁盘来创建raid,我们raid10最少4块,我们就使用4块

#-x表示备用磁盘的个数,  备用磁盘的用处是,当有raid磁盘损坏时,备用磁盘会自动添补上损坏磁盘的空缺,确保系统的健壮。

创建raid设备md0成功。

2、查看一下我们刚刚创建的md0设备信息

  1. [[email protected]7-01 ~]# mdadm -D /dev/md0
  2. /dev/md0:
  3. Version : 1.2
  4. Creation Time : Wed Dec 6 19:49:33 2017
  5. Raid Level : raid10
  6. Array Size : 10477568 (9.99 GiB 10.73 GB)
  7. Used Dev Size : 5238784 (5.00 GiB 5.36 GB)
  8. Raid Devices : 4
  9. Total Devices : 5
  10. Persistence : Superblock is persistent
  11. Update Time : Wed Dec 6 19:50:26 2017
  12. State : clean
  13. Active Devices : 4
  14. Working Devices : 5
  15. Failed Devices : 0
  16. Spare Devices : 1
  17. Layout : near=2
  18. Chunk Size : 512K
  19. Consistency Policy : resync
  20. Name : joker-7-01:0 (local to host joker-7-01)
  21. UUID : c7b0daed:33040e1e:24afaba0:f4162d26
  22. Events : 17
  23. Number Major Minor RaidDevice State
  24. 0 8 32 0 active sync set-A /dev/sdc
  25. 1 8 48 1 active sync set-B /dev/sdd
  26. 2 8 64 2 active sync set-A /dev/sde
  27. 3 8 80 3 active sync set-B /dev/sdf
  28. 4 8 96 - spare /dev/sdg

由以上信息可见“Raid Level : raid10”  咱们创建的是raid10,。

0 8 32 0 active sync set-A /dev/sdc

1 8 48 1 active sync set-B /dev/sdd

2 8 64 2 active sync set-A /dev/sde

3 8 80 3 active sync set-B /dev/sdf

sdc、sdd、sde、sdf四个磁盘都是激活状态

sdg状态为备份磁盘

#cat /proc/mdstat 查看阵列状态

3、生成软raid配置文件

mdadm -Ds /dev/md0 >/etc/mdadm.conf   #如果不生成配置文件,当已经组好的raid停止工作后,将不能被再次启动。所以如果确定使用软raid技术,创建完raid之后,一定要创建配置文件

4、已经创建好了raid,但是还不能使用,因为还没有创建文件系统,现在创建文件系统

  1. [[email protected]7-01 ~]# mkfs.ext4 /dev/md0
  2. mke2fs 1.42.9 (28-Dec-2013)
  3. 文件系统标签=
  4. OS type: Linux
  5. 块大小=4096 (log=2)
  6. 分块大小=4096 (log=2)
  7. Stride=128 blocks, Stripe width=256 blocks
  8. 655360 inodes, 2619392 blocks
  9. 130969 blocks (5.00%) reserved for the super user
  10. 第一个数据块=0
  11. Maximum filesystem blocks=2151677952
  12. 80 block groups
  13. 32768 blocks per group, 32768 fragments per group
  14. 8192 inodes per group
  15. Superblock backups stored on blocks:
  16. 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
  17. Allocating group tables: 完成
  18. 正在写入inode表: 完成
  19. Creating journal (32768 blocks): 完成
  20. Writing superblocks and filesystem accounting information: 完成

5、挂载raid设备

  1. [[email protected]7-01 ~]# mount /dev/md0 /mnt
  2. [[email protected]7-01 ~]# lsblk
  3. NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
  4. sda 8:0 0 200G 0 disk
  5. ├─sda1 8:1 0 1G 0 part /boot
  6. └─sda2 8:2 0 72G 0 part
  7. ├─centos_joker--7--01-root 253:0 0 50G 0 lvm /
  8. ├─centos_joker--7--01-swap 253:1 0 2G 0 lvm [SWAP]
  9. └─centos_joker--7--01-app 253:2 0 20G 0 lvm /app
  10. sdb 8:16 0 20G 0 disk
  11. ├─sdb1 8:17 0 3G 0 part
  12. ├─sdb2 8:18 0 3G 0 part
  13. └─sdb3 8:19 0 3G 0 part
  14. sdc 8:32 0 5G 0 disk
  15. └─md0 9:0 0 10G 0 raid10 /mnt
  16. sdd 8:48 0 5G 0 disk
  17. └─md0 9:0 0 10G 0 raid10 /mnt
  18. sde 8:64 0 5G 0 disk
  19. └─md0 9:0 0 10G 0 raid10 /mnt
  20. sdf 8:80 0 5G 0 disk
  21. └─md0 9:0 0 10G 0 raid10 /mnt
  22. sdg 8:96 0 5G 0 disk
  23. └─md0 9:0 0 10G 0 raid10 /mnt
  24. sr0 11:0 1 1024M 0 rom

已经可以正常使用了

二、现在我们来做一个测试,看看如果有磁盘损坏备用磁盘能否替补

 

  1. [[email protected]7-01 ~]# mdadm -f /dev/md0 /dev/sdd #-f 表示标记磁盘为损坏
  2. mdadm: set /dev/sdd faulty in /dev/md0
  3. [[email protected]7-01 ~]# mdadm -D /dev/md0
  4. /dev/md0:
  5. Version : 1.2
  6. Creation Time : Wed Dec 6 19:49:33 2017
  7. Raid Level : raid10
  8. Array Size : 10477568 (9.99 GiB 10.73 GB)
  9. Used Dev Size : 5238784 (5.00 GiB 5.36 GB)
  10. Raid Devices : 4
  11. Total Devices : 5
  12. Persistence : Superblock is persistent
  13. Update Time : Wed Dec 6 20:26:02 2017
  14. State : clean, degraded, recovering #raid状态发生了变化,表示正在修复
  15. Active Devices : 3
  16. Working Devices : 4
  17. Failed Devices : 1
  18. Spare Devices : 1
  19. Layout : near=2
  20. Chunk Size : 512K
  21. Consistency Policy : resync
  22. Rebuild Status : 50% complete #修复进度
  23. Name : joker-7-01:0 (local to host joker-7-01)
  24. UUID : c7b0daed:33040e1e:24afaba0:f4162d26
  25. Events : 27
  26. Number Major Minor RaidDevice State
  27. 0 8 32 0 active sync set-A /dev/sdc
  28. 4 8 96 1 spare rebuilding /dev/sdg #使用备用的sdg磁盘来填充阵列
  29. 2 8 64 2 active sync set-A /dev/sde
  30. 3 8 80 3 active sync set-B /dev/sdf
  31. 1 8 48 - faulty /dev/sdd #标记的sdd磁盘

mdadm –G /dev/md0 –n4 -a /dev/sdh /dev/sdj  #为设备添加备用磁盘

三、实验已经完成了,现在来拆除raid磁盘

1、第一步就是先取消md0的挂载,很简单umount就ok

umount /mnt

如果取消挂载出错,使用fuser -km /mnt  来关闭使用使用挂载点的进程,然后再umount

2、禁用md0设备

mdadm -S  /dev/md0    #相对的  mdadm -A -s /dev/md0 表示启用设备     mdadm -R /dev/md0 强制启动raid

3、删除md0配置文件

rm -rf /etc/mdadm.conf

4、因为在raid设备上创建了文件系统,取消磁盘,为了不对以后的操作产生影响,我们需要把md0的超级块抹除

mdadm –zero-superblock /dev/sdb1        #清除超级块

 

    1. [[email protected]7-01 dev]# mdadm --zero-superblock /dev/sdc
    2. [[email protected]7-01 dev]# mdadm --zero-superblock /dev/sdd
    3. [[email protected]7-01 dev]# mdadm --zero-superblock /dev/sde
    4. [[email protected]7-01 dev]# mdadm --zero-superblock /dev/sdf
    5. [[email protected]7-01 dev]# mdadm --zero-superblock /dev/sdg

以上是关于软raid实现的主要内容,如果未能解决你的问题,请参考以下文章

软raid实现

Raid 介绍以及软raid的实现

关于raid的基本原理软raid的实现演示

linux自学笔记——RAID级别特性以及软RAID的实现

linux--RAID(软)

mdadm 软RAID