在本地磁盘型云主机做软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)
上一篇 2022年4月21日 下午5:00
下一篇 2022年4月21日 下午5:20


相关推荐

  • 信号处理学习笔记2——维纳滤波器

    信号处理学习笔记2——维纳滤波器在讨论维纳滤波之前 先来看看维纳滤波器在线性滤波器体系中处于什么位置 经典的 FIR 和 IIR 滤波器要求已知信号和噪声的频谱信息 并且信号和噪声的频谱没有交叠 信号和噪声的频谱有交叠时 如果硬要使用 FIR 和 IIR 当然也可以 但要么会造成噪声滤除不干净 要么会造成滤除噪声的同时对有用信号造成 误伤 实际上 在信号和噪声频谱有交叠时 滤波问题演变为在已知观测量的前提下 对未知信号进行最佳估计的问题 所以这里信号也称为估计量 既然希望估计是最佳 那必然要有个评价准则 不同的评价准则便衍生出不同的估

    2026年3月18日
    1
  • 『浅入浅出』MySQL 和 InnoDB [建议收藏并分享]

    『浅入浅出』MySQL 和 InnoDB [建议收藏并分享]

    2022年2月18日
    43
  • The database disk image is malformed_数据库sqlite

    The database disk image is malformed_数据库sqlite一.问题分析此问题的提示也就是数据库文件损坏。如果在程序访问数据库期间拷贝是很容易出现该问题的,断开所有连接去拷贝在实际项目中有时候是不现实的,所以我们有时去做一下手动修复。二.问题修复1.下载sqlite3.exe到本地,并将损坏的数据库文件拷贝到同一个目录2.打开命令行工具(CMD),进入到sqlite3.exe所在目录3.使用sqlite3.exe打开损坏的数据库文件,并导出sql语句到临时文件E:\sqlite>sqlite3.exe2022_03_03

    2025年9月3日
    7
  • 一个优秀it专家的成长历程-献给所有的颓废或即将颓废的人们

    一个优秀it专家的成长历程-献给所有的颓废或即将颓废的人们nbsp 本文摘自网上 成功的背后 有着许多不为人知的故事 而正是这些夹杂着泪水和汗水的过去 才成就了一个个走向成功的普通人 凌晨两点半 早已习惯了一个人坐在电脑前的我 望着屏幕 任思绪在暗夜的包容下静静流淌 时光仿佛又定格在三年多前的那一刻 283 分 那是被中国万千学子称为 黑色七月 中的一天 下班回家的母亲从家门打开后说出的一个数字 虽然早知道自己不会考上大学 但如此的成绩也多少出乎自

    2026年3月17日
    2
  • 动态dns有什么好处_动态DNS设置

    动态dns有什么好处_动态DNS设置1.核心思想配置动态DNS服务器的核心思想是:在DNS服务器上运行多个BIND,每个BIND为来自不同区域的用户提供解析,因此每个BIND都应具有不同的配置文件和域文件,并且分别监听在不同的端口。在

    2022年8月5日
    7
  • 用tcping检查网站开放的端口

    用tcping检查网站开放的端口neo之前分享过一款小巧玲珑工具软件:tcping,即在tcp层进行端口的ping。tcping可以用来检查和确认我们的网站有哪些端口是开放的,使用很顺手。比如neo这几天在研究如何关闭mysql的3306端口,就通过使用tcping工具来确认关闭端口是否成功。Linux下有有个netstat命令,总是对其输出看得云里雾里,虽然netstat-l的输出看不到3306端口,是tcping还能p…

    2022年6月23日
    65

发表回复

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

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