Raid的学习和基础知识_第1页
Raid的学习和基础知识_第2页
Raid的学习和基础知识_第3页
Raid的学习和基础知识_第4页
Raid的学习和基础知识_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 什么是什么是 Raid RAID Redundant Array of Inexpensive Disks 称为廉价磁盘冗余阵列 RAID 的基本想法是把多个 便宜的小磁盘组合到一起 成为一个磁盘组 使性能达到或超过一个容量巨大 价格昂贵的磁盘 目前 RAID 技术大致分为两种 基于硬件的 RAID 技术和基于软件的 RAID 技术 其中在 Linux 下通过 自带的软件就能实现 RAID 功能 这样便可省去购买昂贵的硬件 RAID 控制器和附件就能极大地增强 磁盘的 IO 性能和可靠性 由于是用软件去实现的 RAID 功能 所以它配置灵活 管理方便 同时使 用软件 RAID 还可以实现将几个物理磁盘合并成一个更大的虚拟设备 从而达到性能改进和数据冗余 的目的 当然基于硬件的 RAID 解决方案比基于软件 RAID 技术在使用性能和服务性能上稍胜一筹 具 体表现在检测和修复多位错误的能力 错误磁盘自动检测和阵列重建等方面 2 RAID 级别介绍级别介绍 一般常用的 RAID 阶层 分别是 RAID 0 RAID1 RAID 3 RAID 4 以及 RAID 5 再加上二合一型 RAID 0 1 或称 RAID 10 我们先把这些 RAID 级别的优 缺点做个比较 RAID 级别 相对优点 相对缺点 RAID 0 存取速度最快 没有容错 RAID 1 完全容错 成本高 RAID 3 写入性能最好 没有多任务功能 RAID 4 具备多任务及容错功能 Parity 磁盘驱动器造成性能瓶颈 RAID 5 具备多任务及容错功能 写入时有 overhead RAID 0 1 RAID 10 速度快 完全容错 成本高 2 1 RAID0 的特点与应用的特点与应用 也称为条带模式 striped 即把连续的数据分散到多个磁盘上存取 如图所示 当系统有数据请求 就可以被多个磁盘并行的执行 每个磁盘执行属于它自己的那部分数据请求 这种数据上的并行操作 可以充分利用总线的带宽 显著提高磁盘整体存取性能 因为读取和写入是在设备上并行完成的 读 取和写入性能将会增加 这通常是运行 RAID 0 的主要原因 但 RAID 0 没有数据冗余 如果驱动器出 现故障 那么将无法恢复任何数据 2 2 RAID 1 的特点与应用的特点与应用 RAID 1 又称为镜像 Mirroring 一个具有全冗余的模式 如图所示 RAID 1 可以用于两个或 2xN 个磁盘 并使用 0 块或更多的备用磁盘 每次写数据时会同时写入镜像盘 这种阵列可靠性很高 但 其有效容量减小到总容量的一半 同时这些磁盘的大小应该相等 否则总容量只具有最小磁盘的大小 2 3 RAID 3 特点与应用特点与应用 RAID 3 是将数据先做 XOR 运算 产生 Parity Data 后 在将数据和 Parity Data 以并行存取模式写入 成员磁盘驱动器中 因此具备并行存取模式的优点和缺点 进一步来说 RAID 3 每一笔数据传输 都 更新整个 Stripe 即每一个成员磁盘驱动器相对位置的数据都一起更新 因此不会发生需要把部分磁盘 驱动器现有的数据读出来 与新数据作 XOR 运算 再写入的情况发生 这个情况在 RAID 4 和 RAID 5 会发生 一般称之为 Read Modify Write Process 我们姑且译为为读 改 写过程 因此 在所有 RAID 级别中 RAID 3 的写入性能是最好的 RAID 3 的 Parity Data 一般都是存放在一个专属的 Parity Disk 但是由于每笔数据都更新整个 Stripe 因此 RAID 3 的 Parity Disk 并不会如 RAID 4 的 Parity Disk 会造成存取的瓶颈 RAID 3 的并行存取模式 需要 RAID 控制器特别功能的支持 才能达到磁盘驱动器同步控制 而且上 述写入性能的优点 以目前的 Caching 技术 都可以将之取代 因此一般认为 RAID 3 的应用 将逐 渐淡出市场 RAID 3 以其优越的写入性能 特别适合用在大型 连续性档案写入为主的应用 例如绘图 影像 视 讯编辑 多媒体 数据仓储 高速数据撷取等等 2 4 RAID 4 特点与应用特点与应用 创建 RAID 4 需要三块或更多的磁盘 它在一个驱动器上保存校验信息 并以 RAID 0 方式将数据写入 其它磁盘 如图所示 因为一块磁盘是为校验信息保留的 所以阵列的大小是 N l S 其中 S 是 阵列中最小驱动器的大小 就像在 RAID 1 中那样 磁盘的大小应该相等 如果一个驱动器出现故障 那么可以使用校验信息来重建所有数据 如果两个驱动器出现故障 那么 所有数据都将丢失 不经常使用这个级别的原因是校验信息存储在一个驱动器上 每次写入其它磁盘 时 都必须更新这些信息 因此 在大量写入数据时很容易造成校验磁盘的瓶颈 所以目前这个级别 的 RAID 很少使用了 RAID 4 是采取独立存取模式 同时以单一专属的 Parity Disk 来存放 Parity Data RAID 4 的每一笔传 输 Strip 资料较长 而且可以执行 Overlapped I O 因此其读取的性能很好 但是由于使用单一专属的 Parity Disk 来存放 Parity Data 因此在写入时 就会造成很大的瓶颈 因此 RAID 4 并没有被广泛地应用 2 5 RAID 5 特点与应用特点与应用 在希望结合大量物理磁盘并且仍然保留一些冗余时 RAID 5 可能是最有用的 RAID 模式 RAID 5 可 以用在三块或更多的磁盘上 并使用 0 块或更多的备用磁盘 就像 RAID 4 一样 得到的 RAID5 设备 的大小是 N 1 S RAID5 与 RAID4 之间最大的区别就是校验信息均匀分布在各个驱动器上 如图 4 所示 这样就避免 了 RAID 4 中出现的瓶颈问题 如果其中一块磁盘出现故障 那么由于有校验信息 所以所有数据仍然 可以保持不变 如果可以使用备用磁盘 那么在设备出现故障之后 将立即开始同步数据 如果两块 磁盘同时出现故障 那么所有数据都会丢失 RAID5 可以经受一块磁盘故障 但不能经受两块或多块 磁盘故障 RAID 5 也是采取独立存取模式 但是其 Parity Data 则是分散写入到各个成员磁盘驱动器 因此 除 了具备 Overlapped I O 多任务性能之外 同时也脱离如 RAID 4 单一专属 Parity Disk 的写入瓶颈 但 是 RAI D 5 在座资料写入时 仍然稍微受到 读 改 写过程 的拖累 由于 RAID 5 可以执行 Overlapped I O 多任务 因此当 RAID 5 的成员磁盘驱动器数目越多 其性能 也就越高 因为一个磁盘驱动器再一个时间只能执行一个 Thread 所以磁盘驱动器越多 可以 Overlapped 的 Thread 就越多 当然性能就越高 但是反过来说 磁盘驱动器越多 数组中可能有磁 盘驱动器故障的机率就越高 整个数组的可靠度 或 MTDL Mean Time to Data Loss 就会降低 由于 RAID 5 将 Parity Data 分散存在各个磁盘驱动器 因此很符合 XOR 技术的特性 例如 当同时有 好几个写入要求发生时 这些要写入的数据以及 Parity Data 可能都分散在不同的成员磁盘驱动器 因 此 RAID 控制器可以充分利用 Overlapped I O 同时让好几个磁盘驱动器分别作存取工作 如此 数 组的整体性能就会提高很多 基本上来说 多人多任务的环境 存取频繁 数据量不是很大的应用 都适合选用 RAID 5 架构 例 如企业档案服务器 WEB 服务器 在线交易系统 电子商务等应用 都是数据量小 存取频繁的应用 2 6 RAID 0 1 RAID 10 的特点与应用 的特点与应用 RAID 0 1 RAID 10 综合了 RAID 0 和 RAID 1 的优点 适合用在速度需求高 又要完全容错 当然 经费也很多的应用 RAID 0 和 RAID 1 的原理很简单 合起来之后还是很简单 我们不打算详细介绍 倒是要谈谈 RAID 0 1 到底应该是 RAID 0 over RAID 1 还是 RAID 1 over RAID 0 也就是说 是 把多个 RAID 1 做成 RAID 0 还是把多个 RAID 0 做成 RAID 1 RAID 0 over RAID 1 假设我们有四台磁盘驱动器 每两台磁盘驱动器先做成 RAID 1 再把两个 RAID 1 做成 RAID 0 这就 是 RAID 0 over RAID 1 RAID 1 A Drive A1 Drive A2 Mirrored RAID 1 B Drive B1 Drive B2 Mirrored RAID 0 RAID 1 A RAID 1 B Striped RAID 1 over RAID 0 假设我们有四台磁盘驱动器 每两台磁盘驱动器先做成 RAID 0 再把两个 RAID 0 做成 RAID 1 这就 是 RAID 1 over RAID 0 RAID 0 A Drive A1 Drive A2 Striped RAID 0 B Drive B1 Drive B2 Striped RAID 1 RAID 1 A RAID 1 B Mirrored 在这种架构之下 如果 RAID 0 A 有一台磁盘驱动器故障 RAID 0 A 就算毁了 当然 RAID 1 仍然 可以正常工作 如果这时 RAID 0 B 也有一台磁盘驱动器故障 RAID 0 B 也就算毁了 此时 RAID 1 的两磁盘驱动器都算故障 整个 RAID 1 资料就毁了 因此 RAID 0 OVER RAID 1 应该比 RAID 1 OVER RAID 0 具备比较高的可靠度 所以我们建议 当采 用 RAID 0 1 RAID 10 架构时 要先作 RAID 1 再把数个 RAID 1 做成 RAID 0 3 怎样选择怎样选择 Raid 级别级别 RAID 012345 到底哪一种适合你 不只是成本问题 容错功能和传输性能的考虑以及未来之可扩充性 都应该符合应用的需求 RAID 在市场上的的应用 已经不是新鲜的事儿了 很多人都大略了解 RAID 的基本观念 以及各个不 同 RAID LEVEL 的区分 但是在实际应用 面 我们发现 有很多使用者对于选择一个合适的 RAID LEVEL 仍然无法很确切的掌握 尤其是对于 RAID 0 1 10 RAID 3 RAID 5 之间的选择取舍 更 是举棋不定 3 1 RAID 条切条切 striped 的存取模式的存取模式 在使用数据条切 Data Stripping 的 RAID 系统之中 对成员磁盘驱动器的存取方式 可分为两种 并行存取 Paralleled Access 独立存取 Independent Access RAID 2 和 RAID 3 是采取并行存取模式 RAID 0 RAID 4 RAID 5 及 RAID 6 则是采用独立存取模式 3 2 平行存取模式平行存取模式 并行存取模式支持里 是把所有磁盘驱动器的主轴马达作精密的控制 使每个磁盘的位置都彼此同步 然后对每一个磁盘驱动器作一个很短的 I O 数据传送 如此一来 从主机来的每一个 I O 指令 都平 均分布到每一个磁盘驱动器 为了达到并行存取的功能 RAID 中的每一个磁盘驱动器 都必须具备几乎完全相同的规格 转速必须 一样 磁头搜寻速度 Access Time 必须相同 Buffer 或 Cache 的容量和存取速度要一致 CPU 处理指 令的速度要相同 I O Channel 的速度也要一样 总而言之 要利用并行存取模式 RAID 中所有的成 员磁盘驱动器 应该使用同一厂牌 相同型号的磁盘驱动器 3 2 1 并行存取的基本工作原理并行存取的基本工作原理 假设 RAID 中共有四部相同规格的磁盘驱动器 分别为磁盘驱动器 A B C 和 D 我们在把时间轴略 分为 T0 T1 T2 T3 和 T4 T0 RAID 控制器将第一笔数据传送到 A 的 Buffer 磁盘驱动器 B C 和 D 的 Buffer 都是空的 在等 待中 T1 RAID 控制器将第二笔数据传送到 B 的 Buffer A 开始把 Buffer 中的数据写入扇区 磁盘驱动器 C 和 D 的 Buffer 都是空的 在等待中 T2 RAID 控制器将第三笔数据传送到 C 的 Buffer B 开始把 Buffer 中的数据写入扇区 A 已经完成 写入动作 磁盘驱动器 D 和 A 的 Buffer 都是空的 在等待中 T3 RAID 控制器将第四笔数据传送到 D 的 Buffer C 开始把 Buffer 中的数据写入扇区 B 已经完成 写入动作 磁盘驱动器 A 和 B 的 Buffer 都是空的 在等待中 T4 RAID 控制器将第五笔数据传送到 A 的 Buffer D 开始把 Buffer 中的数据写入扇区 C 已经完成 写入动作 磁盘驱动器 B 和 C 的 Buffer 都是空的 在等待中 如此一直循环 一直到把从主机来的这个 I O 指令处理完毕 RAID 控制器才会受处理下一个 I O 指 令 重点是在任何一个磁盘驱动器准备好把数据写入扇区时 该目的扇区必须刚刚好转到磁头下 同 时 RAID 控制器每依次传给一个磁盘驱动器的数据长度 也必须刚刚好 配合磁盘驱动器的转速 否则 一旦发生 miss RAID 性能就大打折扣 3 2 2 并行存取并行存取 RAID 的最佳应用的最佳应用 并行存取 RAID 之架构 以其精细的马达控制和分布之数据传输 将数组中每一个磁盘驱动器的性能发 挥到最大 同时充分利用 Storage Bus 的频宽 因此特别适合应用在大型 数据连续的档案存取应用 例如 影像 视讯档案服务器 数据仓储系统 多媒体数据库 电子图书馆 印前或底片输出档案服务器 其它大型且连续性档案服务器 由于并行存取 RAID 架构之特性 RAID 控制器一次只能处理一个 I O 要求 无法执行 Overlapping 的 多任务 因此非常不适合应用在 I O 次数频繁 数据随机存取 每笔数据传输量小的环境 同时 因 为并行存取无法执行 Overlapping 的多任务 因此没有办法 隐藏 磁盘驱动器搜寻 seek 的时间 而且 在每一个 I O 的第一笔数据传输 都要等待第一个磁盘驱动器旋转延迟 rotational latency 平均为旋 转半圈的时间 如果使用一万转的磁盘驱动器 平均就需要等待 50 usec 所以机械延迟时间 是并行 存取架构的最大问题 3 3 独立存取模式独立存取模式 相对于并行存取模式 独立存取模式并不对成员磁盘驱动器作同步转动控制 其对每个磁盘驱动器的 存取 都是独立且没有顺序和时间间格的限制 同时每笔传输的数据量都比较大 因此 独立存取模 式可以尽量地利用 overlapping 多任务 Tagged Command Queuing 等等高阶功能 来 隐藏 上述磁 盘驱动器的机械时间延迟 Seek 和 Rotational Latency 由于独立存取模式可以做 overlapping 多任务 而且可以同时处理来自多个主机不同的 I O Requests 在多主机环境 如 Clustering 更可发挥最大的性能 3 3 1 独立存取独立存取 RAID 的最佳应用的最佳应用 由于独立存取模式可以同时接受多个 I O Requests 因此特别适合应用在数据存取频繁 每笔数据量 较小的系统 例如 在线交易系统或电子商务应用 多使用者数据库 ERM 及 MRP 系统 小文件之文件服务器 4 创建和维护创建和维护 Raid 4 1 mdadm 在 Linux 服务器中是通过 mdadm 工具来创建和维护软 RAID 的 mdadm 在创建和管理软 RAID 时非常 方便 而且很灵活 mdadm 常用的参数有如下 create 或 C 创建一个新的软 RAID 后面接 raid 设备的名称 例如 dev md0 dev md1 等 assemble 或 A 加载一个已存在的阵列 后面跟阵列以及设备的名称 detail 或 D 输出指定 RAID 设备的详细信息 stop 或 S 停止指定的 RAID 设备 level 或 l 设置 RAID 的级别 例如 设置 level 5 则表示创建阵列的级别是 RAID 5 raid devices 或 n 指定阵列中活动磁盘的数目 scan 或 s 扫描配置文件或 proc mdstat 文件来搜索软 RAID 的配置信息 该参数不能单独使用 只能配置其它参数才能使用 下面将通过一个实例来讲述通过 mdadm 如何实现软 RAID 的功能 4 1 1 创建分区创建分区 实例 1 某台机器上有 4 块空闲的硬盘 分别是 dev sdb dev sdc dev sdd 和 dev sde 并用这四块硬盘来 创建来创建一个 RAID 5 具体操作步骤如下 首先使用 fdisk 命令在每块硬盘上创建一个分区 操作如下 root xiaop laptop fdisk dev sdb Device contains neither a valid DOS partition table nor Sun SGI or OSF disklabel Building a new DOS disklabel Changes will remain in memory only until you decide to write them After that of course the previous content won t be recoverable Warning invalid flag 0 x0000 of partition table 4 will be corrected by w rite Command m for help n 按 n 创建新分区 Command action e extended p primary partition 1 4 输入 p 选择创建主分区 p Partition number 1 4 1 输入 1 创建第一个主分区 First cylinder 1 102 default 1 直接回车 选择分区开始柱面这里就从 1 开始 Using default value 1 Last cylinder or size or sizeM or sizeK 1 102 default 102 Using default value 102 Command m for help w 然后输入 w 写盘 The partition table has been altered Calling ioctl to re read partition table Syncing disks 针对其余几块硬盘也做相同操作 按照此步骤在另外的两块磁盘上做同样的操作 全部做完后 运行 fdisk l 应该可以看到如下信息 Disk dev sdb 214 MB 214748160 bytes 64 heads 32 sectors track 204 cylinders Units cylinders of 2048 512 1048576 bytes Device Boot Start End Blocks Id System dev sdb1 1 204 208880 fd Linux raid autodetect Disk dev sdc 214 MB 214748160 bytes 64 heads 32 sectors track 204 cylinders Units cylinders of 2048 512 1048576 bytes Device Boot Start End Blocks Id System dev sdc1 1 204 208880 fd Linux raid autodetect Disk dev sdd 214 MB 214748160 bytes 64 heads 32 sectors track 204 cylinders Units cylinders of 2048 512 1048576 bytes Device Boot Start End Blocks Id System dev sdd1 1 204 208880 fd Linux raid autodetect 看到上面三个磁盘上分别建了一个分区 分区大小都一样 4 1 2 创建创建 RAID 5 创建完 dev sdb1 dev sdc1 dev sdd1 dev sde1 四个分区后 下面就可以来创建 RAID 5 了 其 中设定 dev sde1 作为备用设备 其余为活动设备 备用设备的作用是一旦某一设备损坏可以立即使用 备用设备替换 操作命令如下 root xiaop laptop mdadm create dev md0 level 5 raid devices 3 spare devices 1 dev sd b e 1 mdadm array dev md0 started 其中 spare devices 1 表示当前阵列中备用设备只有一块 即作为备用设备的 dev sde1 若有多块备 用设备 则将 spare devices 的值设置为相应的数目 成功创建完成 RAID 设备后 通过如下命令可以 查看到 RAID 的详细信息 root xiaop laptop mdadm detail dev md0 dev md0 Version 00 90 01 Creation Time Mon Jan 22 10 55 49 2007 Raid Level raid5 Array Size 208640 203 75 MiB 213 65 MB Device Size 104320 101 88 MiB 106 82 MB Raid Devices 3 Total Devices 4 Preferred Minor 0 Persistence Superblock is persistent Update Time Mon Jan 22 10 55 52 2007 State clean Active Devices 3 Working Devices 4 Failed Devices 0 Spare Devices 1 Layout left symmetric Chunk Size 64K Number Major Minor RaidDevice State 0 8 17 0 active sync dev sdb1 1 8 33 1 active sync dev sdc1 2 8 49 2 active sync dev sdd1 3 8 65 1 spare dev sde1 UUID b372436a 6ba09b3d 2c80612c efe19d75 Events 0 6 4 1 3 创建创建 RAID 的配置文件的配置文件 RAID 的配置文件名为 mdadm conf 默认是不存在的 所以需要手工创建 该配置文件存在的主要 作用是系统启动的时候能够自动加载软 RAID 同时也方便日后管理 mdadm conf 文件内容包括 由 DEVICE 选项指定用于软 RAID 的所有设备 和 ARRAY 选项所指定阵列的设备名 RAID 级别 阵列 中活动设备的数目以及设备的 UUID 号 生成 RAID 配置文件操做如下 root xiaop laptop mdadm detail scan etc mdadm conf 但是当前生成 mdadm conf 文件的内容并不符合所规定的格式 所以也是不生效的 这时需要手工修改 该文件内容为如下格式 root xiaop laptop vi etc mdadm conf DEVICE dev sdb1 dev sdc1 dev sdd1 dev sde1 ARRAY dev md0 level raid5 num devices 3 UUID b372436a 6ba09b3d 2c80612c efe19d75 如果没有创建 RAID 的配置文件 那么在每次系统启动后 需要手工加载软 RAID 才能使用 手工加载软 RAID 的命令是 root xiaop laptop mdadm assemble dev md0 dev sdb1 dev sdc1 dev sdd1 dev sde1 mdadm dev md0 has been started with 3 drives and 1 spare 4 1 4 创建文件系统创建文件系统 接下来就只需要在 RAID 设备上创建文件系统就可使用了 在 RAID 设备上创建文件系统和在分区或磁 盘上创建文件系统的方法一样 在设备 dev md0 上创建 ext3 的文件系统命令如下 root xiaop laptop mkfs ext3 dev md0 创建完文件系统后 将该设备挂载上就可正常的使用了 如果要创建其它级别的 RAID 其步骤和创建 RAID 5 基本都一样 区别在于指定 level 值的时候 需要将该值设置为相应的级别 4 2 维护软维护软 RAID 软 RAID 虽然很大程度上能保证数据的可靠性 但是在日常的工作中 有时可能需要对 RAID 进行调整 以及不排除 RAID 设备物理介质损坏的可能等相关问题 当遇到这些情况时 那么同样可以通过 mdadm 命令来完成这些操作 下面也将通过一个实例来介 绍更换 RAID 故障磁盘的完整过程 4 2 1 模拟故障磁盘模拟故障磁盘 实例 2 以前面的 实例 1 为基础 假定其中的 dev sdc1 设备出现故障时 更换一个新的磁盘 整个过程 的详细说明如下 在实际中 当软 RAID 检测到某个磁盘有故障时 会自动标记该磁盘为故障磁盘 并停止对故障磁盘的 读写操作 所以这里需要将 dev sdc1 标记为出现故障的磁盘 命令如下 root xiaop laptop mdadm dev md0 fail dev sdc1 mdadm set dev sdc1 faulty in dev md0 由于 实例 1 中的 RAID 5 设置了一个备用设备 所以当有标记为故障磁盘的时候 备用磁盘会自动 顶替故障磁盘工作 阵列也能够在短时间内实现重建 通过 proc mdstat 文件可查看到当前阵列的状 态 如下 root xiaop laptop cat proc mdstat Personalities raid5 md0 active raid5 sde1 3 sdb1 0 sdd1 2 sdc1 4 F 208640 blocks level 5 64k chunk algorithm 2 3 2 U U recovery 26 4 28416 104320 finish 0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论