独立磁盘冗余阵列:RAID
RAID
RAID:独立磁盘冗余阵列(Redundant Arrays of Independent(最早是Inexpensive,后来改成Independent) Disks,RAID)
计算机核心部件:CPU,内存,IO设备
部分硬盘接口格式:
硬盘类型 | 英文名称 | 传输速度 | 接口类型 |
---|---|---|---|
IDE | Integrated Drive Electronics | 133Mbps | 并行接口 |
SATA1 | Serial Advanced Technology Attachment1.0 | 300Mbps | 串行接口 |
SATA2 | 600Mbps | 串行接口 | |
SATA3 | 6Gbps | 串行接口 | |
USB3.0 | Universal Serial Bus | 480Mbps | 串行接口 |
SCSI | small computer system interface | 1Gbps | 并行 |
SAS |
驱动:将逻辑指令转化为对应设备的控制指令的程序。
将cpu指令转化为各设备可以理解的指令,在转换处有一个控制设备,集成再主板上的叫控制器,独立在主板外的叫适配器;本质上是同一种东西。即控制器(适配器)是连接主板和IO设备(外接IO设备,如磁盘、USB等)中间的桥梁,负责让CPU和IO设备良好通信的介质。
RAID级别
RAID级别仅仅代表磁盘组织方式不同(应用不同场景需求),没有上下之分。考虑因素:数据传输速度,完整性,可靠性,安全性等。
RAID0:条带技术
所谓条带技术,即RAID0,就是将一各数据分为很多片,通过控制器,存放在不同的磁盘设备上,这样可以大大提高读写速度,缓解IO端口的读写瓶颈问题。但是带来的问题:如果任意一个磁盘损坏,此文件就无法使用,这也大大降低了磁盘存储的可靠性。
RAID1:磁盘镜像技术
磁盘镜像技术,即RAID1,就是在通过控制器向磁盘存储数据时,将一份数据分别存放在不同的磁盘上,每个磁盘存放的数据都是完整的,相同的。这种技术,提高了磁盘存储的可靠性,即是有一个磁盘损坏,也可以从别的磁盘上备份得到;但是缺毫无冗余能力,即读写速度并没有提升(相反,写的速度反而降低),硬盘利用率只有二分之一。
RAID4:校验码技术
校验码技术,即RAID4,磁盘群提供一个校验码盘,负责记录其他磁盘存储的总和数据,如:在上图,存储数据磁盘上分别存储1、2、2,则在校验码盘存储5(1+2+2);如果存储数据盘有一个损坏,有能通过校验码盘和其他正常工作的盘,恢复出损坏盘的数据。校验码技术,提升了读写速度,并且有一定的可靠性(坏一块磁盘并不影响数据完整性)。
即便如此,因为恢复数据(有一块盘损坏)时,需要校验码盘和其他盘共同参与,这也提升了IO压力,和损坏风险。同时,校验码盘容易成为整个技术的瓶颈。
RAID5:轮流校验码技术
RAID5和RAID4很相似,差别在于:RAID5的校验码盘不是固定的,即磁盘群内,互为校验码盘,这样就缓解了RAID4暴露出来的问题(固定的校验码盘容易成为整个技术的瓶颈)。
RAID级别示意图
级别 | 应用技术 | 允许磁盘损坏程度 | 性能表现 |
---|---|---|---|
RAID0 | 条带技术 | 不允许磁盘坏 | 传输速度快(读写性能提升N倍),可靠性极差(没有冗余(错)能力) |
RAID1 | 磁盘镜像技术 | 坏一块不影响 | 传输速度慢(写性能下降,读性能提升),可靠性高(较强的冗余能力) |
RAID2 | 汉明码技术 | 同0 | 在0的基础上,提升读写数据时的纠错能力 |
RAID3 | 汉明码技术 | 同1 | 在1的基础上,提升读写数据时的纠错能力 |
RAID4 | 校验码技术 | 坏一块可修复 | 传输速度快(读写性能提升),具备冗余能力(不高),修复危险度高 |
RAID5 | 轮流校验码技术 | 坏一块可修复 | 同4,避免单一校验硬盘成为瓶颈问题 |
RAID6 |
RAID组合
RAID01
所谓RAID01就是先进行RAID0(条带化),在进行RAID1(镜像化),这样可一提升IO速度,也可以确保可靠性。
但是,如果有一块磁盘损坏,可能整个磁盘体系都需要被调用。
RAID10
所谓RAID10即先进行RAID1(镜像技术),再进行RAID0(条带技术),这样可一提升IO速度,也可以确保可靠性。如果有一块磁盘损坏,则不需要调用整个磁盘体系,只需要调用和损坏磁盘互为镜像的磁盘进行数据恢复即可。
RAID50
所谓RAID10即先进行RAID5(镜像技术),再进行RAID0(条带技术)。此处不再过多解释。
RAID50大大提升对数据的读写能力,同时具备冗余能力。空间利用率为(总盘数-校验盘个数)/总盘数
JBOD技术
JBOD磁盘技术,适合Hadoop。
性能无提升,不具备冗余能力,空间利用率百分之百
RAID盘选取
早期:
IDE
SCSI
如今:
STAT
盘大,价格便宜
SAS
盘小,价格昂贵
硬件RAID
模型1
主机连接有插槽,RAID控制器通过线缆连接到插槽(插槽镶嵌再主机上),将硬盘插入插槽,组成RAID阵列。
模型2
磁盘阵列放在一个大的磁盘盒子内,通过一个向外接口
主机没有插槽,通过一个外接线缆,将主机RAID控制器和磁盘阵列盒子连接在一起。
软件RAID
内核必须支持软件RAID,LInux内核中有一个模块md:multi disks(多磁盘)
使用md模拟一个raid(逻辑RAID),/dev/mdx
mdadm
RAID需要在不同磁盘上做,才有意义(突破单个磁盘的IO瓶颈),实验状态下,使用一块磁盘不同分区来实现(真实环境是毫无意义的,因为磁盘的IO端口依然是传输瓶颈)。
mdadm是个模式化的命令:
创建模式 -C
专用选项:-l(指定级别);-n(设备个数);-a(是否自动为其创建设备文件(yes,no));-c(指定chunk大小,即数据块大小)
-x : 指定空闲盘的个数。留着一个备份盘,如果有一个使用的盘坏掉,备份盘立刻顶上去,保证数据安全。
管理模式
–add(-a) --remove(-r)等
mdadm /dev/mdx --fail /dev/sdxx
mdadm -S(–stop) /dev/mdx
监控模式 -F
增长模式 -G
装配模式 -A
RAID0
将/dev/vdb分为四个分区,并创建其每个分区的系统类型为Linux raid autodetect。
[root@raid ~]# fdisk /dev/vdb Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel with disk identifier 0x05300968. 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 0x0000 of partition table 4 will be corrected by w(rite) WARNING: DOS-compatible mode is deprecated. It’s strongly recommended toswitch off the mode (command ‘c’) and change display units tosectors (command ‘u’). Command (m for help): n Command actione extendedp primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-2080, default 1): Using default value 1 Last cylinder, +cylinders or +size{K,M,G} (1-2080, default 2080): +200M Command (m for help): n Command actione extendedp primary partition (1-4) p Partition number (1-4): 2 First cylinder (408-2080, default 408): Using default value 408 Last cylinder, +cylinders or +size{K,M,G} (408-2080, default 2080): +200M Command (m for help): n Command actione extendedp primary partition (1-4) p Partition number (1-4): 3 First cylinder (815-2080, default 815): Using default value 815 Last cylinder, +cylinders or +size{K,M,G} (815-2080, default 2080): +200M Command (m for help): n Command actione extendedp primary partition (1-4) p Selected partition 4 First cylinder (1222-2080, default 1222): Using default value 1222 Last cylinder, +cylinders or +size{K,M,G} (1222-2080, default 2080): Using default value 2080 Command (m for help): t Partition number (1-4): 1 Hex code (type L to list codes): fd Changed system type of partition 1 to fd (Linux raid autodetect) Command (m for help): t Partition number (1-4): 2 Hex code (type L to list codes): fd Changed system type of partition 2 to fd (Linux raid autodetect) Command (m for help): t Partition number (1-4): 3 Hex code (type L to list codes): fd Changed system type of partition 3 to fd (Linux raid autodetect) Command (m for help): t Partition number (1-4): 4 Hex code (type L to list codes): fd Changed system type of partition 4 to fd (Linux raid autodetect) Command (m for help): w
将/dev/vdb1和/dev/vdb4作为磁盘阵列(RAID0模式)。
[root@raid ~]# mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/vdb{1,4} mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started. [root@raid ~]# cat /proc/mdstat //查看创建结果 Personalities : [raid0] md0 : active raid0 vdb4[1] vdb1[0]//所有启用的RAID设备637440 blocks super 1.2 512k chunks //chunk大小为512k unused devices: <none>
在操作系统看来,/dev/md0就是一个块设备,和/dev/sda2没有区别,RAID机制的实现是在物理层面。即块设备可以被操作系统识别后,就需要进行格式化:
[root@raid ~]# mkfs.ext3 /dev/md0 //格式化/dev/md0为ext3格式 mke2fs 1.41.12 (17-May-2010) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=128 blocks, Stripe width=256 blocks 39840 inodes, 159360 blocks 7968 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=163577856 5 block groups 32768 blocks per group, 32768 fragments per group 7968 inodes per group Superblock backups stored on blocks: 32768, 98304 Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 20 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
查看md0文件系统
[root@raid ~]# fdisk -l /dev/md0 Disk /dev/md0: 652 MB, 652738560 bytes 2 heads, 4 sectors/track, 159360 cylinders Units = cylinders of 8 * 512 = 4096 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 524288 bytes / 1048576 bytes Disk identifier: 0x00000000
挂载文件设备
[root@raid ~]# mkdir /fsx [root@raid ~]# mount /dev/md0 /fsx/ [root@raid ~]# cd /fsx/ [root@raid fsx]# ls lost+found
RAID1
前期步骤和创建RAID0基本一样,即创建分区,设备分区系统类型等。然后,创建RAID1:
root@raid fsx]# mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/vda1 /dev/vda2 mdadm: Note: this array has metadata at the start andmay not be suitable as a boot device. If you plan tostore ‘/boot’ on this device please ensure thatyour boot-loader understands md/v1.x metadata, or use--metadata=0.90 Continue creating array? y mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md1 started.
查看/dev/md1设备块信息
[root@raid fsx]# fdisk -l /dev/md1 Disk /dev/md1: 209 MB, 209846272 bytes//只是一个磁盘的大小,即操作系统看来,md1仅仅是一个磁盘,备份的任务是物理底层完成的 2 heads, 4 sectors/track, 51232 cylinders Units = cylinders of 8 * 512 = 4096 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000
格式化,挂载md1,并写入数据
[root@raid fsx]# mkfs.ext4 /dev/md1 mke2fs 1.41.12 (17-May-2010) warning: 127 blocks unused. Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) Stride=0 blocks, Stripe width=0 blocks 51400 inodes, 204801 blocks 10246 blocks (5.00%) reserved for the super user First data block=1 Maximum filesystem blocks=67371008 25 block groups 8192 blocks per group, 8192 fragments per group 2056 inodes per group Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729 Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 23 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. [root@raid fsx]# mount /dev/md1 /mnt/ [root@raid fsx]# echo “fsx123” > /mnt/fsx [root@raid mnt]# cat fsx fsx123
监控模式下,可以显示RAID设备的详细信息:
[root@raid mnt]# mdadm -D /dev/md1 //-D == --detail /dev/md1:Version : 1.2 //版本Creation Time : Wed Apr 4 02:34:10 2018Raid Level : raid1Array Size : 204928 (200.16 MiB 209.85 MB) //阵列大小Used Dev Size : 204928 (200.16 MiB 209.85 MB)Raid Devices : 2Total Devices : 2Persistence : Superblock is persistent Update Time : Wed Apr 4 02:39:29 2018State : clean Active Devices : 2 Working Devices : 2Failed Devices : 0Spare Devices : 0 Name : raid:1 (local to host raid)UUID : d9cb6898:63c22e52:c3651fed:8650a65cEvents : 17 Number Major Minor RaidDevice State0 252 1 0 active sync /dev/vda11 252 2 1 active sync /dev/vda2
管理模式下可以模拟一个磁盘损坏:
[root@raid mnt]# mdadm /dev/md1 -f /dev/vda1 //模拟损坏/dev/md1阵列中的/dev/vda1磁盘 mdadm: set /dev/vda1 faulty in /dev/md1 [root@raid mnt]# ls fsx lost+found //一个磁盘存坏,文件仍然可以读取,RAID1的冗余能力。 [root@raid mnt]# vim fsx [root@raid mnt]# cat fsx fsx123 [root@raid mnt]# mdadm -D /dev/md1 /dev/md1:Version : 1.2Creation Time : Wed Apr 4 02:34:10 2018Raid Level : raid1Array Size : 204928 (200.16 MiB 209.85 MB)Used Dev Size : 204928 (200.16 MiB 209.85 MB)Raid Devices : 2Total Devices : 2Persistence : Superblock is persistent Update Time : Wed Apr 4 02:45:27 2018State : clean, degraded Active Devices : 1 Working Devices : 1Failed Devices : 1Spare Devices : 0 Name : raid:1 (local to host raid)UUID : d9cb6898:63c22e52:c3651fed:8650a65cEvents : 21 Number Major Minor RaidDevice State0 0 0 0 removed //查看状态,处与remove1 252 2 1 active sync /dev/vda2 0 252 1 - faulty /dev/vda1
移除损坏的设备
[root@raid mnt]# mdadm /dev/md1 -r /dev/vda1 //-r == --remove mdadm: hot removed /dev/vda1 from /dev/md1 [root@raid mnt]# mdadm -D /dev/md1 /dev/md1:Version : 1.2Creation Time : Wed Apr 4 02:34:10 2018Raid Level : raid1Array Size : 204928 (200.16 MiB 209.85 MB)Used Dev Size : 204928 (200.16 MiB 209.85 MB)Raid Devices : 2Total Devices : 1Persistence : Superblock is persistent Update Time : Wed Apr 4 02:47:40 2018State : clean, degraded Active Devices : 1 Working Devices : 1Failed Devices : 0Spare Devices : 0 Name : raid:1 (local to host raid)UUID : d9cb6898:63c22e52:c3651fed:8650a65cEvents : 26 Number Major Minor RaidDevice State0 0 0 0 removed //被移除1 252 2 1 active sync /dev/vda2
重新给md1添加一块设备
[root@raid mnt]# mdadm /dev/md1 -a /dev/vda1 //-a == --add mdadm: added /dev/vda1 [root@raid mnt]# mdadm -D /dev/md1 /dev/md1:Version : 1.2Creation Time : Wed Apr 4 02:34:10 2018Raid Level : raid1Array Size : 204928 (200.16 MiB 209.85 MB)Used Dev Size : 204928 (200.16 MiB 209.85 MB)Raid Devices : 2Total Devices : 2Persistence : Superblock is persistent Update Time : Wed Apr 4 02:50:01 2018State : clean, degraded, recovering Active Devices : 1 Working Devices : 2Failed Devices : 0Spare Devices : 1 Rebuild Status : 47% complete Name : raid:1 (local to host raid)UUID : d9cb6898:63c22e52:c3651fed:8650a65cEvents : 37 Number Major Minor RaidDevice State2 252 1 0 spare rebuilding /dev/vda11 252 2 1 active sync /dev/vda2 [root@raid mnt]# cat /proc/mdstat Personalities : [raid0] [raid1] md1 : active raid1 vda1[2] vda2[1]204928 blocks super 1.2 [2/2] [UU] md0 : active raid0 vdb4[1] vdb1[0]637440 blocks super 1.2 512k chunks unused devices: <none>
停止阵列
[root@raid /]# umount /mnt/ //停止前必须先解挂 [root@raid /]# mdadm -S /dev/md1 //-S == --stop mdadm: stopped /dev/md1
重新启动阵列
[root@raid /]# mdadm -A /dev/md1 /dev/vda1 /dev/vda2 mdadm: /dev/md1 has been started with 2 drives. [root@raid /]# mdadm -D /dev/md1 /dev/md1:Version : 1.2Creation Time : Wed Apr 4 02:34:10 2018Raid Level : raid1Array Size : 204928 (200.16 MiB 209.85 MB)Used Dev Size : 204928 (200.16 MiB 209.85 MB)Raid Devices : 2Total Devices : 2Persistence : Superblock is persistent Update Time : Wed Apr 4 02:54:19 2018State : clean Active Devices : 2 Working Devices : 2Failed Devices : 0Spare Devices : 0 Name : raid:1 (local to host raid)UUID : d9cb6898:63c22e52:c3651fed:8650a65cEvents : 83 Number Major Minor RaidDevice State2 252 1 0 active sync /dev/vda13 252 2 1 active sync /dev/vda2
独立磁盘冗余阵列:RAID相关推荐
- RAID独立磁盘冗余阵列,对比各模式下的性能优劣
一.RAID 概述 首次提出: 1988 年美国加州大学伯克利分校的 D. A. Patterson 教授等首次在论文 "A Case of Redundant Array of Inexp ...
- linux 独立冗余磁盘阵列,Linux基础教程:独立硬盘冗余阵列-RAID
RAID 10 和RAID 01相反,RAID10是先做RAID1,再做RAID0,如下图所示: RAID10和RAID01在读写速度上没有什么太大的差别,但是RAID10的数据安全性比较高,若下图左 ...
- 独立硬盘冗余阵列-RAID
RAID 0 RAID 0亦称为条带,它将两个以上的磁盘串联起来,成为一个大容量的磁盘.在存放数据时,分段后分散存储在这些磁盘中,因为读写时都可以并行处理,所以在所有的级别中,RAID 0的速度是最快 ...
- RAID磁盘冗余阵列
转 https://zhuanlan.zhihu.com/p/51170719 RAID的不同级别 RAID即独立磁盘冗余阵列,简称磁盘阵列,其实就是用多个独立的磁盘组成在一起形成一个大的磁盘系统,从 ...
- Linux之磁盘冗余阵列
RAID: 是Redundant Arrays of Independent Disk的缩写,即独立磁盘冗余阵列.也就是通过一些技术将多个磁盘组合成一个磁盘组,逻辑上看就是一个较大的磁盘设备.除了存储 ...
- 独立硬盘冗余阵列与HDFS
http://zh.wikipedia.org/wiki/RAID 独立硬盘冗余阵列(RAID, Redundant Array of Independent Disks),旧称廉价磁盘冗余阵列(Re ...
- linux磁盘冗余阵列
RAID防止硬盘物理损坏以及增加存储设备的吞吐量,RAID常见的组合有0.1.5.和10RAID0:至少需要两块硬盘,可以有效提高硬盘的性能和吞吐量,但没有数据的冗余和错误修复能力将多块硬盘通过硬件或 ...
- Linux学习第九课、磁盘容量配额、RAID磁盘冗余阵列
磁盘容量配额 Linux系统的设计初衷就是让许多人一起使用并执行各自的任务,从而成为多用户.多任务的操作系统.但是,硬件资源是固定且有限的,如果某些用户不断地在Linux系统上创建文件或者存放电影,硬 ...
- Linux磁盘管理工具RAID、Parted
一.RAID:磁盘冗余阵列 [RAID详解] https://blog.csdn.net/qq_41475058/article/details/89382997 1.核心关注点 RAID ( R ...
最新文章
- Cocos Creator 预制的使用模板(一般用于UI)
- ajax和promise的结合使用
- python乘法表左下变右上_vc++乘法表变换形式怎么变就是变成左上、右上三角形 左下、右下、等腰三角形 还有倒三角形,...
- mysql两种索引结构_19.Mysql索引结构及常见索引的区别
- java显式构造函数_C++中的显式构造函数
- java 检查bytebuf长度_Java学习笔记16-Netty缓冲区ByteBuf详解
- [导入]【翻译】WF从入门到精通(第十章):事件活动
- metricbeat监控多个linux_Azure 虚拟机内存利用率监控(2)
- 一加9R将推12+256GB新版本:骁龙870+120Hz高刷屏
- 在JavaScript中创建命名空间的几种写法
- 密钥怎么存储在数据库中
- Codeforces Round #532(Div. 2) B.Build a Contest
- Android第二十课 解决Logcat无法输出调试信息
- Charles 破解版安装图解
- AutoCAD2000命令详解
- 腾讯云人脸支付常见问题和解答,以及腾讯云人脸支付相关介绍
- Leetcode——495. Teemo Attacking
- java设置短信验证码过期时间_实现短信验证码有效时间
- php jwt token刷新方案,laravel JWT自动刷新 自定义验证器
- 算法设计之动态规划法
热门文章
- 两台电脑间大量数据拷贝的快捷方法
- WPF入门教程系列十五——WPF中的数据绑定(一)
- MFC中的几个常用类——CFileDialog
- .net 动软代码生成器
- win2003服务器 虚拟主机安全配置
- python表达式的值是 y 和n是什么意思_python中^是什么意思
- 清除nginx服务器网站缓存数据
- 联想拯救者y7000加内存条_关于2020款联想拯救者Y7000、R7000和Y7000P,r7000p选哪个好?看这里就对了...
- java numberformat 方法_Java NumberFormat parse()用法及代码示例
- python数字排序 循环_【python-leetcode448-循环排序】找到所有数组中消失的数字