前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在本地磁盘型云主机做软RAID的实践[通俗易懂]

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

作者头像
全栈程序员站长
发布2022-08-04 12:58:21
1.6K0
发布2022-08-04 12:58:21
举报
文章被收录于专栏:全栈程序员必看

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

购买了一台拥有本地磁盘的云服务器。比如 ecs.i2.16xlarge. 为了保证数据安全性,以及读写速度,我们通常会对磁盘做RAID。 但是云主机又不同于本地物理主机,没有办法添加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

代码语言:javascript
复制
yum -y install mdadm

2) 创建阵列

代码语言:javascript
复制
mdadm --create --auto=yes --verbose /dev/md0 --level=10 --raid-devices=8 /dev/vd[bcdefghi]

3) 查看状态

代码语言:javascript
复制
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) 测试性能

代码语言:javascript
复制
#往磁盘中写入大小为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) 格式化

代码语言:javascript
复制
mkfs.ext4 /dev/md0

6) 挂载

代码语言:javascript
复制
mkdir /dfs
mount /dev/md0 /dfs

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

代码语言:javascript
复制
mdadm --detail /dev/md0

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

代码语言:javascript
复制
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) 启动监听服务

代码语言:javascript
复制
systemctl start mdmonitor

9) 在/etc/fstab中加入

代码语言:javascript
复制
/dev/md0 /dfs ext4 defaults 1 2

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年4月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • RAID 10
  • mdadm
  • 使用mdadm将8块磁盘组成RAID 10
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档