对于计算机来说,核心部件有cpu 内存其中:cpu从内存中取得数据从而进行运算,因为内存是易失性设备,如果作成非易失性设备,代价是很是高昂的。可是因为cpu内部具备各级缓存,寄存器等等,因此内存的速度与cpu相比较是极其慢的。为了解决这一问题,咱们只好经过IO设备将外部硬盘链接进来。linux
在内存中,一部分用来运行内核,而另一部分是内核调用磁盘中存储的应用发起进程而占用的。不妨讲讲进程的运行过程,在应用发起进程后先被内核调用读取至内存中,因为内核自己就是一个应用程序,因此在其余进程读取至cpu以前,内核会先一步做为进程读取至cpu,然后读取须要运行某个进程的指令,此时,内核会从cpu退出到内存中,将此时须要运行的进程尝试装载至cpu。此时内核会与cpu保持链接,直至不须要运行这一进程,内核会把此进程从cpu中取出。以此内推,其他进程运行原理也如上述一致。固然,这只是比较简单的描述方式,真正的进程运行的机制远比上述的要复杂。web
在计算机主板上,能与外部存储设备链接的总线大概有如下几种: 接口类型 速率 IDE 133Mbps SATA 300Mbps SATA2 600Mbps SATA3 6Gps USB2.0 40Mbps USB3.0 480Mbs
# 1M=8Mbps
还有一种比较特殊的设备接口SCSI (Small computer System Interface),这种控制器内部装载的有cpu,因此当机械上的cpu须要读取磁盘中的文件时,会发送指令到SCSI中的cpu,此时机械上的cpu能够忽略这个工做,由SCSI中的cpu来完成此项工做,读取到目标文件后将此文件发送至内存中。再由内核发送至机械上的cpu,这种机制大大的加快了机械cpu的工做效率。
但不管何种方式,对于一个很是繁忙的服务器来说,都没法知足这种需求,此时,咱们应该提供更大、更快的IO存取设备,但一个设备不管如何也突破不了物理速率上限,这时候,咱们就须要将多个设备组合起来并行使用,这样一来,速率就会大大的提高。这种方式叫作设备集群缓存
事实上并非集群,只是组合多个设备来更快的完成同一个工做,简单来说,这种方式就好像在主板上又加了一个链接硬盘的控制器,只不过这个控制器并非用来链接SCSI、SATA等接口的硬盘,而是经过这个控制器链接另一个设备,这个设备能够将一个接口转换为多个接口,这里的多个接口能够接多个SATA设备,SCSI设备等,而在主机看来,主板只是识别链接了一个外部设备。这种控制器的与在设备之间的通讯法则与其余控制器也不尽相同,这种控制器叫作RAID控制器。安全
事实上在RAID以前有一种更昂贵的控制器芯片(SLED)速度比较快,存储能力也比较强,可是因为高昂的价格,一直处于一个尴尬的地位。1987年,美国加州大学伯克利分校一个教授研究出来一种更为廉价的磁盘存取阵列。用的是当时的IDE磁盘被称为廉价冗余磁盘阵列(RAID)。
如今RAID更多的被称为独立冗余磁盘阵列,要想了解RAID机制,必须先要了解条带化,咱们先举个例子,假若有120M的数据须要存取进磁盘中,数据在通过cpu处理事后,通过控制器分别分为4个30M的数据存进控制器链接的SATA设备等,而每个30M的数据链接在一块儿就好像造成了一个条带,条带化就是这样造成的。
这样一来,一块磁盘所能完成的工做一下提升了四倍,而这样将多个磁盘组合起来,组合成一个阵列,看成一个逻辑设备来使用的机制,咱们将这种机制称为RAID。服务器
经常使用的级别主要有如下几种: svg
0:仅条带化,性能提高读写能力提高,不提供冗余能力(备份)利用率 (ns) 1: 镜像模式,两块盘做为一块盘使用,储存相同的内容性能提高,(读写) 提供冗余能力利用率ns/2 4:校检码模式 5:轮流做为校检盘,性能提高(读写) 提供冗余能力 利用率(n-1/n)ns 50:轮流做为校检盘,且提供镜像盘,
事实上,真正的RAID是集成在主板上的一个控制器,有时候为了保证数据安全性,甚至在RAID加入小型cpu,电池等等,但这样极大的增长了成本,因此可使用软件来模拟硬件的方式来实现软RAID。性能
实现软RAID要用到*mdadm*这个命令,具体使用以下: # mdadm [mode] <raiddevice> [options] <component-devices> 其中经常使用的mode(模式化的命令): **建立模式:** —C:专用选项 -l:指定RAID级别 -n:指定设备个数 -a:自动为其建立其设备文件 -c:指定chunk(数据块)大小 -x:指定空闲盘个数 **管理模式:**经常使用的有: --add:往RAID阵列加入新的设备 --remove:移除磁盘 --fail:模拟磁盘损坏 监控模式: -F 增加模式: —G 装配模式: —A 查看RAID阵列的详细信息 mdadm -D /dev/md# 中止RAID阵列 mdadm -S /dev/md#
示例:用两块磁盘建立一个RAID0
①(准备工做):首先准备两块空闲的磁盘 使用#fdisk -l 查看磁盘列表
咱们发现有一个 sdb5 和 sdb6 分区 可是文件系统类型倒是linux LVM 咱们须要将其更改成linux raid auto类型。
使用# fdisk /dev/sdb 使用t选项修改其文件系统类型结果以下:
此时/dev/sdb下面的sdb5和sdb6类型已经修改成linux raid auto文件系统了
务必让系统重读一下文件系统列表执行命令 # partprobe /dev/sdb
#cat /pro/partitions 查看列表
此时sdb5和sdb6已经被内核识别。code
②:正式建立RAID #mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb{5,6} #在/dev下建立名为md0的RAID设备,-l指定RAID级别为RAID0,-n指定由2个设备(sdb5,sdb6)建立。执行以下:
此时RAID0建立成功。component
③:格式化RAID设备(建立文件系统),此处为ext2,使用#mke2fs
④:挂载文件系统(将其挂载到/mnt目录下面),使用命令#mount /dev/md0 /mnt
查看详细的RAID设备信息:
#mdadm -D(–detail) /dev/# #表示设备名称
xml
模拟磁盘损坏: #mdadm /dev/md# –fail /dev/# (#表示模拟损坏的是哪一个磁盘) 移除损坏磁盘: #mdadm /dev/md# –remove(-r) /dev/# (#表示移除的是哪一个磁盘) 加入新盘 #mdadm /dev/md# –add(-a) /dev/# (#表示新加的是哪一个磁盘) 若是建立的RAID模式为RAID1时,当某一个RAID阵列中的磁盘不能正常工做后,若是系统中有空闲的的磁盘块的话,空闲的磁盘块会自动的顶替已损坏的磁盘块。 设置自动装配: # mdadm -D –scan > /etc/mdadm.conf 当咱们使用#mdadm -S /dev/md# 时停用当前RAID阵列,保存自动装配的配置文件后直接使用#mdadm -A /dev/md# 便可再次启用该RAID阵列。