linux下磁盘管理机制--RAID

简介:

    RAID(Redundant Array Of Independent Disks):独立磁盘冗余阵列。RAID的最初出现的目的是为了解决中小型企业因经费原因使用不起SCSCI硬盘,而不得不使用像IDE较廉价的磁盘情况下,将多块IDE磁盘通过某种机制组合起来,使得IDE磁盘在一定程度上提高读写性能的一种机制。当然,现在也可以将SCSCI类的磁盘也可以做成RAID来提高磁盘的读写性能。


一、RAID的级别

    RAID机制通过级别来RAID级别来定义磁盘的组合方式。常见的级别有:RAID0,RAID1,RAID4,RAID5, RAID6这几种级别,下面分别叙述。

    RAID0:最少使用2块磁盘,出现的目的是为了提高读写性能,磁盘利用率达到100%,但没有容错能力,磁盘损坏的几率也增加了一倍。

具体如下:

wKioL1PF9c_Apeo0AABTCpfhFD4749.jpg

    RAID1:最少使用2块磁盘,常作为磁盘的镜像使用,所以一般情况下,自己2块磁盘。设备利用率一般情况下是50%,允许一块磁盘损坏,读性能提高,写性能有所下降。

具体如下:

wKioL1PF98mBLzkDAABRicY6kHU723.jpg

    RAID4:最少使用3块磁盘,其中一块专门保存其他2块数据的备份。通常情况是:保存其他2块磁盘数据按位异或的结果。设备利用率是 n-1/n (n为磁盘数目),可以损坏一块磁盘,读写性能都有相应的提升。

具体如下:

wKioL1PF-c2BTH3BAABrou3_deo134.jpg

    RAID5:同RAID4一样,不同的一点是,RAID5将备份信息分散到每个磁盘上。

具体如下:

wKioL1PF-jeTH_PuAABqKMcy_ls191.jpg

    RAID6:在RAID5的基础上,将备份信息多存了一份。所以,它可以允许2块磁盘损坏,其他的同RAID5一样。

具体如下:

wKioL1PF-0rSxT6UAACJ8_2lCE0899.jpg

    这里只介绍了常用的RAID级别,其他的级别的RAID,读者可自行查阅相关书籍。


我们也可以使用级别组合,常用的有RAID10,RAID50,RAID60等。

    以RAID10为例:假设现在有6块磁盘,可以先每2块作为一个RAID1,然后将3组RAID1作为一个RAID0,来提高磁盘的读写性能和容错能力。

wKioL1PF_omw0-nEAACFAdawEJE095.jpg


二、RAID的实现

    RAID实现方式有2种:

  • 硬件RAID

    由硬件控制器来实现,在操作系统中看到的仅是一个单独的设备。企业一般都使用硬件RAID来实现。

  • 软件RAID

    由软件模拟硬件RAID的控制器来实现,依赖于操作系统。


下面通过软件RAID的实现,来理解RAID的实现方式。

    在Linux中使用mdadm这个命令来实现。具体在内核中是由 md(multdisk)模块实现的。

    下面介绍mdadm的常用参数:

参数 具体意义 示例
-C

创建RAID,还有子选项

-n: 用于创建RAID的磁盘数目

-l: 创建RAID级别

-c: chunk的大小,chunk就是RAID的数据块大小,它和磁盘中的Block的大小不同

-a: {yes|no}是否自动创建RAID设备文件

mdadm -C /dev/md0 -l 5 -n 3 -a yes -c 1024K /dev/sdb{5,6,7}
-A 重新装载,比如在操作系统崩溃之后,但磁盘还在,在里一个操作系统里可以使用此选项重新加载 mdadm -A /dev/md1 /dev/sdb{5,6,7}
-S 停用RAID mdadm -S /dev/md0
-D 显示RAID的详细信息 mdadm -D /dev/md0
-r 从RAID设备里移除一块磁盘(分区) mdadm /dev/md0 -r /dev/sdb5
-a 往RAID设备里添加一块磁盘(分区) mdadm /dev/md0 -a /dev/sdb5
-f 手动损坏一块磁盘 mdadm /dev/md0 -f /dev/sdb5


正式开始创建RAID,我们这里示例创建RAID5:

    第一步准备磁盘,我们这里用分区代替:

wKioL1PGFmbgha27AAIWzIhozj8061.jpg

    第二步:就是创建RAID5。

wKiom1PGGj-xOI_TAAFFr5B0gBU083.jpg

    当看到以下信息时,说明数据同步完毕。

wKioL1PGG9-TnxPqAADCWOMWZvc081.jpg

    下面就可以格式化此设备,并挂载使用了。

wKiom1PGG5Piu7XKAAEB3-9S6VE146.jpg

    查看RAID的详细信息:

wKioL1PGHm3h4DAFAALoWC2klHE406.jpg

三、磁盘故障实验

    我们手动损坏一块磁盘,数据是否正常。

wKiom1PGHrfjasJpAALBFFTQrmk324.jpg

    此时我们依然可以正常访问数据,正常读写数据。

wKioL1PGIFyghK0AAADKK5nKO_w817.jpg

    下来我们要做的任务是,将损毁的磁盘移除,添加新的磁盘上去。

wKiom1PGIFGSkr37AALJ_rR6aX0993.jpg



    但是,我们经常是这样做的,在没损坏的情况下,添加一块磁盘作为热备磁盘。

