AI智能
改变未来

centos7配置RAID和管理

1、什么是RAID
RAID称之为磁盘阵列,主要用于提高存储的可用性,和性能上的改善,同时大大提高磁盘的容错能力,磁盘阵列是由多个物理磁盘组成,但是对于操作系统而言,它就是一个逻辑磁盘,系统上存储的数据会分布在阵列中的多个物理磁盘。
2、RAID的几种级别

级别 说明 最少物理磁盘数 最大容错能力 I/O性能 磁盘容量利用率
RAID 1 1级别又称之为磁盘镜像,同样是需要2块盘,但是磁盘具有了容错能力 需要2个磁盘 允许一块硬盘发生故障 读性能提升,写入性能一般 50%
RAID 5 5级别称之为分布式奇偶校验阵列,以数据的校验位来保证数据的安全,但是数据的校验位不是存放在单独的磁盘,而是交互式的存放在各个阵列中的磁盘,如果阵列中任何一个磁盘出现故障,都可根据其他盘的校验位重建损坏的数据 至少3块磁盘 允许一块硬盘发生故障 读写性能较好 90%
RAID 6 6级别与5级别类似,5级别会将数据的校验信息存放在硬盘上,6级别会比5级别多保存一份校验信息 至少需要4块硬盘 允许两块硬盘发生故障 读写性能较好 80%
RAID 10 称之为高可靠性与高效磁盘结构,兼具了0级别和1级别的优点,此种级别先用两个磁盘建立镜像,然后将镜像后的逻辑磁盘,做0级别 至少需要4块硬盘 允许一块盘发生故障 读写性能好 50%

3、RAID种类

种类 说明
软RAID 利用操作系统提供的软件技术实现RAID功能,优点廉价,几乎没有任何成本,缺点受限操作系统的稳定性,同时占用一定的系统资源
硬RAID 通过硬件RAID控制器实现,优点是不需要占用其他硬件资源,同时提供了高速缓存机制,大大的提升了磁盘的读写性能,同时稳定性也是非常高

4、Linux系统上实现软RAID
模拟平台:VMware workstation
测试环境:centos7计算机一台,添加一块硬盘
使用工具:mdadm
【raid1】实现过程:
1、首先查看磁盘标签类型
如果是MBR可以使用fdisk创建相同大小的磁盘分区
如果是GPT可以使用gdisk创建相同大小的磁盘分区

[root@lab-236 ~]# fdisk -l /dev/sdb磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区Units = 扇区 of 1 * 512 = 512 bytes扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节磁盘标签类型:gpt              #硬盘类型GPTDisk identifier: 037192CD-B94D-4F5D-A559-A90B74EECA9DStart          End    Size  Type            Name

2、创建2个分区,并更改分区系统类型为Linux RAID
因为我们的磁盘标签类型是GPT,所以使用gdisk执行

[root@lab-236 ~]# gdisk /dev/sdbGPT fdisk (gdisk) version 0.8.10Partition table scan:MBR: protectiveBSD: not presentAPM: not presentGPT: presentFound valid GPT with protective MBR; using GPT.Command (? for help): n     #创建新的分区Partition number (1-128, default 1): 1      #分区编号1First sector (34-41943006, default = 2048) or {+-}size{KMGTP}:     #指定起始扇区,默认即可Last sector (2048-41943006, default = 41943006) or {+-}size{KMGTP}: +5G   #指定分区大小Current type is \'Linux filesystem\'Hex code or GUID (L to show codes, Enter = 8300): fd00      #更改分区系统类型为LinuxRAIDChanged type of partition to \'Linux RAID\'Command (? for help): n   #继续创建第二分区Partition number (2-128, default 2): 2     #分区编号2First sector (34-41943006, default = 10487808) or {+-}size{KMGTP}:  #指定起始扇区,默认即可Last sector (10487808-41943006, default = 41943006) or {+-}size{KMGTP}: +5G  #指定分区大小Current type is \'Linux filesystem\'Hex code or GUID (L to show codes, Enter = 8300): fd00   #更改分区系统类型为LinuxRAIDChanged type of partition to \'Linux RAID\'Command (? for help): p     #显示分区信息Disk /dev/sdb: 41943040 sectors, 20.0 GiBLogical sector size: 512 bytesDisk identifier (GUID): 037192CD-B94D-4F5D-A559-A90B74EECA9DPartition table holds up to 128 entriesFirst usable sector is 34, last usable sector is 41943006Partitions will be aligned on 2048-sector boundariesTotal free space is 20971453 sectors (10.0 GiB)Number  Start (sector)    End (sector)  Size       Code  Name1            2048        10487807   5.0 GiB     FD00  Linux RAID2        10487808        20973567   5.0 GiB     FD00  Linux RAIDCommand (? for help): w         #保存分区信息Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTINGPARTITIONS!!Do you want to proceed? (Y/N): Y        #分区发生改变,提示是否继续保存OK; writing new GUID partition table (GPT) to /dev/sdb.The operation has completed successfully.

