zoukankan      html  css  js  c++  java
  • 软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. [root@joker-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. [root@joker-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. [root@joker-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. [root@joker-7-01 ~]# mount /dev/md0 /mnt
    2. [root@joker-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. [root@joker-7-01 ~]# mdadm -f /dev/md0 /dev/sdd #-f 表示标记磁盘为损坏
    2. mdadm: set /dev/sdd faulty in /dev/md0
    3. [root@joker-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. [root@joker-7-01 dev]# mdadm --zero-superblock /dev/sdc
      2. [root@joker-7-01 dev]# mdadm --zero-superblock /dev/sdd
      3. [root@joker-7-01 dev]# mdadm --zero-superblock /dev/sde
      4. [root@joker-7-01 dev]# mdadm --zero-superblock /dev/sdf
      5. [root@joker-7-01 dev]# mdadm --zero-superblock /dev/sdg
  • 相关阅读:
    L3-013. 非常弹的球
    L2-020. 功夫传人
    L1-039. 古风排版
    Innobackup备份过程
    MySQL物理备份的过程
    数据库表设计
    MySQL启动排错
    redo的类型和作用
    描述undo的三个作用
    redo log和binlog的纠缠
  • 原文地址:https://www.cnblogs.com/momenglin/p/8485717.html
Copyright © 2011-2022 走看看