Linux磁盘存储——RAID解释及用途

RAID(管理多个磁盘空间的技术)

一开始主要是为了降低成本,后来成为服务器的标配,将多个磁盘组合成阵列,提供更好的性能和冗余能力

raid分级

1. RAID 0(条带集)

至少需要两个磁盘组成,以两个磁盘为例,两个磁盘要使用相同大小的的空间来逻辑地组成一个硬盘;对于一个文件,两个磁盘将它以chunk单位大小来进行并行存储,这带来了读写性能的提升;不过只要有一个磁盘上出现问题导致数据丢失或是损坏都将造成文件的损坏,raid0没有容错能力;磁盘利用率为100%


2. RAID 1,镜像raid。最少要有两个磁盘,并且磁盘数是偶数;以两个磁盘为例,第一个磁盘写什么,第二个磁盘就写什么,保证了当第一个磁盘不能访问的时候还能访问第二个磁盘;读性能提升,但是写性能有下降(一个内容写两次肯定下降);空间利用率50%;有冗余能力但没有恢复能力。

3. RAID 5(带校验位的条带集)

至少需要三块硬盘来组成;以三个磁盘为例,三个磁盘使用相同大小的空间来组成逻辑磁盘;也是并行存储,但是三个磁盘在写数据的时候要考虑校验位,具体表现为chunk1、chunk2、校验;chunk3、校验、chunk4;校验、chunk5、chunk6......以此类推,保证每行都有一个校验位(每个磁盘上都有校验位),当有数据损坏时,通过异或运算可以计算出损坏的数据,但是仅限一个磁盘上的数据出错,而且这种运算会时时增加服务器的负担,造成服务器性能降级;总体而言,raid5可以带来读写性能的提升,允许最多一个硬盘上的数据出错,有容错能力,及时将损坏硬盘换掉即可;磁盘利用率是(n-1)/n,适用于中小型企业数据并非不能损失的服务器。
在实践中,一个磁盘损坏虽然整体还可以工作,但是读写性能会降低,所以需要尽快替换损坏的磁盘。
4. RAID 4,与RAID 5大体相似,但是RAID 4的校验位只放在一个磁盘上,也就是万一这个检验磁盘出错,就没得恢复了。

5. RAID 6,最少要有4个硬盘,与raid5相比,raid6有两个校验位,这意味着它最多允许两块硬盘出错,并且它的空间利用率是(n-2)/n

6. RAID 7,可以理解为一个独立存储计算机,自身带有操作系统和管理工具,可以独立运行,理论上性能最高的RAID模式,但成本高。

7. JBOD,串行存储,就相当是把不同的磁盘串起来连续使用空间,仅仅是磁盘空间变大。

RAID 组合

raid 01,多块磁盘先实现RAID0,再组合成RAID1。
 
raid 10,多块磁盘先实现RAID1,再组合成RAID0
 
raid 50,多块磁盘先实现RAID5,再组合成RAID0

软RAID,利用操作系统实现

1. 搭建一个raid0

2. 创建raid0

先z准备4个分区
fdisk /dev/sdb
n
p
回车
回车
+1G
t
fd(id改为Linux raid Auto)
w(我这里因为是新加的硬盘分区,里面是空的,所以提示需要同步。但是如果是分区里有内容的,需要partprobe同步)
PS:4个磁盘也可以,并且磁盘不用设置fd分区标签,直接用。
dd if=/dev/sdb of=/dev/sdc bs=1 count=66 skip=446 seek=446
dd if=/dev/sdb of=/dev/sdd bs=1 count=66 skip=446 seek=446
dd if=/dev/sdb of=/dev/sde bs=1 count=66 skip=446 seek=446
mdadm -C /dev/md0(raid0的名字) -a(初始化) yes -l0(指定raid的级别) -n4(指定成员,有4个) /dev/sd{b,c,d,e}1
mdadm -Ds /dev/md0 > /etc/mdadm.conf 将raid信息存到配置文件中,防止raid设备要再次启动的时候找不到配置信息而无法启动。
mks.xfs /dev/md0格式化文件系统
mkdir /mnt/raid0创建目录作为挂载点
mount /dev/md5 /mnt/raid5挂载
vim /etc/fstab永久挂载
r!blkid /dev/md0
/mnt/raid0 xfs defaults 0 0设置信息
mount -a挂载
 3. 删除raid0

