重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
2021-11-03
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名申请、虚拟主机、营销软件、网站建设、延边朝鲜族网站维护、网站推广。
主机:192.168.20.63
总磁盘:50G
磁盘树形结构:lsblk
目标 :把sda、sdb、sdc、sdd、sde、sdf这六块盘合起来做成raid5
1.对每块盘进行分区
其他的sdb、sdc、sdd、sde、sdf盘一次做以上的操作
fdisk -l | grep fd #查看磁盘raid情况
软raid设置成功,如下
注意: 若磁盘标签类型为gpt,在做软raid时可能会失败,可将GPT转成MBR再做raid5
删除raid5
这篇文章介绍几种常用的磁盘阵列技术(Raid0、Raid1、Raid4、Raid5、Raid10、Raid01),演示如何在CentOS7环境下使用mdadm命令去创建和维护磁盘阵列;RAID又称“廉价磁盘冗余阵列”,可以使用硬件和软件两种方式来实现,硬件RAID可以参考购买硬件时附带的参考手册,设置方法与软件RAID有差异;现如今软件RAID大多用作研究和熟悉RAID的工作方式。
Raid有"廉价磁盘冗余阵列"的意思,就是利用多块廉价的硬盘组成磁盘组,让数据分部储存在这些硬盘里面,从而达到读取和写入加速的目的;也可以用作数据的冗余,当某块硬盘损毁后,其他硬盘可以通过冗余数据计算出损坏磁盘的数据,这样就提高了数据储存的安全性。
Raid0数据储存方法如下(假设有两块硬盘D1、D2):
特点:数据被并行写入每个磁盘,每个磁盘都保存了完整数据的一部分,读取也采用并行方式,磁盘数量越多,读取和写入速度越快。因为没有冗余,一个硬盘坏掉全部数据丢失。至少两块硬盘才能组成Raid0阵列。
容量:所有硬盘之和。
Raid1数据储存方法如下(假设有两块硬盘D1、D2):
特点:有数据冗余,可靠性强,D1、D2被写入相同的数据,其中D2可以作为D1的完整备份。读取时,从两块硬盘上并行读取,写入慢,读取快。任何一块硬盘坏掉不会丢失数据,至少两块硬盘并且两块硬盘大小相等才能组成Raid1阵列。
容量:所有硬盘容量之和的一半(一半写数据,一半用来做备份)。
Raid4数据储存方法如下(假设有三块硬盘D1、D2、D3):
特点:有数据冗余校验,可靠性强。其中任何一块硬盘坏掉都不会引起数据丢失,D1丢失时,D3根据校验和以及D2的数据进行逆运算,计算出D1的数据。但当写入大量数据时校验盘D3会是一个数据瓶颈,导致写入慢。只有当两块磁盘同时丢失时,数据才无法恢复。至少三块硬盘并且磁盘大小应该相等才能组成Raid4阵列(不常用)。
容量:所有硬盘容量之和减去其中一块硬盘的容量。
Raid5数据储存方法如下(假设有三块硬盘D1、D2、D3):
特点:采用奇偶校验,可靠性强,磁盘校验和被散列到不同的磁盘里面,增加了读写速率。只有当两块磁盘同时丢失时,数据才无法恢复,至少三块硬盘并且硬盘大小应该相等才能组成Raid5阵列。
容量:所有硬盘容量之和减去其中一块硬盘的容量,被减去的容量被分配到三块硬盘的不同区域用来存放数据校验信息。
Raid10(Raid1+Raid0)是现在比较常用的一种磁盘阵列级别,它的容错好,读写数据效率较高,但经费相对也较高。
Raid10数据储存方法如下(假设有四块硬盘D1、D2、D3、D4):
特点:备份和并发式存取数据,可靠性强。D1、D2组成一个阵列Raid1,其中D1是数据盘,D2是备份盘;D3、D4也组成一个Raid1,其中D3是数据盘,D4是备份盘;在这个基础上将D1、D2作为一个整体,将D3、D4也作为一个整体,这两个整体之间再组成一个Raid0阵列。这样不仅仅读取数据会非常快,并发写入的速度也会随着磁盘的增多而变快。至少四块硬盘并且每块硬盘大小应该相等才能组成Raid10阵列。
容量:所有硬盘容量之和的一半(一半写数据,一半用来备份数据)。
Raid01数据储存方法如下(假设有四块硬盘D1、D2、D3、D4):
特点:D1、D2组成一个阵列Raid0,D3、D4也组成一个阵列Raid0,D1、D2和D3、D4再组成一个Raid1。D1和D2作为数据盘阵列,D3和D4作为数据备份阵列,这种方式并不常用,至少四块硬盘并且每块硬盘大小应该相等才能组成Raid01阵列。
容量:所有硬盘容量之和的一半。
这一部分通过Linux上的mdadm命令来实现Raid10磁盘阵列。
实验环境为一台安装了5块硬盘的计算机,操作系统是CentOS7,除系统所在硬盘(/dev/sda)外,其余四块20G的硬盘盘符分别为(/dev/sdb、/dev/sdc、/dev/sdd、/dev/sde);
主要用到的命令:mdadm;
CentOS7中mdadm默认已安装,如果没有安装,可以使用yum在线安装,如下:
到这里,实验的准备工作完成。
新创建的磁盘阵列默认是不能开机自启动的,需要手动创建一个配置文件,让系统在启动的时候自动启动Raid(经过测试,CentOS7并不需要创建这个配置文件,如果重启后磁盘阵列没有随机启动,请使用下面的方法配置一次):
可以在创建RAID的时候指定有几块冗余磁盘,当工作磁盘出现故障的时候,冗余磁盘自动启动,顶替出现故障的磁盘继续工作,请看下面的实例:
下面手动将一块磁盘标记为故障,看看冗余盘是否起作用:
假如/dev/sdc经过测试后发现没有问题,想要重新加入md0使用,可以在系统重启后,使用"mdadm /dev/md0 -a /dev/sdc"命令将它重新(添加)启用。
如果以后,想要加入一块新硬盘到这个raid10里作为备份盘,这块新硬盘需要和其他硬盘(或分区)保持相同的大小,然后使用下面的命令添加:
要想彻底清除RAID以及数据,请使用下面的方法:
当我们使用服务器对磁盘进行了Raid处理之后,再创建虚拟磁盘,那么上层操作系统上可见的磁盘就是一整块,也方便我们管理和使用。
在安装完Linux操作系统后,通过lsblk命令查看当前磁盘的结构。
从上面的磁盘结构可以看出,一共有三块磁盘,分别为sda/sdb/sdc,不是呈现一块磁盘吗?怎么又出现了三块?这里由于第一块磁盘为SSD硬盘,且只有500G,因此我没有将其划分到Raid中,只将两块机械硬盘做了Raid 0(由于是一个工作站,并没有做数据保护)。
从sdb和sdc中可以发现,下方均单独创建了一个分区"md126",通过以下命令来查看分区的细节。
从图片中的Raid Level可以看出,是Raid 0,并且是由/dev/sda和/dev/sdb组成。
跟普通磁盘一样,在使用前需要对其进行格式化,这里将其格式化为xfs。
格式化之后,创建一个目录用于挂载点,我这里在根目录下创建一个文件夹raid_backup,用于文件备份。可根据自己情况对应修改文件夹名。
执行以下命令挂载,如果没有任何回显则成功。
查看一下挂载情况,发现已经正常的挂载上了,并且读写也没有问题。
为了使得磁盘在开机后能自动的挂载上,需要修改一下fstab文件。我们先取消之前的挂载(取消挂载时请不要在此目录,否则会报错):
编辑/etc/fstab文件:
在最后一行加上挂载的相关信息,根据自己的目录和文件系统对应修改,完成之后保存退出。
验证挂载:
如果没有意外,将会再次挂载上,以后就会开机自启挂载磁盘了。
应用场景
Raid大家都知道是冗余磁盘的意思(Redundant Arrays of Independent Disks,RAID),可以按业务系统的需要提供高可用性和冗余性,目前市面上比较常见的是通过服务器的raid阵列卡来实现此功能。
通过硬件阵列卡实现raid具有可靠性高,性能好等特点,但是对于一般的企业而言硬件阵列卡固然好,如果大规模应用的话动辄几千上万的费用也不是他们所能承受的,难道就没有既能保证数据安全,又能减少费用支持的IT方案吗?当然有,软raid就可以实现这一需求。
实现步骤
软raid比较依赖操作系统,所以他的劣势也显而易见,需要占用系统资源(主要是CPU资源)。目前在Linux和windows下软raid都比较常见了,Linux是通过mdadm实现的,windows下则在win2003之后通过磁盘管理来实现。
实验环境
一台centos 7.2 VM,主机名分别为host1,host1上挂载两块50G的数据盘,我们的实验就在这两块数据盘上完成。
P.S:需要强调的是生产环境下两块组raid的硬盘必须是同品牌同型号同容量的,否则极容易出现软raid失效的情况。
1.确认操作系统是否安装了mdadm软件
[root@host1 ~]# rpm -qa |grep mdadm
mdadm-3.3.2-7.el7.x86_64
2.对两块数据盘进行分区,并设置分区类型为raid
fdisk命令只能对容量在2T以下的硬盘进行分区,如果超过2T则需要使用parted工具了。Parted命令以后会介绍使用方法,本节不赘述了。
在fdisk下raid的分区类型代码是fd,在parted工具下首先需要使用mklabel将磁盘格式由MBR改成GPT,然后才能使用mkpart命令进行分区,分完区之后使用set设置分区flag为raid即可。
3.使用mdadm命令创建raid1
可以看到创建时有个Note的提示,是说软raid不能当启动设备,这就是软raid比较鸡肋的地方了。
mdadm -C /dev/md0 -ayes -l1 -n2 /dev/xvd[b,c]1
命令说明:
-C创建阵列;
-a同意创建设备,如不加此参数时必须先使用mknod 命令来创建一个RAID设备,不过推荐使用-a yes参数一次性创建;
-l阵列模式;
-n阵列中活动磁盘的数目,该数目加上备用磁盘的数目应该等于阵列中总的磁盘数目;
/dev/md0阵列的设备名称,如果还有其他阵列组可以以此类推;
创建完成后可以使用cat /proc/mdstat查看阵列状态:
下图中第一次查看的时候提示resync完成了95.7%,第二次查询的时候两块盘才真正同步完。
也可以使用mdadm -D /dev/md0查看阵列组的状态
4.创建md0的配置文件
echo DEVICE /dev/sd{a,b}1 /etc/mdadm.conf
mdadm -Evs /etc/mdadm.conf
mdadm运行时会自动检查/etc/mdadm.conf 文件并尝试自动装配,因此第一次配置raid后可以将信息导入到/etc/mdadm.conf 中。
5.使用/dev/md0
在/dev/md0上创建文件,然后挂载进行使用。
mkfs.ext4 /dev/md0
1、首先,连接相应linux主机,进入到linux命令行状态下,等待输入shell指令。
2、其次,在linux命令行中输入:cat /proc/scsi/scsi。
3、键盘按“回车键”运行shell指令,此时会看到rain做的是1.0。