开发知识总结(通用3篇)

开发知识总结 第1篇

如上图结构,由于存在两条路径,对于存储划分的一个空间,在OS端会看到两个(两块磁盘或者两个lun)。可怕的是,OS并不知道这两个东西对应的其实是一块空间,如果路径再多,则OS会看到更多。还是那句经典的话,“计算机中碰到的问题,往往可以通过增加的一个中间层来解决”,于是有了多路径软件。他提供了以下特性:

把多个映射到同一块空间的路径合并为一个提供给主机

提供fail over的支持。当一条通路出现问题时,及时切换到其他通路

提供load balance的支持。即同时使用多条路径进行数据传送,发挥多路径的资源优势,提高系统整体带宽。

Fail over的能力一般OS也可能支持,而load balance则需要与存储配合,所以需要根据存储不同配置安装不同的多通路软件。多路径除了解决了高可用性,同时,多条路径也可以同时工作,提高系统性能。Raid很基础,但是在存储系统中占据非常重要的地位,所有涉及存储的书籍都会提到RAID。RAID通过磁盘冗余的方式提高了可用性和可高性,一方面增加了数据读写速度,另一方面增加了数据的安全性。RAID 0对数据进行条带化。使用两个磁盘交替存放连续数据。因此可以实现并发读写,但带来的问题是如果一个磁盘损坏,另外一个磁盘的数据将失去意义。RAID 0最少需要2块盘。

RAID 1对数据进行镜像。数据写入时,相同的数据同时写入两块盘。因此两个盘的数据完全一致,如果一块盘损坏,另外一块盘可以顶替使用,RAID xxx了很好的可靠性。同时读的时候,数据可以从两个盘上进行读取。但是RAID xxx的问题就是空间的浪费。两块盘只提供了一块盘的空间。RAID 1最少需要2块盘。

RAID 5使用多余的一块校验盘。数据写入时,RAID 5需要对数据进行计算,以便得出校验位。因此,在写性能上RAID 5会有损失。但是RAID 5兼顾了性能和安全性。当有一块磁盘损坏时,RAID 5可以通过其他盘上的数据对其进行恢复。

如图可以看出,右下角为p的就是校验数据。可以看到RAID 5的校验数据依次分布在不同的盘上,这样可以避免出现热点盘(因为所有写操作和更新操作都需要修改校验信息,如果校验都在一个盘做,会导致这个盘成为写瓶颈,从而拖累整体性能,RAID 4的问题)。RAID 5最少需要3块盘。RAID 6

RAID 6与RAID 5类似。但是提供了两块校验盘(下图右下角为p和q的)。安全性更高,写性能更差了。RAID 0最少需要4块盘。

RAID 10(Striped mirror)RAID 10是RAID 0 和RAID 1的结合,同时兼顾了二者的特点,提供了高性能,但是同时空间使用也是最大。RAID 10最少需要4块盘。需要注意,使用RAID 10来称呼其实很容易产生混淆,因为RAID 0+1和RAID 10基本上只是两个数字交换了一下位置,但是对RAID来说就是两个不同的组成。因此,更容易理解的方式是“Striped mirrors”,即:条带化后的镜像——RAID 10;或者“mirrored stripes”,即:镜像后的条带化。比较RAID 10和RAID 0+1,虽然最终都是用到了4块盘,但是在数据组织上有所不同,从而带来问题。RAID 10在可用性上是要高于RAID 0+1的:

RAID 0+1 任何一块盘损坏,将失去冗余。如图4块盘中,右侧一组损坏一块盘,左侧一组损坏一块盘,整个盘阵将无法使用。而RAID 10左右各损坏一块盘,盘阵仍然可以工作。

RAID 0+1 损坏后的恢复过程会更慢。因为先经过的mirror,所以左右两组中保存的都是完整的数据,数据恢复时,需要完整恢复所以数据。而RAID 10因为先条带化,因此损坏数据以后,恢复的只是本条带的数据。如图4块盘,数据少了一半。

RAID 50RAID 50 同RAID 10,先做条带化以后,在做RAID 5。兼顾性能,同时又保证空间的利用率。RAID 50最少需要6块盘。

总结:

RAID与LVM中的条带化原理上类似,只是实现层面不同。在存储上实现的RAID一般有专门的芯片来完成,因此速度上远比LVM块。也称硬RAID。

如上介绍,RAID的使用是有风险的,如RAID 0,一块盘损坏会导致所有数据丢失。因此,在实际使用中,高性能环境会使用RAID 10,兼顾性能和安全;一般情况下使用RAID 5(RAID 50),兼顾空间利用率和性能;

DAS、SAN和NAS