取消挂载 umount /mnt/raid0
停止raid0设备服务 mdadm -S /dev/md0
清除sd{b.c,d,e}1的超级块使其不属于raid0,mdadm --zero-superblock /dev/sdb1
mdadm --zero-superblock /dev/sdc1
mdadm --zero-superblock /dev/sdd1
mdadm --zero-superblock /dev/sde1
rm -f /etc/mdadm.conf
删除/etc/fstab中的md0挂载点,删除完毕。
当然,取消挂载,直接dd if=/dev/zero of=/dev/sd{b,c,d,e}1清除文件系统后再停止服务、清除超级块、删配置文件跟挂载点也可以。
1.创建raid 5

新加一个分区作为空闲分区,实际中遇到磁盘损坏可以及时替换,配合raid5可以做到:先损坏一块磁盘,空闲磁盘自动替换,再损失一块,因为raid5自带校验位,所以还可以继续工作。当然,两块磁盘不能同时损坏,不然还是会失败。
mdadm -C /dev/md5 -a yes -l5 -n4 -x1(空闲) /dev/sd{b,c,d,e}1 /dev/sda6
mdadm -Ds > /etc/mdadm.conf
mkfs.xfs /dev/md5
mkdir /mnt/raid5
mount /dev/md5 /mnt/raid5


vim /etc/fstab永久挂载
r!blkid /dev/md0
/mnt/raid0 xfs defaults 0 0设置信息
mount -a


可以看到虽然我们用5个磁盘分区5G构成了一个raid5,但是它的实际可用空间只有3G,这是因为,5个中有一个1G的空闲磁盘,有1G大小的校验位,所以实际可用是3G。
2. 损坏与修复

模拟磁盘故障 mdadm /dev/md0 -f /dev/sde1

此时再查看raid5

对比一开始,可以看到原来的空闲磁盘分区sda6已经自动将损坏的sde1替换了,并且此时md5中没有空闲磁盘了(可以通过mdadm /dev/md5 -a 设备 再新加一块作为空闲磁盘),再损坏一块就可以看到校验位的作用了。
物理移除一块硬盘,这里我移除了sde1,重启。可以看到虽然报错(没截到图233),但是可以启动,并且再次查看md5的信息。


对比上面的md5的信息,可以看到明显的变化,并且此时虽然可以工作并且数据没有丢失,但是读写性能已经下降了,要尽快修复。
新加一块磁盘,echo '- - -' > /sys/class/scsi_host/host2/scan,识别。接着mdadm -a /dev/mad5 /dev/sde把sde加到md5中,注意此时我直接用的空磁盘sde而不是分区,所以可以直接加。


 再次查看5信息,当然,数据没有丢失(一开始创建完raid5的时候可以添加数据进去用来做参照,我为什么没截数据方面的图?因为我忘记加数据了...)。


 修复完毕

 3. 扩展空间,加大raid5的空间。

添加磁盘(假设添加的设备是sdf)
将磁盘添加到raid5中mdadm -G /dev/md5 /dev/sdf
同步文件系统,xfs_growfs /mnt/raid5,显而易见这是对xfs类型的文件系统命令后面要接挂载点,假如是ext类型的,需要resize2fs /dev/md5,命令后接设备名。
4. 删除raid5,同删除raid0。

关于软raid的一些操作

为空余磁盘添加冗余
结合内核中的md(multi devices)
RAID设备可命名为/dev/md0、 /dev/md1、 /dev/md2、 /dev/md3等
支持的RAID级别: LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10
mdadm:为软RAID提供管理界面,模式化工具
命令的语法格式: mdadm [mode] <raiddevice> [options] <componentdevices>
mode:
-C创建
-n #: 使用#个块设备来创建此RAID
-l #:指明要创建的RAID的级别
-a {yes|no}:自动创建目标RAID设备的设备文件
-c CHUNK_SIZE: 指明块大小,单位k
-x #: 指明空闲盘的个数
-D显示raid的详细信息
mdadm --detail|D /dev/md0
管理
-f标记指定磁盘为损坏
-r添加磁盘
-a移除磁盘
raiddevice: /dev/md#
component-devices: 任意块设备
示例
使用mdadm创建并定义RAID设备:mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
观察md的状态: cat /proc/mdstat
用文件系统对每个RAID设备进行格式化:mke2fs -j /dev/md0
增加新的成员:mdadm –G /dev/md0 –n4 -a /dev/sdf1
模拟磁盘故障:mdadm /dev/md0 -f /dev/sda1
模拟移除磁盘:mdadm /dev/md0 –r /dev/sda1
生成配置文件: mdadm –D –s >> /etc/mdadm.conf
停止设备: mdadm –S /dev/md0
激活设备: mdadm –A –s /dev/md0 激活
强制启动: mdadm –R /dev/md0
删除raid信息: mdadm --zero-superblock /dev/sdb1
————————————————
原文链接:https://blog.csdn.net/qq_39155877/article/details/81749895

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值