本文先介绍了cpu上下文切换的基础知识,以及上下文切换的类型(进程,线程等切换)。然后介绍了如何查看cpu切换次数的工具和指标的解释。同时对日常分析种cpu过高的情况下如何分析和定位的方法做了一定的介绍,使用一个简单的案例进行分析,先用top,pidstat等工具找出占用过高的进程id,然后通过分析到底是用户态cpu过高,还是内核态cpu过高,并用perf 定位到具体的调用函数。(来自极客时间课程学习笔记)
1、多任务竞争CPU,cpu变换任务的时候进行CPU上下文切换(context switch)。CPU执行任务有4种方式:进程、线程、或者硬件通过触发信号导致中断的调用。
2、当切换任务的时候,需要记录任务当前的状态和获取下一任务的信息和地址(指针),这就是上下文的内容。因此,上下文是指某一时间点CPU寄存器(CPU register)和程序计数器(PC)的内容, 广义上还包括内存中进程的虚拟地址映射信息
3、上下文切换的过程:
4、根据任务的执行形式,相应的下上文切换,有进程上下文切换、线程上下文切换、以及中断上下文切换三类。
5、进程和线程的区别:
进程是资源分配和执行的基本单位;线程是任务调度和运行的基本单位。线程没有资源,进程给指针提供虚拟内存、栈、变量等共享资源,而线程可以共享进程的资源。
6、进程上下文切换:是指从一个进程切换到另一个进程。
(1)进程运行态为内核运行态和进程运行态。内核空间态资源包括内核的堆栈、寄存器等;用户空间态资源包括虚拟内存、栈、变量、正文、数据等
(2)系统调用(软中断)在内核态完成的,需要进行2次CPU上下文切换(用户空间-->内核空间-->用户空间),不涉及用户态资源,也不会切换进程。
(3)进程是由内核来管理和调度的,进程的切换只能发生在内核态。所以,进程的上下文不仅包括了用户空间的资源,也包括内核空间资源。
(4)进程的上下文切换过程:
(5)、下列将会触发进程上下文切换的场景:
7、线程上下文切换:
8、中断上下文切换
快速响应硬件的事件,中断处理会打断进程的正常调度和执行。同一CPU内,硬件中断优先级高于进程。切换过程类似于系统调用的时候,不涉及到用户运行态资源。但大量的中断上下文切换同样可能引发性能问题。
重点关注信息:
系统的就绪队列过长,也就是正在运行和等待 CPU 的进程数过多,导致了大量的上下文切换,而上下文切换又导致了系统 CPU 的占用率升高。
这个结果中有两列内容是我们的重点关注对象。一个是 cswch ,表示每秒自愿上下文切换(voluntary context switches)的次数,另一个则是 nvcswch ,表示每秒非自愿上下文切换(non voluntary context switches)的次数。
linux的中断使用情况可以从 /proc/interrupts 这个只读文件中读取。/proc 实际上是 Linux 的一个虚拟文件系统,用于内核空间与用户空间之间的通信。/proc/interrupts 就是这种通信机制的一部分,提供了一个只读的中断使用情况。
重调度中断(RES),这个中断类型表示,唤醒空闲状态的 CPU 来调度新的任务运行。这是多处理器系统(SMP)中,调度器用来分散任务到不同 CPU 的机制,通常也被称为处理器间中断(Inter-Processor Interrupts,IPI)。
这个数值其实取决于系统本身的 CPU 性能。如果系统的上下文切换次数比较稳定,那么从数百到一万以内,都应该算是正常的。但当上下文切换次数超过一万次,或者切换次数出现数量级的增长时,就很可能已经出现了性能问题。这时,需要根据上下文切换的类型,再做具体分析。
比方说:
首先通过uptime查看系统负载,然后使用mpstat结合pidstat来初步判断到底是cpu计算量大还是进程争抢过大或者是io过多,接着使用vmstat分析切换次数,以及切换类型,来进一步判断到底是io过多导致问题还是进程争抢激烈导致问题。
CPU 使用率相关的重要指标:
性能分析工具给出的都是间隔一段时间的平均 CPU 使用率,所以要注意间隔时间的设置,特别是用多个工具对比分析时,你一定要保证它们用的是相同的间隔时间。比如,对比一下 top 和 ps 这两个工具报告的 CPU 使用率,默认的结果很可能不一样,因为 top 默认使用 3 秒时间间隔,而 ps 使用的却是进程的整个生命周期。
top 和 ps 是最常用的性能分析工具:
这个输出结果中,第三行 %Cpu 就是系统的 CPU 使用率,top 默认显示的是所有 CPU 的平均值,这个时候你只需要按下数字 1 ,就可以切换到每个 CPU 的使用率了。继续往下看,空白行之后是进程的实时信息,每个进程都有一个 %CPU 列,表示进程的 CPU 使用率。它是用户态和内核态 CPU 使用率的总和,包括进程用户空间使用的 CPU、通过系统调用执行的内核空间 CPU 、以及在就绪队列等待运行的 CPU。在虚拟化环境中,它还包括了运行虚拟机占用的 CPU。
预先安装 stress 和 sysstat 包,如 apt install stress sysstat。
stress 是一个 Linux 系统压力测试工具,这里我们用作异常进程模拟平均负载升高的场景。而 sysstat 包含了常用的 Linux 性能工具,用来监控和分析系统的性能。我们的案例会用到这个包的两个命令 mpstat 和 pidstat。
下面的 pidstat 命令,就间隔 1 秒展示了进程的 5 组 CPU 使用率,
包括:
perf 是 Linux 2631 以后内置的性能分析工具。它以性能事件采样为基础,不仅可以分析系统的各种事件和内核性能,还可以用来分析指定应用程序的性能问题。
第一种常见用法是 perf top,类似于 top,它能够实时显示占用 CPU 时钟最多的函数或者指令,因此可以用来查找热点函数,使用界面如下所示:
输出结果中,第一行包含三个数据,分别是采样数(Samples)如2K、事件类型(event)如cpu-clock:pppH和事件总数量(Event count)如:371909314。
第二种常见用法,也就是 perf record 和 perf report。 perf top 虽然实时展示了系统的性能信息,但它的缺点是并不保存数据,也就无法用于离线或者后续的分析。而 perf record 则提供了保存数据的功能,保存后的数据,需要你用 perf report 解析展示。
1启动docker 运行进程:
2ab工具测试服务器性能
ab(apache bench)是一个常用的 >
虚拟化(Virtualization)技术最早出现在20世纪60年代的IBM大型机系统,在70年代的System 370系列中逐渐流行起来。这些机器通过一种叫虚拟机监控器(Virtual Machine Monitor,VMM)的程序在物理硬件之上生成许多可以运行独立 *** 作系统软件的虚拟机(Virtual Machine)实例。
随着近年计算机技术的进步,无论是服务器市场、桌面市场,还是嵌入式市场,处理器的频率和核心数目都出现了巨大的进步,从而带来了处理能力的迅速增长,使得虚拟化技术再次迅速发展起来,并从最初的的 裸机虚拟化 技术开始,演化出 主机虚拟化 、 混合虚拟化 等更复杂的虚拟化模型,并在此基础山发展出了当下最热门的 云虚拟化 技术,极大地降低了IT成本,增强了系统的安全性,可靠性和扩展性。
在计算机领域,虚拟化是一个广义的概念。简而言之,虚拟化是指对计算机资源的抽象。虚拟机最初被Popek和Goldberg定义为物理机器的一个或多个隔离的有效复制[16]。JE Smith和RaviNair给出了一个更具体化的定义:虚拟机是通过在物理平台上添加的软件给出的一个或多个不同的平台。一个虚拟机可以有一个 *** 作系统和指令集,或者两者都有,可以不同于底下的真实的硬件。
虚拟化技术的本质在于对计算机系统软硬件资源的划分和抽象。计算机系统的高度复杂性是通过各种层次的抽象来控制,每一层都通过层与层之间的接口对底层进行抽象,隐藏底层具体实现而向上层提供较简单的接口。
计算机系统包括五个抽象层:硬件抽象层,指令集架构层, *** 作系统层,库函数层和应用程序层。相应地,虚拟化可以在每个抽象层来实现。无论是在哪个抽象层实现,其本质都是一样的,那就是它使用某些手段来管理分配底层资源,并将底层资源反映给上层。 *** 作系统上传统的进程模型就利用了虚拟化的思想, *** 作系统通过对物理内存的划分和抽象,给每个进程呈现出远超出物理内存空间的4G空间,并且使得每个进程实现了有效的隔离,从而一个进程的崩溃不会影响到其它进程的正常运行。
虚拟化平台是 *** 作系统层虚拟化的实现。在系统虚拟化中,虚拟机(VM)是在一个硬件平台上模拟一个或者多个独立的和实际底层硬件相同的执行环境。每个虚拟的执行环境里面可以运行不同的 *** 作系统,即客户机 *** 作系统(Guest OS)。Guest OS通过虚拟机监控器提供的抽象层来实现对物理资源的访问和 *** 作。目前存在各种各样的虚拟机,但基本上所有虚拟机都基于"计算机硬件 + 虚拟机监视器(VMM)+ 客户机 *** 作系统(Guest OS)"的模型。
虚拟机监控器是计算机硬件和Guest OS之间的一个抽象层,它运行在最高特权级,负责将底层硬件资源加以抽象,提供给上层运行的多个虚拟机使用,并且为上层的虚拟机提供多个隔离的执行环境,使得每个虚拟机都以为自己在独占整个计算机资源。虚拟机监控器可以将运行在不同物理机器上的 *** 作系统和应用程序合并到同一台物理机器上运行,减少了管理成本和能源损耗,并且便于系统的迁移。
根据虚拟机监视器在虚拟化平台中的位置,可以将其分为以下3种模型:
虚拟机监视器采用的虚拟化技术分为以下4种:
嵌入式系统是虚拟化技术的新方向和重要分支。
嵌入式处理器的迅速发展使得嵌入式系统在更多方面得到了广泛的应用。而嵌入式设备应用的普及导致其对软硬件的需求也越来越高。硬件体现在不断增强的计算能力和多种多样的外部设备,软件体现在愈加复杂的新功能特性。这些问题导致嵌入式开发变得复杂和软件维护成本的增加。原来的SMP和AMP等多核 *** 作系统方案无法满足安全隔离、硬件资源分配和复用等日益复杂的要求。因此,服务器和桌面系统上的虚拟化技术被引入了嵌入式 *** 作系统领域,并借助于硬件辅助虚拟化技术,解决了虚拟化技术带来的便利性与嵌入式系统得实时性要求之间的矛盾,使得以Linux KVM、Xen等嵌入式虚拟化平台得到了迅速发展。
虚拟化平台在硬件和 *** 作系统之间引入了一个新的抽象层次,称为虚拟机监控器(Virtual Machine Monitor,简称VMM),由它接管所有的硬件,并管理运行其上的所有虚拟机(Virtual Machine,简称VM),而每个虚拟机中可以运行各自的 *** 作系统。
虚拟化的优点在于实现了资源的重用,使得一个物理平台上面可以同时运行多个不同的 *** 作系统。通过利用系统虚拟化技术,可以在嵌入式设备中同时运行实时 *** 作系统和通用 *** 作系统,分别发挥各自的优势——实时 *** 作系统处理实时任务,通用 *** 作系统提供丰富的应用程序,它们彼此分工协作,发挥各自的优势,同时满足各种不同的需求。
但与此同时,虚拟化平台技术也引入了新问题。不少嵌入式系统对实时性能都有比较高的要求,而虚拟机与虚拟机监控器间的切换导致处理器 *** 作模式的切换和上下文的切换,会增加系统的响应时间,从而增加实时系统的时间不确定性,影响了实时系统的性能。虚拟机对运行于其上的应用程序的隔离又增加了虚拟机监控器的精确调度的难度,目前的虚拟机监控器也只能基于虚拟机的优先级或者时间片分配而进行粗粒度的调度。此外,现存的虚拟化平台技术主要基于X86等通用计算机平台,对ARM、MIPS等嵌入式处理器支持不够,在功能性和稳定性上都有所缺失。
综上所述,虚拟化可以解决嵌入式系统目前面临的不少问题,带来很多方便,但由于现存虚拟化解决方案(如KVM和XEN)在设计之初并没有考虑嵌入式系统的特殊需求,从导致功能性、实时性、稳定性都有所缺失。
服务器服务器是指在网络环境下运行相应的应用软件,为网上用户提供共享信息资源和各种服务的一种高性能计算机,英文名称叫做SERVER。服务器既然是一种高性能的计算机,它的构成肯定就与我们平常所用的电脑(PC)有很多相似之处,诸如有CPU(中央处理器)、内存、硬盘、各种总线等等,只不过它是能够提供各种共享服务(网络、Web应用、数据库、文件、打印等)以及其他方面的高性能应用,它的高性能主要体现在高速度的运算能力、长时间的可靠运行、强大的外部数据吞吐能力等方面, 是网络的中枢和信息化的核心。由于服务器是针对具体的网络应用特别制定的,因而服务器又与微机(普通PC)在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面存在很大的区别。而最大的差异就是在多用户多任务环境下的可靠性上。用PC机当作服务器的用户一定都曾经历过突然的停机、意外的网络中断、不时的丢失存储数据等事件,这都是因为PC机的设计制造从来没有保证过多用户多任务环境下的可靠性,而一旦发生严重故障,其所带来的经济损失将是难以预料的。但一台服务器所面对的是整个网络的用户,需要7X24小时不间断工作,所以它必须具有极高的稳定性,另一方面,为了实现高速以满足众多用户的需求,服务器通过采用对称多处理器(SMP)安装、插入大量的高速内存来保证工作。它的主板可以同时安装几个甚至几十、上百个CPU(服务器所用CPU也不是普通的CPU,是厂商专门为服务器开发生产的)。内存方面当然也不一样,无论在内存容量,还是性能、技术等方面都有根本的不同。另外,服务器为了保证足够的安全性,还采用了大量普通电脑没有的技术,如冗余技术、系统备份、在线诊断技术、故障预报警技术、内存纠错技术、热插拔技术和远程诊断技术等等,使绝大多数故障能够在不停机的情况下得到及时的修复,具有极强的可管理性(man ability)。
通常,从所采用的CPU(中央处理器)来看,我们把服务器主要分为两类构架:
一部分是IA(Intel Architecture,Intel架构)架构服务器,又称CISC(Complex Instruction Set Computer复杂指令集)架构服务器,即通常我们所讲的PC服务器,它是基于PC机体系结构,使用Intel或与其兼容的处理器芯片的服务器,如联想的万全系列服务器,HP公司的Netserver系列服务器等。这类以"小、巧、稳"为特点的IA架构服务器凭借可靠的性能、低廉的价格,得到了更为广泛的应用,在互联网和局域网内更多的完成文件服务、打印服务、通讯服务、WEB服务、电子邮件服务、数据库服务、应用服务等主要应用,一般应用在中小公司机构或大企业的分支机构。目前在IA架构的服务器中全部采用Intel(英特尔)公司生产的CPU,从Intel生产CPU的历史来看,可以划分成两大系列:早期的80x86系列及现在的Pentium系列。早期的80x86系列可以包括:8088、8086、80286、80386、80486。自80486之后,Intel对自己的产品进行了重新命名,并进行注册,因此80486以后的产品形成了Pentium(奔腾)系列的CPU。Pentium系列的CPU目前包括:Pentium、Pentium MMX、Pentium Pro、PII、PII Xeon(至强)、PIII、PIII Xeon、P4 Xeon、Celeron2(赛扬)等。
另一部分是比IA服务器性能更高的服务器,即RISC(Reduced Instruction Set Computing精简指令集)架构服务器,这种RISC型号的CPU一般来讲在我们日常使用的电脑中是根本看不到的,它完全采用了与普通CPU不同的结构。使用RISC芯片并且主要采用UNIX *** 作系统的服务器,如Sun公司的SPARC、HP(惠普)公司的PA-RISC、DEC公司的Alpha芯片、SGI公司的MIPS等等。这类服务器通常价格都很昂贵,一般应用在证券、银行、邮电、保险等大公司大企业,作为网络的中枢神经,提供高性能的数据等各种服务。
目前,服务器的市场竞争非常激烈,国外有IBM、HP(惠普)、DELL(戴尔)、SUN等著名厂商,国内有联想、浪潮、曙光等一线厂商都提供不同级别的服务器产品,满足不同的用户的需求。 1按应用层次划分为入门级服务器、工作组级服务器、部门级服务器和企业级服务器四类。
入门级服务器
入门级服务器通常只使用一块CPU,并根据需要配置相应的内存(如256MB)和大容量IDE硬盘,必要时也会采用IDE RAID(一种磁盘阵列技术,主要目的是保证数据的可靠性和可恢复性)进行数据保护。入门级服务器主要是针对基于Windows NT,NetWare等网络 *** 作系统的用户,可以满足办公室型的中小型网络用户的文件共享、打印服务、数据处理、Internet接入及简单数据库应用的需求,也可以在小范围内完成诸如E-mail、 Proxy 、DNS等服务。
工作组级服务器
工作组级服务器一般支持1至2个PⅢ处理器或单颗P4(奔腾4)处理器,可支持大容量的ECC(一种内存技术,多用于服务器内存)内存,功能全面。可管理性强、且易于维护,具备了小型服务器所必备的各种特性,如采用SCSI(一种总线接口技术)总线的I/O(输入/输出)系统,SMP对称多处理器结构、可选装RAID、热插拔硬盘、热插拔电源等,具有高可用性特性。适用于为中小企业提供Web、Mail等服务,也能够用于学校等教育部门的数字校园网、多媒体教室的建设等。
部门级服务器
部门级服务器通常可以支持2至4个PⅢ Xeon(至强)处理器,具有较高的可靠性、可用性、可扩展性和可管理性。首先,集成了大量的监测及管理电路,具有全面的服务器管理能力,可监测如温度、电压、风扇、机箱等状态参数。此外,结合服务器管理软件,可以使管理人员及时了解服务器的工作状况。同时,大多数部门级服务器具有优良的系统扩展性,当用户在业务量迅速增大时能够及时在线升级系统,可保护用户的投资。目前,部门级服务器是企业网络中分散的各基层数据采集单位与最高层数据中心保持顺利连通的必要环节。适合中型企业(如金融、邮电等行业)作为数据中心、Web站点等应用。
企业级服务器
企业级服务器属于高档服务器,普遍可支持4至8个PIII Xeon(至强)或P4 Xeon(至强)处理器,拥有独立的双PCI通道和内存扩展板设计,具有高内存带宽,大容量热插拔硬盘和热插拔电源,具有超强的数据处理能力。这类产品具有高度的容错能力、优异的扩展性能和系统性能、极长的系统连续运行时间,能在很大程度上保护用户的投资。可作为大型企业级网络的数据库服务器。
目前,企业级服务器主要适用于需要处理大量数据、高处理速度和对可靠性要求极高的大型企业和重要行业(如金融、证券、交通、邮电、通信等行业),可用于提供ERP(企业资源配置)、电子商务、OA(办公自动化)等服务。如Dell的PowerEdge 4600服务器,标准配置为24GHz Intel Xeon处理器,最大支持12GB的内存。此外,采用了Server Works GC-HE芯片组,支持2至4路Xeon处理器。集成了RAID控制器并配备了128MB缓存,可以为用户提供0、1、5、10四个级别的RAID,最大可以支持10个热插拔硬盘并提供730GB的磁盘存储空间。
由于是面向企业级应用,所在在可维护性以及冗余性能上有其独到的地方,例如配备了7个PCI-X插槽(其中6个支持热插拔),而且不需任何工具即可对冗余风扇、电源以及PCI-X进行安装和更换。
2按服务器按用途划分为通用型服务器和专用型服务器两类。
通用型服务器
通用型服务器是没有为某种特殊服务专门设计的、可以提供各种服务功能的服务器,当前大多数服务器是通用型服务器。这类服务器因为不是专为某一功能而设计,所以在设计时就要兼顾多方面的应用需要,服务器的结构就相对较为复杂,而且要求性能较高,当然在价格上也就更贵些。
专用型服务器
专用型(或称“功能型”)服务器是专门为某一种或某几种功能专门设计的服务器。在某些方面与通用型服务器不同。如光盘镜像服务器主要是用来存放光盘镜像文件的,在服务器性能上也就需要具有相应的功能与之相适应。光盘镜像服务器需要配备大容量、高速的硬盘以及光盘镜像软件。FTP服务器主要用于在网上(包括Intranet和Internet)进行文件传输,这就要求服务器在硬盘稳定性、存取速度、I/O(输入/输出)带宽方面具有明显优势。而E-mail服务器则主要是要求服务器配置高速宽带上网工具,硬盘容量要大等。这些功能型的服务器的性能要求比较低,因为它只需要满足某些需要的功能应用即可,所以结构比较简单,采用单CPU结构即可;在稳定性、扩展性等方面要求不高,价格也便宜许多,相当于2台左右的高性能计算机价格。HP的一款Web服务器HP access server,它采用的是PIII113Gbit/s左右的CPU,内存标准配置也只有128MB/256MB,与一台性能较好的普通计算机差不多,但在某些方它还是具有PC机无可替代的优势。
4按服务器的机箱结构来划分,可以把服务器划分为“台式服务器”、“机架式服务器”、“机柜式服务器”和“刀片式服务器”四类。
台式服务器
台式服务器也称为“塔式服务器”。有的台式服务器采用大小与普通立式计算机大致相当的机箱,有的采用大容量的机箱,像个硕大的柜子。低档服务器由于功能较弱,整个服务器的内部结构比较简单,所以机箱不大,都采用台式机箱结构。这里所介绍的台式不是平时普通计算机中的台式,立式机箱也属于台式机范围,目前这类服务器在整个服务器市场中占有相当大的份额。
对于信息服务企业(如ISP/ICP/ISV/IDC)而言,选择服务器时首先要考虑服务器的体积、功耗、发热量等物理参数,因为信息服务企业通常使用大型专用机房统一部署和管理大量的服务器资源,机房通常设有严密的保安措施、良好的冷却系统、多重备份的供电系统,其机房的造价相当昂贵。如何在有限的空间内部署更多的服务器直接关系到企业的服务成本,通常选用机械尺寸符合19英寸工业标准的机架式服务器。机架式服务器也有多种规格,例如1U(445cm高)、2U、4U、6U、8U等。通常1U的机架式服务器最节省空间,但性能和可扩展性较差,适合一些业务相对固定的使用领域。4U以上的产品性能较高,可扩展性好,一般支持4个以上的高性能处理器和大量的标准热插拔部件。管理也十分方便,厂商通常提供人相应的管理和监控工具,适合大访问量的关键应用,但体积较大,空间利用率不高。
机柜式服务器
在一些高档企业服务器中由于内部结构复杂,内部设备较多,有的还具有许多不同的设备单元或几个服务器都放在一个机柜中,这种服务器就是机柜式服务器。
刀片式服务器
刀片式服务器是一种HAHD(High Availability High Density,高可用高密度)的低成本服务器平台,是专门为特殊应用行业和高密度计算机环境设计的,其中每一块“刀片”实际上就是一块系统母板,类似于一个个独立的服务器。在这种模式下,每一个母板运行自己的系统,服务于指定的不同用户群,相互之间没有关联。不过可以使用系统软件将这些母板集合成一个服务器集群。在集群模式下,所有的母板可以连接起来提供高速的网络环境,可以共享资源,为相同的用户群服务。当前市场上的刀片式服务器有两大类:一类主要为电信行业设计,接口标准和尺寸规格符合PICMG(PCI Industrial Computer Manufacturer's Group)1x或2x,未来还将推出符合PICMG 3x 的产品,采用相同标准的不同厂商的刀片和机柜在理论上可以互相兼容;另一类为通用计算设计,接口上可能采用了上述标准或厂商标准,但尺寸规格是厂商自定,注重性能价格比,目前属于这一类的产品居多。刀片式服务器目前最适合群集计算和IxP提供互联网服务。
RAID是英文Redundant Array of Independent Disks的缩写,翻译成中文意思是“独立磁盘冗余阵列”,有时也简称磁盘阵列(Disk Array)。
简单的说,RAID是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份技术。组成磁盘阵列的不同方式成为RAID级别(RAID Levels)。数据备份的功能是在用户数据一旦发生损坏后,利用备份信息可以使损坏数据得以恢复,从而保障了用户数据的安全性。在用户看起来,组成的磁盘组就像是一个硬盘,用户可以对它进行分区,格式化等等。总之,对磁盘阵列的 *** 作与单个硬盘一模一样。不同的是,磁盘阵列的存储速度要比单个硬盘高很多,而且可以提供自动数据备份。
RAID技术的两大特点:一是速度、二是安全,由于这两项优点,RAID技术早期被应用于高级服务器中的SCSI接口的硬盘系统中,随着近年计算机技术的发展,PC机的CPU的速度已进入GHz 时代。IDE接口的硬盘也不甘落后,相继推出了ATA66和ATA100硬盘。这就使得RAID技术被应用于中低档甚至个人PC机上成为可能。RAID通常是由在硬盘阵列塔中的RAID控制器或电脑中的RAID卡来实现的。
RAID技术经过不断的发展,现在已拥有了从 RAID 0 到 6 七种基本的RAID 级别。另外,还有一些基本RAID级别的组合形式,如RAID 10(RAID 0与RAID 1的组合),RAID 50(RAID 0与RAID 5的组合)等。不同RAID 级别代表着不同的存储性能、数据安全性和存储成本。但我们最为常用的是下面的几种RAID形式。
(1) RAID 0
RAID 0又称为Stripe(条带化)或Striping,它代表了所有RAID级别中最高的存储性能。RAID 0提高存储性能的原理是把连续的数据分散到多个磁盘上存取,这样,系统有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求。这种数据上的并行 *** 作可以充分利用总线的带宽,显著提高磁盘整体存取性能。
如图所示:系统向三个磁盘组成的逻辑硬盘(RADI 0 磁盘组)发出的I/O数据请求被转化为3项 *** 作,其中的每一项 *** 作都对应于一块物理硬盘。我们从图中可以清楚的看到通过建立RAID 0,原先顺序的数据请求被分散到所有的三块硬盘中同时执行。从理论上讲,三块硬盘的并行 *** 作使同一时间内磁盘读写速度提升了3倍。 但由于总线带宽等多种因素的影响,实际的提升速率肯定会低于理论值,但是,大量数据并行传输与串行传输比较,提速效果显著显然毋庸置疑。
RAID 0的缺点是不提供数据冗余,因此一旦用户数据损坏,损坏的数据将无法得到恢复。
RAID 0具有的特点,使其特别适用于对性能要求较高,而对数据安全不太在乎的领域,如图形工作站等。对于个人用户,RAID 0也是提高硬盘存储性能的绝佳选择。
(2) RAID 1
RAID 1又称为Mirror或Mirroring(镜像),它的宗旨是最大限度的保证用户数据的可用性和可修复性。 RAID 1的 *** 作方式是把用户写入硬盘的数据百分之百地自动复制到另外一个硬盘上。
当读取数据时,系统先从RAID 0的源盘读取数据,如果读取数据成功,则系统不去管备份盘上的数据;如果读取源盘数据失败,则系统自动转而读取备份盘上的数据,不会造成用户工作任务的中断。当然,我们应当及时地更换损坏的硬盘并利用备份数据重新建立Mirror,避免备份盘在发生损坏时,造成不可挽回的数据损失。
由于对存储的数据进行百分之百的备份,在所有RAID级别中,RAID 1提供最高的数据安全保障。同样,由于数据的百分之百备份,备份数据占了总存储空间的一半,因而Mirror(镜像)的磁盘空间利用率低,存储成本高。
Mirror虽不能提高存储性能,但由于其具有的高数据安全性,使其尤其适用于存放重要数据,如服务器和数据库存储等领域
(3) RAID 0+1
正如其名字一样RAID 0+1是RAID 0和RAID 1的组合形式,也称为RAID 10。
以四个磁盘组成的RAID 0+1为例,其数据存储方式如图所示:RAID 0+1是存储性能和数据安全兼顾的方案。它在提供与RAID 1一样的数据安全保障的同时,也提供了与RAID 0近似的存储性能。
由于RAID 0+1也通过数据的100%备份功能提供数据安全保障,因此RAID 0+1的磁盘空间利用率与RAID 1相同,存储成本高。
RAID 0+1的特点使其特别适用于既有大量数据需要存取,同时又对数据安全性要求严格的领域,如银行、金融、商业超市、仓储库房、各种档案管理等
(4) RAID 3
RAID 3是把数据分成多个“块”,按照一定的容错算法,存放在N+1个硬盘上,实际数据占用的有效空间为N个硬盘的空间总和,而第N+1个硬盘上存储的数据是校验容错信息,当这N+1个硬盘中的其中一个硬盘出现故障时,从其它N个硬盘中的数据也可以恢复原始数据,这样,仅使用这N个硬盘也可以带伤继续工作(如采集和回放素材),当更换一个新硬盘后,系统可以重新恢复完整的校验容错信息。由于在一个硬盘阵列中,多于一个硬盘同时出现故障率的几率很小,所以一般情况下,使用RAID3,安全性是可以得到保障的。与RAID0相比,RAID3在读写速度方面相对较慢。使用的容错算法和分块大小决定RAID使用的应用场合,在通常情况下,RAID3比较适合大文件类型且安全性要求较高的应用,如视频编辑、硬盘播出机、大型数据库等
(5) RAID 5
RAID 5 是一种存储性能、数据安全和存储成本兼顾的存储解决方案。 以四个硬盘组成的RAID 5为例,其数据存储方式如图4所示:图中,P0为D0,D1和D2的奇偶校验信息,其它以此类推。由图中可以看出,RAID 5不对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后,利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。
RAID 5可以理解为是RAID 0和RAID 1的折衷方案。RAID 5可以为系统提供数据安全保障,但保障程度要比Mirror低而磁盘空间利用率要比Mirror高。RAID 5具有和RAID 0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度比对单个磁盘进行写入 *** 作稍慢。同时由于多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较低
RAID级别的选择有三个主要因素:可用性(数据冗余)、性能和成本。如果不要求可用性,选择RAID0以获得最佳性能。如果可用性和性能是重要的而成本不是一个主要因素,则根据硬盘数量选择RAID 1。如果可用性、成本和性能都同样重要,则根据一般的数据传输和硬盘的数量选择RAID3、RAID5服务器品牌和电脑品牌都是一样的。几乎上所有电脑品牌都会生产服务器配件 像intel。iphone 生产家用电脑同时也会有服务器品牌机。 服务器太广了。各种行业会用不同的服务器配置。感兴趣的话点击此处,免费了解一下
塔式服务器应该是见得最多,也最容易理解的一种服务器结构类型,因为它的外形以及结构都跟我们平时使用的立式PC差不多,当然,由于服务器的主板扩展性较强、插槽也多出一堆,所以个头比普通主板大一些,因此塔式服务器的主机机箱也比标准的ATX机箱要大,一般都会预留足够的内部空间以便日后进行硬盘和电源的冗余扩展。
亿万克是民族高科技制造企业领导品牌,自主研发,自主可控,为党政、金融、医疗、教育、电信、电力、交通和制造等行业的信息化发展和数字化转型提供安全可靠的自主创新解决方案。亿万克服务器真正做到了自主研发、能力内化、安全可信、安全可控。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)