wKioL1PGIt3zF_1GAAMAxI9RXQM241.jpg

    当有一块磁盘损坏可以立即顶上去。

wKiom1PGIiuTPVzvAAMG_33BIkA997.jpg


四、磁盘重新装载

    我们这里使用 mdadm -S RAID_DEVICE 来模拟操作系统崩溃的情况,然后重新装载。

wKioL1PGJOTxQwR9AAJYpBo8-_o376.jpg


    此时,我们挂载使用,数据依然存在。

wKioL1PGJXaTGm6oAAB40vGr_5I947.jpg


    总结:本文主要介绍了RAID的级别,以及软RAID的实现过程。当然,向 mdadm 命令的好多参数,没有详细介绍,读者要是用到的话,可查看 man 手册。










本文转自 羊木狼 51CTO博客,原文链接:http://blog.51cto.com/guoting/1439016,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
缓存 Linux 开发者
Linux内核中的并发控制机制
本文深入探讨了Linux操作系统中用于管理多线程和进程的并发控制的关键技术,包括原子操作、锁机制、自旋锁、互斥量以及信号量。通过详细分析这些技术的原理和应用,旨在为读者提供一个关于如何有效利用Linux内核提供的并发控制工具以优化系统性能和稳定性的综合视角。
|
3月前
|
Ubuntu Linux Shell
Linux系统中如何查看磁盘情况
【9月更文挑战第3天】在Linux系统中,有多种方式查看磁盘情况。可通过命令行工具`df`查看文件系统磁盘使用情况,选项`-h`以人类可读格式显示,`-T`显示文件系统类型;`du`命令显示目录或文件磁盘使用情况,`-h`以人类可读格式显示,`-s`仅显示总计;`fdisk -l`列出磁盘和分区信息。此外,图形界面的磁盘管理工具和文件管理器也可用于查看磁盘使用情况。这些方法有助于更好地管理磁盘空间。
727 4
|
13天前
|
存储 编译器 Linux
动态链接的魔法:Linux下动态链接库机制探讨
本文将深入探讨Linux系统中的动态链接库机制,这其中包括但不限于全局符号介入、延迟绑定以及地址无关代码等内容。
187 19
|
21天前
|
监控 算法 Linux
Linux内核锁机制深度剖析与实践优化####
本文作为一篇技术性文章,深入探讨了Linux操作系统内核中锁机制的工作原理、类型及其在并发控制中的应用,旨在为开发者提供关于如何有效利用这些工具来提升系统性能和稳定性的见解。不同于常规摘要的概述性质,本文将直接通过具体案例分析,展示在不同场景下选择合适的锁策略对于解决竞争条件、死锁问题的重要性,以及如何根据实际需求调整锁的粒度以达到最佳效果,为读者呈现一份实用性强的实践指南。 ####
|
25天前
|
消息中间件 安全 Linux
深入探索Linux操作系统的内核机制
本文旨在为读者提供一个关于Linux操作系统内核机制的全面解析。通过探讨Linux内核的设计哲学、核心组件、以及其如何高效地管理硬件资源和系统操作,本文揭示了Linux之所以成为众多开发者和组织首选操作系统的原因。不同于常规摘要,此处我们不涉及具体代码或技术细节,而是从宏观的角度审视Linux内核的架构和功能,为对Linux感兴趣的读者提供一个高层次的理解框架。
|
1月前
|
算法 Linux 开发者
Linux内核中的锁机制:保障并发控制的艺术####
本文深入探讨了Linux操作系统内核中实现的多种锁机制,包括自旋锁、互斥锁、读写锁等,旨在揭示这些同步原语如何高效地解决资源竞争问题,保证系统的稳定性和性能。通过分析不同锁机制的工作原理及应用场景,本文为开发者提供了在高并发环境下进行有效并发控制的实用指南。 ####
|
1月前
|
缓存 Linux 开发者
Linux内核中的并发控制机制:深入理解与应用####
【10月更文挑战第21天】 本文旨在为读者提供一个全面的指南,探讨Linux操作系统中用于实现多线程和进程间同步的关键技术——并发控制机制。通过剖析互斥锁、自旋锁、读写锁等核心概念及其在实际场景中的应用,本文将帮助开发者更好地理解和运用这些工具来构建高效且稳定的应用程序。 ####
46 5
|
1月前
|
Linux 数据库
Linux内核中的锁机制:保障并发操作的数据一致性####
【10月更文挑战第29天】 在多线程编程中,确保数据一致性和防止竞争条件是至关重要的。本文将深入探讨Linux操作系统中实现的几种关键锁机制,包括自旋锁、互斥锁和读写锁等。通过分析这些锁的设计原理和使用场景,帮助读者理解如何在实际应用中选择合适的锁机制以优化系统性能和稳定性。 ####
62 6
|
1月前
|
消息中间件 存储 Linux
|
1月前
|
安全 Linux 数据安全/隐私保护
深入探索Linux操作系统的多用户管理机制
【10月更文挑战第21天】 本文将详细解析Linux操作系统中的多用户管理机制,包括用户账户的创建与管理、权限控制以及用户组的概念和应用。通过具体实例和命令操作,帮助读者理解并掌握Linux在多用户环境下如何实现有效的资源分配和安全管理。