在本地磁盘型云主机做软RAID的实践[通俗易懂]

在本地磁盘型云主机做软RAID的实践[通俗易懂]在本地磁盘型云主机做软RAID的实践

大家好,又见面了,我是你们的朋友全栈君。

阿里云中购买了一台拥有本地磁盘的云服务器。比如 ecs.i2.16xlarge. 为了保证数据安全性,以及读写速度,我们通常会对磁盘做RAID。
1551068038463
但是云主机又不同于本地物理主机,没有办法添加RAID卡,这就需要通过软件来实现RAID。

这里我们采用RAID10的方式。

RAID 10

RAID 10是一个RAID 1与RAID 0的组合体,它是利用奇偶校验实现条带集镜像,所以它继承了RAID 0的快速和RAID 1的安全。我们知道,RAID 1在这里就是一个冗余的备份阵列,而RAID 0则负责数据的读写阵列。其实,下图只是一种RAID 10方式,更多的情况是从主通路分出两路,做Striping操作,即把数据分割,而这分出来的每一路则再分两路,做Mirroring操作,即互做镜像。

像RAID0一样,数据跨磁盘抽取;像RAID1一样,每个磁盘都有一个镜象磁盘, 所以RAID 10的另一种会说法是 RAID 1+0。RAID10提供100%的数据冗余,支持更大的卷尺寸,但价格也相对较高。对大多数只要求具有冗余度而不必考虑价格的应用来说,RAID10提供最好的性能。使用RAID10,可以获得更好的可靠性,因为即使两个物理驱动器发生故障,每个阵列中都有一个,数据仍然可以得到保护。RAID10需要4 + 2*N 个磁盘驱动器(N >=0), 而且只能使用其中一半或更小的磁盘用量, 例如 4 个 250G 的硬盘使用RAID10 阵列, 实际容量是 500G。

mdadm

mdadm是multiple devices admin的简称,它是Linux下的一款标准的软件 RAID 管理工具,作者是Neil Brown.

在linux系统中目前以MD(Multiple Devices)虚拟块设备的方式实现软件RAID,利用多个底层的块设备虚拟出一个新的虚拟设备,并且利用条带化(stripping)技术将数据块均匀分布到多个磁盘上来提高虚拟设备的读写性能,利用不同的数据冗余算法来保护用户数据不会因为某个块设备的故障而完全丢失,而且还能在设备被替换后将丢失的数据恢复到新的设备上.

使用mdadm将8块磁盘组成RAID 10

操作系统为CentOS7.4, 8块磁盘分别为vd[b-i]
1) 安装mdadm

yum -y install mdadm

2) 创建阵列

mdadm --create --auto=yes --verbose /dev/md0 --level=10 --raid-devices=8 /dev/vd[bcdefghi]

3) 查看状态

cat /proc/mdstat
Personalities : [raid10] 
md0 : active raid10 vdi[7] vdh[6] vdg[5] vdf[4] vde[3] vdd[2] vdc[1] vdb[0]
      23068143616 blocks super 1.2 512K chunks 2 near-copies [8/8] [UUUUUUUU]
      [>....................]  resync =  0.0% (3032704/23068143616) finish=1774.5min speed=216621K/sec
      bitmap: 172/172 pages [688KB], 65536KB chunk
unused devices: <none>
[root@bgd-spark001 ~]# mdadm --detail /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Tue Aug 28 16:00:12 2018
        Raid Level : raid10
        Array Size : 23068143616 (21999.50 GiB 23621.78 GB)
     Used Dev Size : 5767035904 (5499.87 GiB 5905.44 GB)
      Raid Devices : 8
     Total Devices : 8
       Persistence : Superblock is persistent
     Intent Bitmap : Internal
       Update Time : Tue Aug 28 16:01:03 2018
             State : clean, resyncing 
    Active Devices : 8
   Working Devices : 8
    Failed Devices : 0
     Spare Devices : 0
            Layout : near=2
        Chunk Size : 512K