DAS:有PATA、SATA、SAS等,主要是磁盘数据传输协议。

单台主机。在这种情况下,存储作为主机的一个或多个磁盘存在,这样局限性也是很明显的。由于受限于主机空间,一个主机只能装一块到几块硬盘,而硬盘空间时受限的,当磁盘满了以后,你不得不为主机更换更大空间的硬盘。

独立存储空间。为了解决空间的问题,于是考虑把磁盘独立出来,于是有了DAS(Direct Attached Storage),即:直连存储。DAS就是一组磁盘的集合体,数据读取和写入等也都是由主机来控制。但是,随之而来,DAS又面临了一个他无法解决的问题——存储空间的共享。接某个主机的JBOD(Just a Bunch Of Disks,磁盘组),只能这个主机使用,其他主机无法用。因此,如果DAS解决空间了,那么他无法解决的就是如果让空间能够在多个机器共享。因为DAS可以理解为与磁盘交互,DAS处理问题的层面相对更低。使用协议都是跟磁盘交互的协议

开发知识总结 第2篇

LVM中有几个很重要的概念:

PV(physical volume):物理卷。在LVM中,一个PV对应就是操作系统能看见的一块物理磁盘,或者由存储设备分配操作系统的lun。一块磁盘唯一对应一个PV,PV创建以后,说明这块空间可以纳入到LVM的管理。创建PV时,可以指定PV大小,即可以把整个磁盘的部分纳入PV,而不是全部磁盘。这点在表面上看没有什么意义,但是如果主机后面接的是存储设备的话就很有意义了,因为存储设备分配的lun是可以动态扩展的,只有当PV可以动态扩展,这种扩展性才能向上延伸。

VG(volume group):卷组。一个VG是多个PV的集合,简单说就是一个VG就是一个磁盘资源池。VG对上屏蔽了多个物理磁盘,上层是使用时只需考虑空间大小的问题,而VG解决的空间的如何在多个PV上连续的问题。

LV(logical volume):逻辑卷。LV是最终可供使用卷,LV在VG中创建,有了VG,LV创建是只需考虑空间大小等问题,对LV而言,他看到的是一直联系的地址空间,不用考虑多块硬盘的问题。

有了上面三个,LVM把单个的磁盘抽象成了一组连续的、可随意分配的地址空间。除上面三个概念外,还有一些其他概念:

PE(physical extend): 物理扩展块。LVM在创建PV,不会按字节方式去进行空间管理。而是按PE为单位。PE为空间管理的最小单位。即:如果一个1024M的物理盘,LVM的PE为4M,那么LVM管理空间时,会按照256个PE去管理。分配时,也是按照分配了多少PE、剩余多少PE考虑。

LE(logical extend):逻辑扩展块。类似PV,LE是创建LV考虑,当LV需要动态扩展时,每次最小的扩展单位。

对于上面几个概念,无需刻意去记住,当你需要做这么一个东西时,这些概念是自然而然的。PV把物理硬盘转换成LVM中对于的逻辑(解决如何管理物理硬盘的问题),VG是PV的集合(解决如何组合PV的问题),LV是VG上空间的再划分(解决如何给OS使用空间的问题);而PE、LE则是空间分配时的单位。

如图,为两块18G的磁盘组成了一个36G的VG。此VG上划分了3个LV。其PE和LE都为4M。其中LV1只用到了sda的空间,而LV2和LV3使用到了两块磁盘。串联、条带化、镜像

开发知识总结 第3篇

●初始级:这个级别的特点是无秩序,甚至是混乱。整个软件开发过程中没有一个标准的规范或步骤可以遵循的一种状态,所开发的软件产品能否取得成功往往取决于个别人的努力或机遇初始级的软件过程是一种无定义的随性过程,项目的执行也很随意。 ●可重复级:这个级别已经建立了最基本的项目管理过程,可以对成本、进度等进行跟踪管理。对类似的软件项目,可以借鉴之前的成功经验来获职成功。也就是说,在软件管理过程中,一个可以借鉴的成功的过程是一个可重复的过程,并且这个重复能逐渐完善和成熟。 ●可定义级:这个级别已经用于管理和工程的软件过程标准化,并形成相应的文档进行管理。各种项目都可以采用结合实际情况修改后的标准软件过程来进行操作。此级别中的过程管理口以遵照形成了标准的文档执行,各种开发的项目都需要根据这个标准进行操作。 ●可管理级:这个级别通过详细的度量标准来衡量软件过程和产品质量,实现了质量的和管理的量化。 ●优化级:这个级别通过将新方法、新技术等各种有用信息进行定量分析,从而持续地对软件过程和管理进行改进。

