zoukankan      html  css  js  c++  java
  • RAID 1 软件实现(Linux 系统)

    实现raid有2种方式:

    软件 RAID 的性能较低,因为其使用主机的资源。 需要加载 RAID 软件以从软件 RAID 卷中读取数据。在加载 RAID 软件前,操作系统需要引导起来才能加载 RAID 软件。在软件 RAID 中无需物理硬件。零成本投资。

    硬件 RAID 的性能较高。他们采用 PCI Express 卡物理地提供有专用的 RAID 控制器。它不会使用主机资源。他们有 NVRAM 用于缓存的读取和写入。缓存用于 RAID 重建时,即使出现电源故障,它会使用后备的电池电源保持缓存。对于大规模使用是非常昂贵的投资。

    RAID有不同的级别。在这里,我们仅列出在真实环境下的使用最多的 RAID 级别。

      • RAID0 = 条带化
      • RAID1 = 镜像
      • RAID5 = 单磁盘分布式奇偶校验
      • RAID6 = 双磁盘分布式奇偶校验
      • RAID10 = 镜像 + 条带。(嵌套RAID)

    e850352ac65c103887cd779ab3119313b07e8933

    RAID 1称为磁盘镜像,原理是把一个磁盘的数据镜像到另一个磁盘上,也就是说数据在写入一块磁盘的同时,会在另一块闲置的磁盘上生成镜像文件,在不影响性能情况下最大限度的保证系统的可靠性和可修复性上,只要系统中任何一对镜像盘中至少有一块磁盘可以使用,甚至可以在一半数量的硬盘出现问题时系统都可以正常运行,当一块硬盘失效时,系统会忽略该硬盘,转而使用剩余的镜像盘读写数据,具备很好的磁盘冗余能力。虽然这样对数据来讲绝对安全,但是成本也会明显增加,磁盘利用率为50%,以四块80GB容量的硬盘来讲,可利用的磁盘空间仅为160GB。另外,出现硬盘故障的RAID系统不再可靠,应当及时的更换损坏的硬盘,否则剩余的镜像盘也出现问题,那么整个系统就会崩溃。更换新盘后原有数据会需要很长时间同步镜像,外界对数据的访问不会受到影响,只是这时整个系统的性能有所下降。因此,RAID 1多用在保存关键性的重要数据的场合。

    RAID 1主要是通过二次读写实现磁盘镜像,所以磁盘控制器的负载也相当大,尤其是在需要频繁写入数据的环境中。为了避免出现性能瓶颈,使用多个磁盘控制器就显得很有必要。

    RAID 1 :磁盘利用率为50%,二次读写实现磁盘镜像。

    1、准备工作

    安装系统后,主板上连接2块硬盘,这里我用虚拟机做实验。

    试验系统:Centos 8.1.1911

    2、创建逻辑卷RAID 1

    查看逻辑卷及分区

    [root@study ~]# lsblk
    NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda           8:0    0   20G  0 disk
    ├─sda1        8:1    0    1G  0 part /boot
    └─sda2        8:2    0   19G  0 part
      ├─cl-root 253:0    0   17G  0 lvm  /
      └─cl-swap 253:1    0    2G  0 lvm  [SWAP]
    sdb           8:16   0    1G  0 disk
    sdc           8:32   0    1G  0 disk
    sr0          11:0    1 1024M  0 rom
    [root@study ~]#

    我们使用sdb 和 sdc 简历逻辑卷RAID1

    [root@study ~]# mdadm -C /dev/md0 -l raid1 -n 2 /dev/sdb /dev/sdc
    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?
    Continue creating array? (y/n) y
    mdadm: Defaulting to version 1.2 metadata
    mdadm: array /dev/md0 started.
    [root@study ~]#

    查看状态

    [root@study ~]# mdadm --detail /dev/md0
    /dev/md0:
               Version : 1.2
         Creation Time : Tue Jun  9 07:24:46 2020
            Raid Level : raid1
            Array Size : 1046528 (1022.00 MiB 1071.64 MB)
         Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
          Raid Devices : 2
         Total Devices : 2
           Persistence : Superblock is persistent
    
           Update Time : Tue Jun  9 07:24:52 2020
                 State : clean
        Active Devices : 2
       Working Devices : 2
        Failed Devices : 0
         Spare Devices : 0
    
    Consistency Policy : resync
    
                  Name : study.server.com:0  (local to host study.server.com)
                  UUID : 77aeebdc:4a82397f:0a1ab9ad:dadf083c
                Events : 17
    
        Number   Major   Minor   RaidDevice State
           0       8       16        0      active sync   /dev/sdb
           1       8       32        1      active sync   /dev/sdc
    [root@study ~]#

    格式化分区并挂载使用

    [root@study ~]# mkfs.ext4 /dev/md0
    mke2fs 1.44.6 (5-Mar-2019)
    创建含有 261632 个块(每块 4k)和 65408 个inode的文件系统
    文件系统UUID:07d1f71a-95dd-4985-b018-e205de9b9772
    超级块的备份存储于下列块:
    	32768, 98304, 163840, 229376
    
    正在分配组表: 完成
    正在写入inode表: 完成
    创建日志(4096 个块)完成
    写入超级块和文件系统账户统计信息: 已完成
    
    [root@study ~]# mkdir /mnt/raid1
    [root@study ~]# mount /dev/md0 /mnt/raid1/
    [root@study ~]# echo "this is linux raid1" > /mnt/raid1/readme.txt
    [root@study ~]# ll /mnt/raid1/readme.txt
    -rw-r--r--. 1 root root 20 6月   9 07:27 /mnt/raid1/readme.txt
    [root@study ~]# cat /mnt/raid1/readme.txt
    this is linux raid1
    [root@study ~]#

    配置自动挂载

    [root@study ~]# umount /mnt/raid1
    [root@study ~]# blkid /dev/md0
    /dev/md0: UUID="07d1f71a-95dd-4985-b018-e205de9b9772" TYPE="ext4"
    [root@study ~]# vim /etc/fstab
    [root@study ~]# cat /etc/fstab
    
    #
    # /etc/fstab
    # Created by anaconda on Thu May 28 03:40:23 2020
    #
    # 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.
    #
    # After editing this file, run 'systemctl daemon-reload' to update systemd
    # units generated from this file.
    #
    /dev/mapper/cl-root     /                       xfs     defaults        0 0
    UUID=9df293e1-6753-4be2-9733-dad673e61f4a /boot                   ext4    defaults        1 2
    /dev/mapper/cl-swap     swap                    swap    defaults        0 0
    UUID="07d1f71a-95dd-4985-b018-e205de9b9772" /mnt/raid1 ext4 defaults 0 0
    [root@study ~]# mount -a
    [root@study ~]# df -h
    文件系统             容量  已用  可用 已用% 挂载点
    devtmpfs             885M     0  885M    0% /dev
    tmpfs                903M     0  903M    0% /dev/shm
    tmpfs                903M  9.4M  894M    2% /run
    tmpfs                903M     0  903M    0% /sys/fs/cgroup
    /dev/mapper/cl-root   17G  4.3G   13G   26% /
    /dev/sda1            976M  143M  766M   16% /boot
    tmpfs                181M  1.2M  180M    1% /run/user/42
    tmpfs                181M  4.0K  181M    1% /run/user/0
    /dev/md0             990M  2.6M  921M    1% /mnt/raid1
    [root@study ~]#

    3、模拟raid磁盘故障

    移除磁盘sdc。

    移除后,partprobe刷新下分区。

    [root@study ~]# mdadm --detail /dev/md0
    /dev/md0:
               Version : 1.2
         Creation Time : Tue Jun  9 07:24:46 2020
            Raid Level : raid1
            Array Size : 1046528 (1022.00 MiB 1071.64 MB)
         Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
          Raid Devices : 2
         Total Devices : 2
           Persistence : Superblock is persistent
    
           Update Time : Tue Jun  9 07:30:15 2020
                 State : clean
        Active Devices : 2
       Working Devices : 2
        Failed Devices : 0
         Spare Devices : 0
    
    Consistency Policy : resync
    
                  Name : study.server.com:0  (local to host study.server.com)
                  UUID : 77aeebdc:4a82397f:0a1ab9ad:dadf083c
                Events : 17
    
        Number   Major   Minor   RaidDevice State
           0       8       16        0      active sync   /dev/sdb
           1       8       32        1      active sync   /dev/sdc
    [root@study ~]# partprobe /dev/md0
    [root@study ~]# lsblk
    NAME        MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
    sda           8:0    0   20G  0 disk
    ├─sda1        8:1    0    1G  0 part  /boot
    └─sda2        8:2    0   19G  0 part
      ├─cl-root 253:0    0   17G  0 lvm   /
      └─cl-swap 253:1    0    2G  0 lvm   [SWAP]
    sdb           8:16   0    1G  0 disk
    └─md0         9:0    0 1022M  0 raid1 /mnt/raid1
    sr0          11:0    1 1024M  0 rom

    查看raid1状态数据

    发现数据依然存在,没有影响到数据。

    [root@study ~]# mdadm --detail /dev/md0
    /dev/md0:
               Version : 1.2
         Creation Time : Tue Jun  9 07:24:46 2020
            Raid Level : raid1
            Array Size : 1046528 (1022.00 MiB 1071.64 MB)
         Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
          Raid Devices : 2
         Total Devices : 2
           Persistence : Superblock is persistent
    
           Update Time : Tue Jun  9 07:35:17 2020
                 State : clean, degraded
        Active Devices : 1
       Working Devices : 1
        Failed Devices : 1
         Spare Devices : 0
    
    Consistency Policy : resync
    
                  Name : study.server.com:0  (local to host study.server.com)
                  UUID : 77aeebdc:4a82397f:0a1ab9ad:dadf083c
                Events : 20
    
        Number   Major   Minor   RaidDevice State
           0       8       16        0      active sync   /dev/sdb
           -       0        0        1      removed
    
           1       8       32        -      faulty   /dev/sdc
    [root@study ~]# ll /mnt/raid1/
    总用量 20
    drwx------. 2 root root 16384 6月   9 07:26 lost+found
    -rw-r--r--. 1 root root    20 6月   9 07:27 readme.txt
    [root@study ~]# cat /mnt/raid1/readme.txt
    this is linux raid1
    [root@study ~]#

    修复RAID1

    移除故障磁盘,插入新磁盘,然后重启服务器。

    [root@study ~]# lsblk
    NAME        MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
    sda           8:0    0   20G  0 disk
    ├─sda1        8:1    0    1G  0 part  /boot
    └─sda2        8:2    0   19G  0 part
      ├─cl-root 253:0    0   17G  0 lvm   /
      └─cl-swap 253:1    0    2G  0 lvm   [SWAP]
    sdb           8:16   0    1G  0 disk
    └─md0         9:0    0 1022M  0 raid1 /mnt/raid1
    sdc           8:32   0    1G  0 disk
    sr0          11:0    1 1024M  0 rom
    [root@study ~]# df -h
    文件系统             容量  已用  可用 已用% 挂载点
    devtmpfs             886M     0  886M    0% /dev
    tmpfs                904M     0  904M    0% /dev/shm
    tmpfs                904M  9.4M  894M    2% /run
    tmpfs                904M     0  904M    0% /sys/fs/cgroup
    /dev/mapper/cl-root   17G  4.4G   13G   26% /
    /dev/sda1            976M  143M  766M   16% /boot
    tmpfs                181M  1.2M  180M    1% /run/user/42
    tmpfs                181M  4.0K  181M    1% /run/user/0
    /dev/md0             990M  2.6M  921M    1% /mnt/raid1
    [root@study ~]# umount /mnt/raid1
    [root@study ~]# mdadm --manage /dev/md0 --add /dev/sdc
    mdadm: added /dev/sdc
    [root@study ~]# lsblk
    NAME        MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
    sda           8:0    0   20G  0 disk
    ├─sda1        8:1    0    1G  0 part  /boot
    └─sda2        8:2    0   19G  0 part
      ├─cl-root 253:0    0   17G  0 lvm   /
      └─cl-swap 253:1    0    2G  0 lvm   [SWAP]
    sdb           8:16   0    1G  0 disk
    └─md0         9:0    0 1022M  0 raid1
    sdc           8:32   0    1G  0 disk
    └─md0         9:0    0 1022M  0 raid1
    sr0          11:0    1 1024M  0 rom

    查看数据

    [root@study ~]# mdadm --detail /dev/md0
    /dev/md0:
               Version : 1.2
         Creation Time : Tue Jun  9 07:24:46 2020
            Raid Level : raid1
            Array Size : 1046528 (1022.00 MiB 1071.64 MB)
         Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
          Raid Devices : 2
         Total Devices : 2
           Persistence : Superblock is persistent
    
           Update Time : Tue Jun  9 21:11:45 2020
                 State : clean
        Active Devices : 2
       Working Devices : 2
        Failed Devices : 0
         Spare Devices : 0
    
    Consistency Policy : resync
    
                  Name : study.server.com:0  (local to host study.server.com)
                  UUID : 77aeebdc:4a82397f:0a1ab9ad:dadf083c
                Events : 53
    
        Number   Major   Minor   RaidDevice State
           0       8       16        0      active sync   /dev/sdb
           2       8       32        1      active sync   /dev/sdc
    [root@study ~]# mount -a
    [root@study ~]# df -h
    文件系统             容量  已用  可用 已用% 挂载点
    devtmpfs             886M     0  886M    0% /dev
    tmpfs                904M     0  904M    0% /dev/shm
    tmpfs                904M  9.4M  894M    2% /run
    tmpfs                904M     0  904M    0% /sys/fs/cgroup
    /dev/mapper/cl-root   17G  4.4G   13G   26% /
    /dev/sda1            976M  143M  766M   16% /boot
    tmpfs                181M  1.2M  180M    1% /run/user/42
    tmpfs                181M  4.0K  181M    1% /run/user/0
    /dev/md0             990M  2.6M  921M    1% /mnt/raid1
    [root@study ~]# ll /mnt/raid1/
    总用量 20
    drwx------. 2 root root 16384 6月   9 07:26 lost+found
    -rw-r--r--. 1 root root    20 6月   9 07:27 readme.txt
    [root@study ~]# cat /mnt/raid1/readme.txt
    this is linux raid1
    [root@study ~]#


    读书和健身总有一个在路上

  • 相关阅读:
    【原】一张图片优化5K的带宽成本
    让手机站点像原生应用的四大途径
    iScroll4下表单元素聚焦及键盘的异常问题
    蜕变·WebRebuild 2013 前端年度交流会邀请
    【原】js实现复制到剪贴板功能,兼容所有浏览器
    【原】css实现两端对齐的3种方法
    【原】常见CSS3属性对ios&android&winphone的支持
    一枚前端开发-页面重构方向的招聘信息
    【原】分享超实用工具给大家
    【原】webapp开发中兼容Android4.0以下版本的css hack
  • 原文地址:https://www.cnblogs.com/Renqy/p/13083241.html
Copyright © 2011-2022 走看看