介绍一个新概念,RAID,这也是大学的时候的学的东西了,一直很少在工作中使用,有点忘记,今天复习更新一下。分享给大家。
保存数据安全,大家都知道备份。 数据安全其中一个是物理上的方法。就是raid。
RAID 简介
独立硬盘冗余阵列(RAID, Redundant Array of Independent Disks),旧称廉价磁盘冗余阵列(Redundant Array of Inexpensive Disks),简称磁盘阵列。其基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵、容量巨大的硬盘。根据选择的版本不同,RAID比单颗硬盘有以下一个或多个方面的好处:增强数据集成度,增强容错功能,增加处理量或容量。另外,磁盘阵列对于电脑来说,看起来就像一个单独的硬盘或逻辑存储单元。分为RAID-0,RAID-1,RAID-1E,RAID-5,RAID-6,RAID-7,RAID-10,RAID-50,RAID-60。
简单来说,RAID把多个硬盘组合成为一个逻辑扇区,因此,操作系统只会把它当作一个硬盘。RAID常被用在服务器电脑上,并且常使用完全相同的硬盘作为组合。由于硬盘价格的不断下降与RAID功能更加有效地与主板集成,它也成为玩家的一个选择,特别是需要大容量存储空间的工作,如:视频与音频制作。
最初的RAID分成不同的档次,每种档次都有其理论上的优缺点,不同的档次在两个目标间获取平衡,分别是增加数据可靠性以及增加存储器(群)读写性能。这些年来,出现对于RAID观念不同的应用。
磁盘阵列(Redundant Arrays of Independent Disks,RAID),
有“独立磁盘构成的具有冗余能力的阵列”之意`
概念
条带化技术:
条带(stripe)是把连续的数据分割成相同大小的数据块,把每段数据分别写入到阵列中的不同磁盘上的方法。简单的说,条带是一种将多个磁盘驱动器合并为一个卷的方法。 许多情况下,这是通过硬件控制器来完成的。
磁盘镜像技术(mirror)
校验技术(海明吗)
使用校验码(速度和数据可用性都得到提升)
比例n-1/n
raid就是利用这两种技术进行组合的。
RAID level:
级别:仅代表磁盘的组织结构不同,没有上下之分。
RAID 0
RAID 0亦称为带区集。它将两个以上的磁盘并联起来,成为一个大容量的磁盘。在存放数据时,分段后分散存储在这些磁盘中,因为读写时都可以并行处理,所以在所有的级别中,RAID 0的速度是最快的。但是RAID 0既没有冗余功能,也不具备容错能力,如果一个磁盘(物理)损坏,所有数据都会丢失,危险程度与JBOD相当。
RAID 1
两组以上的N个磁盘相互作镜像,在一些多线程操作系统中能有很好的读取速度,理论上读取速度等于硬盘数量的倍数,与RAID 0相同。另外写入速度有微小的降低。只要一个磁盘正常即可维持运作,可靠性最高。其原理为在主硬盘上存放数据的同时也在镜像硬盘上写一样的数据。当主硬盘(物理)损坏时,镜像硬盘则代替主硬盘的工作。因为有镜像硬盘做数据备份,所以RAID 1的数据安全性在所有的RAID级别上来说是最好的。但无论用多少磁盘做RAID 1,仅算一个磁盘的容量,是所有RAID中磁盘利用率最低的一个级别。
如果用两个不同大小的磁盘建RAID 1,可用空间为较小的那个磁盘,较大的磁盘多出来的空间也可以分区成一个区来使用,不会造成浪费。
RAID 2
这是RAID 0的改良版,以汉明码(Hamming Code)的方式将数据进行编码后分区为独立的比特,并将数据分别写入硬盘中。因为在数据中加入了错误修正码(ECC,Error Correction Code),所以数据整体的容量会比原始数据大一些,RAID2最少要三台磁盘驱动器方能运作。
RAID 3
采用Bit-interleaving(数据交错存储)技术,它需要通过编码再将数据比特分割后分别存在硬盘中,而将同比特检查后单独存在一个硬盘中,但由于数据内的比特分散在不同的硬盘上,因此就算要读取一小段数据资料都可能需要所有的硬盘进行工作,所以这种规格比较适于读取大量数据时使用。
RAID 4
它与RAID 3不同的是它在分区时是以区块为单位分别存在硬盘中,但每次的数据访问都必须从同比特检查的那个硬盘中取出对应的同比特数据进行核对,由于过于频繁的使用,所以对硬盘的损耗可能会提高。(块交织技术,Block interleaving)
RAID 5
RAID Level 5是一种储存性能、数据安全和存储成本兼顾的存储解决方案。它使用的是Disk Striping(硬盘分区)技术。RAID 5至少需要三块硬盘,RAID 5不是对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后,可以利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。RAID 5可以理解为是RAID 0和RAID 1的折衷方案。RAID 5可以为系统提供数据安全保障,但保障程度要比镜像低而磁盘空间利用率要比镜像高。RAID 5具有和RAID 0相近似的数据读取速度,只是因为多了一个奇偶校验信息,写入数据的速度相对单独写入一块硬盘的速度略慢,若使用“回写缓存”可以让性能改善不少。同时由于多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较便宜。
RAID 6
与RAID 5相比,RAID 6增加第二个独立的奇偶校验信息块。两个独立的奇偶系统使用不同的算法,数据的可靠性非常高,任意两块磁盘同时失效时不会影响数据完整性。RAID 6需要分配给奇偶校验信息更大的磁盘空间和额外的校验计算,相对于RAID 5有更大的IO操作量和计算量,其“写性能”强烈取决于具体的实现方案,因此RAID6通常不会通过软件方式来实现,而更可能通过硬件/固件方式实现。
同一数组中最多容许两个磁盘损坏。更换新磁盘后,数据将会重新算出并写入新的磁盘中。依照设计理论,RAID 6必须具备四个以上的磁盘才能生效。
特点:
0:表示条带
性能提升:读写性能都提升了
冗余能力(容错能力)未提升
空间利用率:ns
1:表示镜像
性能表现:写性能下降,读性能提升
冗余能力(容错能力)提升
空间利用率:1/2
01:先条带再镜像 RAID 1+0
10:先镜像再条带 RAID 0+1
4:校验码(校验码盘读取的性能压力很大)
5:(轮换做为校验码盘)
性能表现:读写提升
冗余能力(容错能力)提升
空间利用率:n-1/n
6:两次校验,两个校验盘
50:先5后0
性能表现:读写提升
冗余能力(容错能力:有
空间利用率:n-1/n
因素
- 速度
- 数据本身的可用性
- 安全性
混合RAID
Raid10
RAID 01
通过不同的组合达到,容量和性能的最大化,同时还控制成本。
JBOD( Just a Bunch Of Disks)在分类上,JBOD并不是RAID的档次。由于并没有规范,市场上有两类主流的做法
使用单独的链接端口如SATA、USB或1394同时控制多个各别独立的硬盘,使用这种模式通常是较高级的设备,还具备有RAID的功能,不需要依靠JBOD达到合并逻辑扇区的目的。
只是将多个硬盘空间合并成一个大的逻辑硬盘,没有错误备援机制。
数据的存放机制是由第一颗硬盘开始依序往后存放,即操作系统看到的是一个大硬盘(由许多小硬盘组成的)。但如果硬盘损毁,则该颗硬盘上的所有数据将无法救回。若第一颗硬盘损坏,通常无法作救援(因为大部分文件系统将磁盘分区表(partition table)存在磁盘前端,即第一颗),失去磁盘分区表即失去一切数据,若遭遇磁盘阵列数据或硬盘出错的状况,危险程度较RAID 0更剧。它的好处是不会像RAID,每次访问都要读写全部硬盘。但在部分的JBOD数据恢复实践中,可以恢复未损毁之硬盘上的数据。同时,因为每次读写操作只作用于单一硬盘,JBOD的传输速率与I/O表现均与单颗硬盘无异。
jbod:多个小的磁盘组合成一个大的磁盘。着眼于容量。
hadoop
HDFS:分布式文件系统
性能表现优秀
硬盘总线类型
IDE(ATA)133Mbps,并行
SATA:6Gbps,串行
USB:串行
SCSI:ultraSCSI,320Mbps,并行8,7target;16,15target
initiator
lun:logical unit number
SAS:2.5转速块,目标(可以连接一个盘的)
RAID技术
硬件RAID
硬件控制器,接口,硬盘阵列
RAID控制芯片(cpu控制读写,也可提供内存),插槽、硬盘(BIOS界面进行配置)
RAID驱动程序
操作系统必须识别RAID
/dev/sd
带内存的性能好,自带电池
软件RAID
内核的
中间模拟一个
主板,上有四块磁盘
操作系统,数据
可以识别,/dev/sdb ,sdc,sdd,sde
内核要支持软件RAID
Md:multi disk
MD,模拟一个raid
逻辑RAID
/dev/md0(表示不同的RAID的设备)
/dev/md
软件模拟硬件
raid模块
fD:
安装软件
sudo apt-get install mdadm
man mdadm
MDADM(8) System Manager's Manual MDADM(8)
NAME
mdadm - manage MD devices aka Linux Software RAID
SYNOPSIS
mdadm [mode] <raiddevice> [options] <component-devices>
DESCRIPTION
RAID devices are virtual devices created from two or more real block devices. This allows multiple devices (typically disk drives or partitions thereof) to be combined into a single device to hold
(for example) a single filesystem. Some RAID levels include redundancy and so can survive some degree of device failure.
Linux Software RAID devices are implemented through the md (Multiple Devices) device driver.
Currently, Linux supports LINEAR md devices, RAID0 (striping), RAID1 (mirroring), RAID4, RAID5, RAID6, RAID10, MULTIPATH, FAULTY, and CONTAINER.
MULTIPATH is not a Software RAID mechanism, but does involve multiple devices: each device is a path to one common physical storage device. New installations should not use md/multipath as it is not
well supported and has no ongoing development. Use the Device Mapper based multipath-tools instead.
FAULTY is also not true RAID, and it only involves one device. It provides a layer over a true device that can be used to inject faults.
CONTAINER is different again. A CONTAINER is a collection of devices that are managed as a set. This is similar to the set of devices connected to a hardware RAID controller. The set of devices may
contain a number of different RAID arrays each utilising some (or all) of the blocks from a number of the devices in the set. For example, two devices in a 5-device set might form a RAID1 using the
whole devices. The remaining three might have a RAID5 over the first half of each device, and a RAID0 over the second half.
With a CONTAINER, there is one set of metadata that describes all of the arrays in the container. So when mdadm creates a CONTAINER device, the device just represents the metadata. Other normal
arrays (RAID1 etc) can be created inside the container.
✘ ubuntu@youdi /dev mdadm --help
mdadm is used for building, managing, and monitoring
Linux md devices (aka RAID arrays)
Usage: mdadm --create device options...
Create a new array from unused devices.
mdadm --assemble device options...
Assemble a previously created array.
mdadm --build device options...
Create or assemble an array without metadata.
mdadm --manage device options...
make changes to an existing array.
mdadm --misc options... devices
report on or modify various md related devices.
mdadm --grow options device
resize/reshape an active array
mdadm --incremental device
add/remove a device to/from an array as appropriate
mdadm --monitor options...
Monitor one or more array for significant changes.
mdadm device options...
Shorthand for --manage.
Any parameter that does not start with '-' is treated as a device name
or, for --examine-bitmap, a file name.
The first such name is often the name of an md device. Subsequent
names are often names of component devices.
For detailed help on the above major modes use --help after the mode
e.g.
mdadm --assemble --help
For general help on options use
mdadm --help-options
内核模块:md
mdadm:管理器,将任何块设备做成RAID
mdadm - manage MD devices aka Linux Software RAID
模式化的命令:
创建模式:创建RAID设备
-C 设备
专用选项:
-l:级别
-n:设备个数
-a {yes|no}:自动为其创建设备文件
-c:chunk大小 2^n 默认为64k
-x # : 指定空闲盘个数
管理模式:管理,拆散,
--add,--del ,--fail
监控模式:监控
-F
装配模式:换系统后,使用RAID
-A
mdadm -A /dev/md1 /dev/sdb3 /dev/sdb2
装配过程
增长模式:添加磁盘
-G
-A, --assemble
Assemble a pre-existing array.
-C, --create
Create a new array.
-F, --follow, --monitor
Select Monitor mode.
mdadm -D /dev/md#
--detail 详细显示磁盘阵列的信息。
mdadm -f --fail --set
mdadm /dev/md# --fail /dev/sda7
md - Multiple Device driver aka Linux Software RAID
RAID 0
2G
4:512M
2:1G
RAID 1/2
2G:
2:2G
额外的知识
/proc/partitions
/proc/mdstat 显示系统上所有启用的md设备。
创建md
mdamd
格式化md设备
挂载
mdadm -C /dev/md1 -a yes -n 2 -l 1 /dev/sdb1 /dev/sdb3
cat /proc/mdstat
镜像 同步
fdisk -l 查看
挂载使用
/etc/mdstats
模拟磁盘损坏
-f --fail
mdadm -D /dev/md1 详细显示磁盘阵列的信息
md
停止阵列:
mdadm -S /dev/md1
磁盘坏掉后会发邮件
空闲盘:冗余盘
热空闲
watch - execute a program periodically, showing output fullscreen
每隔一段时间就在屏幕显示一下。
周期性执行指定命令,并以全屏方式显示结果。
-n # :指定周期长度,单位为秒。默认为2
格式: watch -n # `command`
mdadm -D --scan 显示系统上所有的md设备。
>/etc/mdadm.conf
装配使用
将当前raid信息保存到/etc/mdadm.conf,以便以后进行装配。
Raid5:校验
2G: 3,1G
mkfs -E stride=# 格式化时,条带大小
mkfs -t ext3 -E stride=
mdadm:管理工具
md:是内核模块支持的。