软件测试是软件开发过程中的一个重要环节,其主要目的是检验软件是否符合需求,尽可能多地发现软件中潜在的错误并加以改正。测试的对象不仅有程序部分,还有整个软件开发过程中各个阶段产生的文档,如需求规格说明、概要设计文档等。根据软件开发过程中阶段的不同,可以分为

在现实方案中,许多单元组合成组件,而这些组件又聚合成程序的更大部分。方法是测试片段的组合并最终扩展讲程,将模块与其他组的模块一起测试。最后,将构成讲程的所有模块一起测试。此外,如果程序由多个进程组成,应该对其进行成对测试,而不是同时测试所有进程。集成测试识别组合单元时出现的问题。通过使用要求在组合单元前测试每个单元,并确保每个单元的生存能力的测试计划,可以知道在组合单元时所发现的任何错误很可能与单元之间的接口有关。这种方法将可能发生的情况数量减少到更简单的分析级别系统测试。(3)系统测试 系统测试的对象不仅包括需要测试的产品系统的软件,还包括软件所依赖的硬件、外设甚至其些数据、某些支持软件及其接口等。因此,必须将系统中的软件与各种依赖的资源结合起来,在系统实际运行环境下进行测试。

(4)验收测试 验收测试是指系统开发生命周期方法的一个重要阶段,也是部署软件之前的最后一个测试操作。 测试目的就是确保软件准备就绪,并且可以让最终用户能执行该软件的实现既定功能和任务。测试 中,相关的用户或独立测试人员根据测试计划和结果对系统进行测试和接收,让系统用户决定是否 接收系统。它是一项确定产品是否能够满足合同或用户所规定的需求的测试。验收测试一般有三种 策略:正式验收、非正式验收、a测试、B测试。

●正式验收。 正式验收测试是一项管理严格的过程,它通常是系统测试的延续。计划和设计这些测试的周密和详细程度甚至超过系统测试。正式验收测试一般是开发组织与最终用户组织的代表一起执行的。也有一些完全由最终用户组织执行。 ●非正式验收 在非正式验收测试中,执行测试过程的限制不如正式验收测试中那样严格。测试过程中,主要是确定并记录要研究的功能和业务任务,但没有可以遵循的特定测试用例。测试内容由各测试员决定。这种验收测试方法不像正式验收测试那样组织有序,并且主观性比较大。 ●测试(AlphaTesting) 又称Alpha测试,是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,Alpha测试不能由该系统的程序员或测试员完成。在系统开发接近完成时对应用系统进行的测试;测试后仍然会有少量的设计变更。这种测试一般由最终用户或其他人员来完成,不能由程序员或测试员完成。 ●测试(Beta Testing)。 又称Beta测试、用户验收测试(UAT)。测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Beta测试不能由程序员或测试员完成。当开发和测试基本完成时所做的测试,而最终的错误和问题需要在发行前找到。这种测试一般由最终用户或其他人员完成,不能由程序员或测试员完成。(5)回归测试 回归测试是指在发生修改之后重新测试之前的测试以保证修改的正确性。理论上,软件产生新版本都需要进行回归测试,验证之前发现和修复的错误是否在新软件版本上再次出现。根据修复好了的缺陷再重新进行测试。回归测试的目的在于验证之前出现过但已经修复好的缺陷不再重新出现。一般指对某已知修正的缺陷再次围绕它原来出现时的步骤重新测试。通常确定所需的再测试范围时是比较困难的,特别当临近产品发布日期时。因为为了xxx缺陷必须更改源代码。因而就有可能影响这部分源代码所控制的功能。所以在验证修好的缺陷时不仅要服从缺陷原来出现时的步骤重新测试,而且还要测试有可能受影响的所有功能。因此应当对所有回归测试用例进行自动化测试。

(1)白盒测试(White Box Testing) 又称结构测试或逻辑驱动测试。它是把测试对象看作一个能打开、可以看见内部结构的盒子。 利用白盒测试法对软件进行动态测试时,主要是测试软件产品的内部结构和处理过程,而不关注软 件产品的功能。白盒测试法中对测试的覆盖标准主要有;逻辑覆盖、循环覆盖和基本路径测试。由于知道产品内部的工作过程,因此白盒测试可以检测产品内部动作是否按照规格说明书的规定正常 进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作而不 顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试笔,通常用于软件验证。

(2)黑盒测试(Black Box Testing) 又称功能测试或数据驱动测试。是根据软件的规格进行的测试,这类测试把软件看作一个不能打开的盒子,因此不考虑软件内部的运作原理。软件测试人员以用户的角度,通过各种输入和对应的输出结果来发现软件存在的缺陷,而不关心程序具体是如何实现的。