zoukankan      html  css  js  c++  java
  • Linux ->> 添加RAID1+0磁盘阵列

    最近在做搭一个GreenPlum的实验环境,要对机器做RAID1+0。RAID1+0应该是目前用的比较多的磁盘阵列选择。

    RAID1+0的特点:

    1.RAID10 是先将数据进行镜像操作,然后再对数据进行分组,RAID1 在这里就是一个冗余的备份阵列,而RAID0则负责数据的读写阵列

    2.至少要四块盘,两两组合做 RAID1,然后做 RAID0,RAID10 对存储容量的利用率和RAID1一样低,只有 50%

    3.Raid10 方案造成了 50% 的磁盘浪费,但是它提供了 200% 的速度和单磁盘损坏的数据安全性,并且当同时损坏的磁盘不在同一 RAID1 中,就能保证数据安全性,RAID10 能提供比 RAID5 更好的性能

    首先往虚拟机添加4块10G大小的新磁盘,然后重启一下Linux,重启完就可以发现设备添加到/dev/目录下,分别是sdb,sdc,sdd,sde 。

    这里说下,如果不做阵列怎么办?这4个文件进行创建分区,注意这里的分区要选择primary,不能是extended,然后格式化成xfs格式,然后挂载到磁盘目录

    用fdisk先对磁盘创建分区,等于windows里面在磁盘管理器创建什么C盘D盘E盘...

    [root@gpmaster media]# fdisk /dev/sdc
    欢迎使用 fdisk (util-linux 2.23.2)。
    
    更改将停留在内存中,直到您决定将更改写入磁盘。
    使用写入命令前请三思。
    
    
    命令(输入 m 获取帮助):d
    已选择分区 3
    分区 3 已删除
    
    命令(输入 m 获取帮助):n
    Partition type:
       p   primary (0 primary, 0 extended, 4 free)
       e   extended
    Select (default p): p
    分区号 (1-4,默认 1):2
    起始 扇区 (2048-20971519,默认为 2048):
    将使用默认值 2048
    Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):
    将使用默认值 20971519
    分区 2 已设置为 Linux 类型,大小设为 10 GiB
    
    命令(输入 m 获取帮助):w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    正在同步磁盘。

    格式化磁盘分区成XFS文件系统格式,加个 -f 强制格式化

    [root@gpmaster media]# mkfs.xfs -f /dev/sdc2
    meta-data=/dev/sdc2              isize=512    agcount=4, agsize=655296 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=1        finobt=0, sparse=0
    data     =                       bsize=4096   blocks=2621184, imaxpct=25
             =                       sunit=0      swidth=0 blks
    naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
    log      =internal log           bsize=4096   blocks=2560, version=2
             =                       sectsz=512   sunit=0 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0
    [root@gpmaster media]# mkfs.xfs -f /dev/sdd2
    meta-data=/dev/sdd2              isize=512    agcount=4, agsize=655296 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=1        finobt=0, sparse=0
    data     =                       bsize=4096   blocks=2621184, imaxpct=25
             =                       sunit=0      swidth=0 blks
    naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
    log      =internal log           bsize=4096   blocks=2560, version=2
             =                       sectsz=512   sunit=0 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0
    [root@gpmaster media]# mkfs.xfs -f /dev/sde2
    meta-data=/dev/sde2              isize=512    agcount=4, agsize=655296 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=1        finobt=0, sparse=0
    data     =                       bsize=4096   blocks=2621184, imaxpct=25
             =                       sunit=0      swidth=0 blks
    naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
    log      =internal log           bsize=4096   blocks=2560, version=2
             =                       sectsz=512   sunit=0 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0

    把磁盘分区挂载到磁盘目录下

    [root@gpmaster media]# mkdir sdc2
    [root@gpmaster media]# mkdir sdd2
    [root@gpmaster media]# mkdir sde2
    [root@gpmaster media]# ll
    总用量 0
    drwxr-xr-x. 2 root root 6 9月  25 01:25 sdb2
    drwxr-xr-x. 2 root root 6 9月  25 01:27 sdc2
    drwxr-xr-x. 2 root root 6 9月  25 01:27 sdd2
    drwxr-xr-x. 2 root root 6 9月  25 01:27 sde2
    [root@gpmaster media]# mount -a /dev/sdc2 /media/sdc2/
    [root@gpmaster media]# mount -a /dev/sdd2 /media/sdd2/
    [root@gpmaster media]# mount -a /dev/sde2 /media/sde2/

    修改/etc/fstab文件,把磁盘挂载点加入到里面,这样系统重启的时候才会自动挂载

    # /etc/fstab
    # Created by anaconda on Wed Sep  1 22:18:56 2021
    #
    # 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
    #
    /dev/mapper/centos-root /                       xfs     defaults        0 0
    UUID=8ea131e3-5d62-4083-bca8-f7b08744100a /boot                   xfs     defaults        0 0
    /dev/mapper/centos-swap swap                    swap    defaults        0 0
    /dev/sdb2       /media/sdb2     xfs     defaults        0       0
    /dev/sdc2       /media/sdc2     xfs     defaults        0       0       
    /dev/sdd2       /media/sdd2     xfs     defaults        0       0      
    /dev/sde2       /media/sde2     xfs     defaults        0       0     

    上面就是普通新增磁盘挂载到目录的步骤。 

     但是因为我们是要做RAID阵列,同样是先对几块磁盘创建分区,不一样的是,fdisk建分区的时候分区类型选择 fd (也就是Linux Raid)

    [root@gpmaster ~]# fdisk /dev/sdb
    欢迎使用 fdisk (util-linux 2.23.2)。

    更改将停留在内存中,直到您决定将更改写入磁盘。
    使用写入命令前请三思。


    命令(输入 m 获取帮助):n
    Partition type:
    p primary (0 primary, 0 extended, 4 free)
    e extended
    Select (default p): p
    分区号 (1-4,默认 1):2^H^H^H
    分区号 (1-4,默认 1):2
    起始 扇区 (2048-20971519,默认为 2048):
    将使用默认值 2048
    Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):
    将使用默认值 20971519
    分区 2 已设置为 Linux 类型,大小设为 10 GiB

    命令(输入 m 获取帮助):t
    已选择分区 2
    Hex 代码(输入 L 列出所有代码):fd
    已将分区“Linux”的类型更改为“Linux raid autodetect”

    命令(输入 m 获取帮助):w
    The partition table has been altered!

    Calling ioctl() to re-read partition table.
    正在同步磁盘。
    [root@gpmaster ~]# fdisk /dev/sdc
    欢迎使用 fdisk (util-linux 2.23.2)。

    更改将停留在内存中,直到您决定将更改写入磁盘。
    使用写入命令前请三思。


    命令(输入 m 获取帮助):n
    Partition type:
    p primary (0 primary, 0 extended, 4 free)
    e extended
    Select (default p): p
    分区号 (1-4,默认 1):2
    起始 扇区 (2048-20971519,默认为 2048):
    将使用默认值 2048
    Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):
    将使用默认值 20971519
    分区 2 已设置为 Linux 类型,大小设为 10 GiB

    命令(输入 m 获取帮助):t
    已选择分区 2
    Hex 代码(输入 L 列出所有代码):fd
    已将分区“Linux”的类型更改为“Linux raid autodetect”

    命令(输入 m 获取帮助):w
    The partition table has been altered!

    Calling ioctl() to re-read partition table.
    正在同步磁盘。
    [root@gpmaster ~]# fdisk /dev/sdd
    欢迎使用 fdisk (util-linux 2.23.2)。

    更改将停留在内存中,直到您决定将更改写入磁盘。
    使用写入命令前请三思。


    命令(输入 m 获取帮助):n
    Partition type:
    p primary (0 primary, 0 extended, 4 free)
    e extended
    Select (default p): p
    分区号 (1-4,默认 1):2
    起始 扇区 (2048-20971519,默认为 2048):
    将使用默认值 2048
    Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):
    将使用默认值 20971519
    分区 2 已设置为 Linux 类型,大小设为 10 GiB

    命令(输入 m 获取帮助):t
    已选择分区 2
    Hex 代码(输入 L 列出所有代码):fd
    已将分区“Linux”的类型更改为“Linux raid autodetect”

    命令(输入 m 获取帮助):dw^H^H^[[2~^H^H^Hw
    已选择分区 2
    分区 2 已删除

    命令(输入 m 获取帮助):d
    No partition is defined yet!

    命令(输入 m 获取帮助):n
    Partition type:
    p primary (0 primary, 0 extended, 4 free)
    e extended
    Select (default p): p
    分区号 (1-4,默认 1):2
    起始 扇区 (2048-20971519,默认为 2048):
    将使用默认值 2048
    Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):
    将使用默认值 20971519
    分区 2 已设置为 Linux 类型,大小设为 10 GiB

    命令(输入 m 获取帮助):t
    已选择分区 2
    Hex 代码(输入 L 列出所有代码):fd
    已将分区“Linux”的类型更改为“Linux raid autodetect”

    命令(输入 m 获取帮助):w
    The partition table has been altered!

    Calling ioctl() to re-read partition table.
    正在同步磁盘。
    [root@gpmaster ~]# fdisk /dev/sde
    欢迎使用 fdisk (util-linux 2.23.2)。

    更改将停留在内存中,直到您决定将更改写入磁盘。
    使用写入命令前请三思。


    命令(输入 m 获取帮助):n
    Partition type:
    p primary (0 primary, 0 extended, 4 free)
    e extended
    Select (default p): p
    分区号 (1-4,默认 1):2
    起始 扇区 (2048-20971519,默认为 2048):
    将使用默认值 2048
    Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):
    将使用默认值 20971519
    分区 2 已设置为 Linux 类型,大小设为 10 GiB

    命令(输入 m 获取帮助):t
    已选择分区 2
    Hex 代码(输入 L 列出所有代码):fd
    已将分区“Linux”的类型更改为“Linux raid autodetect”

    命令(输入 m 获取帮助):w
    The partition table has been altered!

    Calling ioctl() to re-read partition table.
    正在同步磁盘。

    创建完分区,执行fdisk -l可以看到分区,确保分区类型是linux raid autodetect

    [root@gpmaster ~]# fdisk -l
    
    磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0x000097e3
    
       设备 Boot      Start         End      Blocks   Id  System
    /dev/sda1   *        2048     2099199     1048576   83  Linux
    /dev/sda2         2099200    41943039    19921920   8e  Linux LVM
    
    磁盘 /dev/sdc:10.7 GB, 10737418240 字节,20971520 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0xb336a287
    
       设备 Boot      Start         End      Blocks   Id  System
    /dev/sdc2            2048    20971519    10484736   fd  Linux raid autodetect
    
    磁盘 /dev/sdd:10.7 GB, 10737418240 字节,20971520 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0x1b60683a
    
       设备 Boot      Start         End      Blocks   Id  System
    /dev/sdd2            2048    20971519    10484736   fd  Linux raid autodetect
    
    磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0x8e14e588
    
       设备 Boot      Start         End      Blocks   Id  System
    /dev/sdb2            2048    20971519    10484736   fd  Linux raid autodetect
    
    磁盘 /dev/sde:10.7 GB, 10737418240 字节,20971520 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0xd9e68f8c
    
       设备 Boot      Start         End      Blocks   Id  System
    /dev/sde2            2048    20971519    10484736   fd  Linux raid autodetect
    
    磁盘 /dev/mapper/centos-root:18.2 GB, 18249416704 字节,35643392 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    
    
    磁盘 /dev/mapper/centos-swap:2147 MB, 2147483648 字节,4194304 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节

    因为是RAID1+0, 所以要先对sdb、sdc创建镜像,也就是RAID1

    [root@gpmaster ~]# mdadm -Cv /dev/md1 -l1 -n2 /dev/sd[b-c]2
    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
    mdadm: size set to 10475520K
    Continue creating array? y
    mdadm: Defaulting to version 1.2 metadata
    mdadm: array /dev/md1 started.

     注意RAID1是需要两块磁盘,所以我们把sdbsbc和sddsde分别两两做成RAID1

    [root@gpmaster ~]# mdadm -Cv /dev/md2 -l1 -n2 /dev/sd[d-e]2
    mdadm: /dev/sdd2 appears to be part of a raid array:
    level=raid0 devices=2 ctime=Sat Sep 25 02:20:22 2021
    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
    mdadm: /dev/sde2 appears to be part of a raid array:
    level=raid0 devices=2 ctime=Sat Sep 25 02:20:22 2021
    mdadm: size set to 10475520K
    Continue creating array? y
    mdadm: Defaulting to version 1.2 metadata
    mdadm: array /dev/md2 started.

    创建完镜像,再mdadm命令创建条带,也就是RAID0,RAID0也是需要两块磁盘,那就是前面做成两块RAID1做一个RAID0

    [root@gpmaster ~]# mdadm -Cv /dev/md10 -l0 -n2 /dev/md1 /dev/md2
    mdadm: chunk size defaults to 512K
    mdadm: /dev/md1 appears to be part of a raid array:
           level=raid0 devices=2 ctime=Sat Sep 25 02:09:02 2021
    mdadm: /dev/md2 appears to be part of a raid array:
           level=raid0 devices=2 ctime=Sat Sep 25 02:09:02 2021
    Continue creating array? y
    mdadm: Defaulting to version 1.2 metadata
    mdadm: array /dev/md10 started.
    [root@gpmaster ~]# 

    可以查看下磁盘情况

    [root@gpmaster ~]# mdadm -D /dev/md10
    /dev/md10:
               Version : 1.2
         Creation Time : Sat Sep 25 02:27:17 2021
            Raid Level : raid0
            Array Size : 20932608 (19.96 GiB 21.43 GB)
          Raid Devices : 2
         Total Devices : 2
           Persistence : Superblock is persistent
    
           Update Time : Sat Sep 25 02:27:17 2021
                 State : clean 
        Active Devices : 2
       Working Devices : 2
        Failed Devices : 0
         Spare Devices : 0
    
            Chunk Size : 512K
    
    Consistency Policy : none
    
                  Name : gpmaster:10  (local to host gpmaster)
                  UUID : e3babfeb:5f5f0188:48508466:ee39fdfa
                Events : 0
    
        Number   Major   Minor   RaidDevice State
           0       9        1        0      active sync   /dev/md1
           1       9        2        1      active sync   /dev/md2
    [root@gpmaster ~]# 

    然后格式化RAID10成xfs文件系统格式,然后把RAID1+0挂到目录下就成了

    [root@gpslave1 md10]# mkfs.xfs -f /dev/md10
    meta-data=/dev/md10 isize=512 agcount=16, agsize=327040 blks
    = sectsz=512 attr=2, projid32bit=1
    = crc=1 finobt=0, sparse=0
    data = bsize=4096 blocks=5232640, imaxpct=25
    = sunit=128 swidth=256 blks
    naming =version 2 bsize=4096 ascii-ci=0 ftype=1
    log =internal log bsize=4096 blocks=2560, version=2
    = sectsz=512 sunit=8 blks, lazy-count=1
    realtime =none extsz=4096 blocks=0, rtextents=0

    [root@gpmaster ~]# mount /dev/md10 /media/md10
    [root@gpmaster ~]# df -h
    文件系统                 容量  已用  可用 已用% 挂载点
    devtmpfs                 899M     0  899M    0% /dev
    tmpfs                    910M     0  910M    0% /dev/shm
    tmpfs                    910M  9.6M  901M    2% /run
    tmpfs                    910M     0  910M    0% /sys/fs/cgroup
    /dev/mapper/centos-root   17G  2.1G   15G   13% /
    /dev/sda1               1014M  195M  820M   20% /boot
    vmhgfs-fuse              922G   29G  894G    4% /mnt/hgfs
    tmpfs                    182M     0  182M    0% /run/user/0
    /dev/md10                 20G   33M   20G    1% /media/md10
    [root@gpmaster ~]# 

    最后一步修改/etc/fstab,开机自动挂载

    [root@gpmaster md10]# vim /etc/fstab
    [root@gpmaster md10]# cat /etc/fstab 
    
    #
    # /etc/fstab
    # Created by anaconda on Wed Sep  1 22:18:56 2021
    #
    # 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
    #
    /dev/mapper/centos-root /                       xfs     defaults        0 0
    UUID=8ea131e3-5d62-4083-bca8-f7b08744100a /boot                   xfs     defaults        0 0
    /dev/mapper/centos-swap swap                    swap    defaults        0 0    
    /dev/md/gpmaster:10    /media/md10    xfs    defaults    0    0

    修改/etc/fstab这里有个坑,可以看另外一篇博文找到mdadm命令处(Linux磁盘阵列命令mdadm

    万一你发现前面的步骤搞错了,raid1搞错成raid0,怎么回退回去。可以用mdadm -S /dev/md0删除阵列,通过一步步回退,再重新来,过程注意用fdisk -l检查下生成的磁盘文件

    参考:

    https://www.cnblogs.com/itwangqiang/p/14168141.html

    https://www.cnblogs.com/silent2012/p/4586273.html

    https://www.linuxidc.com/Linux/2019-08/160371.htm

  • 相关阅读:
    linux 安装 tomcat
    IE条件注释
    了解常见的开源协议(BSD, GPL, LGPL,MIT)
    Ueditor 1.4.3 单独调用上传图片,或文件功能
    javascript代码规范 [转]
    html5 拖曳功能的实现[转]
    几种常用的正则表达式[转]
    MYSQL基础03(日期函数)
    MYSQL基础02(查询)
    OpenCV(7)-图像直方图
  • 原文地址:https://www.cnblogs.com/jenrrychen/p/15331488.html
Copyright © 2011-2022 走看看