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先对磁盘分区和格式化成linux raid类型

mdadm -C -l -n 创建raid1 镜像卷

mdadm -C -l -n 创建raid0 条带卷

mdadm -D 查看raid10状态

msfs.xfs -f 把raid10文件格式化成xfs格式

mount 挂载到目标目录

修改/etc/fstab 把raid10开机自动挂载到目标目录

 

用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是需要两块磁盘,所以我们把sdb\sbc和sdd\sde分别两两做成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

posted @ 2021-09-24 18:31  Jerry_Chen  阅读(515)  评论(0编辑  收藏  举报