Consistency Policy : bitmap

     Resync Status : 0% complete

              Name : bgd-spark001:0  (local to host bgd-spark001)
              UUID : aae72c6b:c40922c0:4e64d0dd:f0c3886a
            Events : 9

    Number   Major   Minor   RaidDevice State
       0     253       16        0      active sync set-A   /dev/vdb
       1     253       32        1      active sync set-B   /dev/vdc
       2     253       48        2      active sync set-A   /dev/vdd
       3     253       64        3      active sync set-B   /dev/vde
       4     253       80        4      active sync set-A   /dev/vdf
       5     253       96        5      active sync set-B   /dev/vdg
       6     253      112        6      active sync set-A   /dev/vdh
       7     253      128        7      active sync set-B   /dev/vdi 

4) 测试性能

#往磁盘中写入大小为256MB的单个文件:
dd if=/dev/zero of=/dev/md0 bs=256M count=1 oflag=dsync
#写入1000次512字节:
dd if=/dev/zero of=/dev/md0 bs=512 count=1000 oflag=dsync
#从阵列中拷贝256KiB*15000(3.9 GB)大小内容到/dev/null:
dd if=/dev/md0 of=/dev/null bs=256K count=15000

5) 格式化

mkfs.ext4 /dev/md0

6) 挂载

mkdir /dfs
mount /dev/md0 /dfs

7) 设置开机自动挂载
查看设备uuid

mdadm --detail /dev/md0

将uuid写入到/etc/mdadm.conf中

DEVICE /dev/vdb /dev/vdc /dev/vdd /dev/vde /dev/vdf /dev/vdg /dev/vdh /dev/vdi
ARRAY /dev/md0  UUID=d17e2e6e:d2e76fa9:ab3ff508:3a95957f
MAILADDR root@localhost

8) 启动监听服务

systemctl start mdmonitor

9) 在/etc/fstab中加入

/dev/md0 /dfs ext4 defaults 1 2

至此,所有操作已经完成。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106979.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python玫瑰花绘制「建议收藏」

    Python玫瑰花绘制「建议收藏」刚开始学Python,画个玫瑰花练练手,正好今天也是情人节我自认为还是挺好看的,感觉比我搜到的那几个画出来的强代码如下importturtleastt.setup(1100,1000)t.hideturtle()t.speed(11)t.penup()t.goto(50,-450)t.pensize(5)t.pencolor("black")t.seth(140)t…

    2022年4月18日
    83
  • Gstreamer中加入�x265编解码器

    Gstreamer中加入�x265编解码器

    2021年12月6日
    48
  • 睿智的目标检测23——Pytorch搭建SSD目标检测平台

    睿智的目标检测23——Pytorch搭建SSD目标检测平台睿智的目标检测23——Pytorch搭建SSD目标检测平台学习前言什么是SSD目标检测算法源码下载SSD实现思路一、预测部分1、主干网络介绍2、从特征获取预测结果3、预测结果的解码4、在原图上进行绘制二、训练部分1、真实框的处理2、利用处理完的真实框与对应图片的预测结果计算loss训练自己的ssd模型学习前言一起来看看SSD的Pytorch实现吧,顺便训练一下自己的数据。什么是SSD目标检…

    2022年6月15日
    22
  • JVM内存划分[通俗易懂]

    JVM内存划分[通俗易懂]目录 1.概述2.运行时数据区域 2.1程序计数器2.2Java虚拟机栈2.3本地方法栈2.4Java堆2.5方法区2.6补充2.6.1运行时常量池和Class文件常量池2.6.2直接内存3.HotSpot虚拟机3.1内存划分3.2对象的创建、内存布局、访问定位3.2.1对象的创建3.2.2对象的内存布局…

    2022年5月26日
    46
  • ETH硬分叉降低了显卡矿机的挖矿收益吗?

    ETH硬分叉降低了显卡矿机的挖矿收益吗?“北京时间2019年3月1日凌晨3:52分,ETH完成了君士坦丁堡硬分叉升级。这场从2018年8月份就开始计划的硬分叉,几经波折,但最终是平稳顺利的。虽然对比其他主流币种轰轰烈烈的硬分叉,ETH这次硬分叉显得过于平淡,但还是有很多矿工朋友想知道它是否降低了ETH的挖矿收益,未来挖矿收益如何变化,显卡矿机未来的出路在哪里?”笔者根据最近一年的ETH挖矿难度、挖矿收益、币价等变化情况,做了一些…

    2022年6月9日
    44
  • 强烈推荐android studio用的几个插件[通俗易懂]

    强烈推荐android studio用的几个插件

    2022年1月30日
    52

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号