3、执行mdadm工具创建RAID1
注意创建RAID设备编号要从0开始

[root@lab-236 ~]# mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdb2mdadm: /dev/sdb1 appears to be part of a raid array:level=raid1 devices=2 ctime=Thu Dec 10 20:52:02 2020mdadm: Note: this array has metadata at the start andmay not be suitable as a boot device.  If you plan tostore \'/boot\' on this device please ensure thatyour boot-loader understands md/v1.x metadata, or use--metadata=0.90mdadm: /dev/sdb2 appears to be part of a raid array:level=raid1 devices=2 ctime=Thu Dec 10 20:52:02 2020Continue creating array? Y      #提示创建是否继续,是Ymdadm: Fail to create md0 when using /sys/module/md_mod/parameters/new_array, fallback to creation via nodemdadm: Defaulting to version 1.2 metadatamdadm: array /dev/md0 started.

注意:创建过程,有提示这个阵列不适合作为启动盘的信息,这个是由于超级块类型决定的,超级块的类型可以使用–metadata选项设置,默认是1.2,只有这个值不大于1.0时才可以作为启动盘
4、检查创建的RAID详细信息和运行状态

[root@lab-236 ~]# mdadm --detail /dev/md0       #查看RAID详细信息/dev/md0:Version : 1.2Creation Time : Fri Dec 11 16:46:33 2020Raid Level : raid1Array Size : 5237760 (5.00 GiB 5.36 GB)Used Dev Size : 5237760 (5.00 GiB 5.36 GB)Raid Devices : 2Total Devices : 2Persistence : Superblock is persistentUpdate Time : Fri Dec 11 16:46:59 2020State : cleanActive Devices : 2Working Devices : 2Failed Devices : 0Spare Devices : 0Consistency Policy : resyncName : lab-236.com:0  (local to host lab-236.com)UUID : 52f68880:b4d10435:d271aaa2:261ed9cbEvents : 17Number   Major   Minor   RaidDevice State0       8       17        0      active sync   /dev/sdb11       8       18        1      active sync   /dev/sdb2
[root@lab-236 ~]# cat /proc/mdstat          #查看运行状态Personalities : [raid1]md0 : active raid1 sdb2[1] sdb1[0]5237760 blocks super 1.2 [2/2] [UU]unused devices: <none>

5、创建好RAID分区,接下来就是格式化文件系统,才可以被使用

[root@lab-236 ~]# mkfs.xfs   /dev/md0       #格式化为xfs文件系统meta-data=/dev/md0               isize=512    agcount=4, agsize=327360 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=1        finobt=0, sparse=0data     =                       bsize=4096   blocks=1309440, imaxpct=25=                       sunit=0      swidth=0 blksnaming   =version 2              bsize=4096   ascii-ci=0 ftype=1log      =internal log           bsize=4096   blocks=2560, version=2=                       sectsz=512   sunit=0 blks, lazy-count=1realtime =none                   extsz=4096   blocks=0, rtextents=0

6、挂载RAID分区到指定目录,此处挂载到/mnt

[root@lab-236 ~]# mount /dev/md0 /mnt

通过df命令查看磁盘使用情况

[root@lab-236 ~]# df  -h文件系统                 容量  已用  可用 已用% 挂载点devtmpfs                 471M     0  471M    0% /devtmpfs                    488M  8.1M  480M    2% /runtmpfs                    488M     0  488M    0% /sys/fs/cgroup/dev/mapper/centos-root   17G  4.5G   12G   28% //dev/md0                 5.0G   33M  5.0G    1% /mnt        #可以看到挂载成功

7、模拟磁盘故障,并修复磁盘RAID
首先我们RAID分区挂载的目录创建一个文件

[root@lab-236 ~]# echo \"hello world\" > /mnt/hello.txt

此时我们通过mdadm工具将一个分区(/dev/sdb1)设置为故障分区

[root@lab-236 ~]# mdadm /dev/md0 --fail /dev/sdb1mdadm: set /dev/sdb1 faulty in /dev/md0

然后我们在查看RAID的配置信息

[root@lab-236 ~]# mdadm --detail /dev/md0/dev/md0:Version : 1.2Creation Time : Fri Dec 11 16:46:33 2020Raid Level : raid1Array Size : 5237760 (5.00 GiB 5.36 GB)Used Dev Size : 5237760 (5.00 GiB 5.36 GB)Raid Devices : 2Total Devices : 2Persistence : Superblock is persistentUpdate Time : Fri Dec 11 17:05:32 2020State : clean, degradedActive Devices : 1Working Devices : 1Failed Devices : 1Spare Devices : 0Consistency Policy : resyncName : lab-236.com:0  (local to host lab-236.com)UUID : 52f68880:b4d10435:d271aaa2:261ed9cbEvents : 21Number   Major   Minor   RaidDevice State-       0        0        0      removed1       8       18        1      active sync   /dev/sdb20       8       17        -      faulty   /dev/sdb1     #此时/dev/sdb1状态时有缺陷的

我们可以看到/dev/sdb1的状态提示为faulty,是有缺陷的,存在故障。
查看运行情况

[root@lab-236 ~]# cat  /proc/mdstatPersonalities : [raid1]md0 : active raid1 sdb2[1] sdb1[0](F)5237760 blocks super 1.2 [2/1] [_U]   #发现超级块数量变成[2/1],缺失1个unused devices: <none>

8、此时我们查看挂载目录中文件是否正常

[root@lab-236 ~]# cat  /mnt/hello.txthello world

我们发现文件正常,这就是RAID1的容错能力,一块磁盘出现故障,不影响数据文件的继续使用
9、接下来我们修复RAID
首先我们要将已经有缺陷的磁盘分区移除

[root@lab-236 ~]# mdadm /dev/md0 --remove /dev/sdb1mdadm: hot removed /dev/sdb1 from /dev/md0

然后我们将购买的新磁盘,添加到这个RAID中,如果实际物理环境中,直接将物理磁盘换上,添加即可,这里我们模拟环境。就当/dev/sdb1修复后重新添加回去

[root@lab-236 ~]# mdadm /dev/md0 --add /dev/sdb1mdadm: added /dev/sdb1

此时我们查看RAID信息,可以看到新加入的磁盘正在进行spare rebuilding RAID,这个过程需要时间,时间的长短与空间数据大小有关

[root@lab-236 ~]# mdadm --detail /dev/md0/dev/md0:Version : 1.2Creation Time : Fri Dec 11 16:46:33 2020Raid Level : raid1Array Size : 5237760 (5.00 GiB 5.36 GB)Used Dev Size : 5237760 (5.00 GiB 5.36 GB)Raid Devices : 2Total Devices : 2Persistence : Superblock is persistentUpdate Time : Fri Dec 11 17:24:08 2020State : clean, degraded, recoveringActive Devices : 1Working Devices : 2Failed Devices : 0Spare Devices : 1Consistency Policy : resyncRebuild Status : 57% completeName : lab-236.com:0  (local to host lab-236.com)UUID : 52f68880:b4d10435:d271aaa2:261ed9cbEvents : 41Number   Major   Minor   RaidDevice State2       8       17        0      spare rebuilding   /dev/sdb11       8       18        1      active sync   /dev/sdb2

总结:
1、配置过程如果此前创建过软RAID,需要先将原来RAID设备停止

mdadm  --stop  /dev/md0

如果不停止会出现如下错误:
mdadm: cannot open /dev/sdb1: Device or resource busy
2、如果要重建软RAID,步骤应如下:
1、先卸载目录
2、停止RAID设备
3、移除RAID设备中的磁盘

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » centos7配置RAID和管理