服务器硬盘的性能与稳定性指标

0

Posted by agilejava | Posted in 硬件性能 | Posted on 22-03-2011

标签:

大型互联网企业保存着大量的用户数据,这些数据都是存储在服务器硬盘上的,那么服务器硬盘的性能与稳定性对于一个互联网服务的质量起着相当重要的作用。

下面我们就来了解一下服务器硬盘的性能指标:

image

  • 硬盘的转速(Spindle Speed):硬盘转速就是指硬盘主轴电机的转动速度,也就是硬盘盘片在一分钟内所能完成的最大转数(rpm)。转速的快慢是标示硬盘档次的重要参数之一,它是决定硬盘内部传输率的关键因素之一,在很大程度上直接影响到硬盘的速度。硬盘的转速越快,硬盘寻找文件的速度也就越快,相对的硬盘的传输速度也就得到了提高。硬盘转速以每分钟多少转来表示,单位表示为RPM,RPM是Revolutions Per minute的缩写,是转/每分钟。RPM值越大,内部传输率就越快,访问时间就越短,硬盘的整体性能也就越好。 然而,转速的提高也带来了磨损加剧、温度升高、噪声增大等一系列负面影响。
  • 硬盘数据传输率:的英文拼写为Data Transfer Rate,简称DTR。硬盘数据传输率表现出硬盘工作时数据传输速度,是硬盘工作性能的具体表现,它并不是一成不变的而是随着工作的具体情况而变化的。在读取硬盘不同磁道、不同扇区的数据;数据存放的是否连续等因素都会影响到硬盘数据传输率。因为这个数据的不确定性,所以厂商在标示硬盘参数时,更多是采用外部数据传输率(External Transfer Rate)和内部数据传输率(Internal Transfer Rate)。
  • 内部数据传输率(internal data transfer rate):也叫持续数据传输率(sustained transfer rate),单位Mbits/S,这是兆位/秒的意思(注意与MB/S(兆字节/秒)之间的差别:MB/S=Mbits/S除以8)。它指磁头至硬盘缓存间的最大数据传输率,一般取决于硬盘的盘片转速和盘片数据线密度(指同一磁道上的数据间隔度)。内部传输率可以明确表现出硬盘的读写速度,它的高低才是评价一个硬盘整体性能的决定性因素,它是衡量硬盘性能的真正标准。
  • 接口访问速度(Gb/秒):该指标也称为突发数据传输率(Burst data transfer rate)外部数据传输率(External Transfer Rate),它是指从硬盘缓冲区读取数据的速率,也就是计算机通过硬盘接口从缓存中将数据读出交给相应的控制器的速率。在广告或硬盘特性表中常以数据接口速率代替,单位为MB/s。ATA100中的100就代表着这块硬盘的外部数据传输率理论最大值是100MB/s;ATA133则代表外部数据传输率理论最大值是133MB /s;SATA1.0接口的硬盘外部理论数据最大传输率可达150MB/s,而SATAII接口的硬盘外部理论数据最大传输率可达300MB/s。这些只是硬盘理论上最大的外部数据传输率,在实际的日常工作中是无法达到这个数值的,而是更多的取决于内部数据传输率。
  • 寻道时间,平均读/写时间(毫秒):平均寻道时间的英文拼写是Average Seek Time,它是了解硬盘性能至关重要的参数之一。它是指硬盘在接收到系统指令后,磁头从开始移动到移动至数据所在的磁道所花费时间的平均值,它一定程度上体现硬盘读取数据的能力,是影响硬盘内部数据传输率的重要参数,单位为毫秒(ms)。不同品牌、不同型号的产品其平均寻道时间也不一样,但这个时间越低,则产品越好,现今主流的硬盘产品平均寻道时间都在在9ms左右。
  • 平均延迟时间(毫秒):它指的是磁头移动到指定磁道后,还需要多少时间指定的(即要读取或者写入的)扇区才会转到磁头下进行读取或者写入的相关操作,很明显这个时间和盘片的转速有关,平均延迟时间一般指盘片旋转一周所用时间的一半,单位为毫秒(ms)。这样我们就可以很轻松地换算出硬盘转速和平均潜伏期的一一对应关系。               换算公式为:(60*1000)/ 硬盘转速 * 0.5=平均延迟时间                              可以计算出来,5400转 5.556ms,7200转 4.167ms和10000转 3ms
  • 平均访问时间(Average Access Time):这项指标在官方技术文档中一般不会出现,它指的是从相应的读或者写指令发出开始到指定的扇区转到磁头下等待进行读取或者写入(也有的称为从读/写指令发出到第一笔数据读/写所用的时间)为止的这段时间。一般情况下,平均访问时间约等于平均寻道时间和平均延迟时间之和(严格定义中还包括一些指令处理时间,但一般忽略不计)。其单位也为毫秒(ms),它的值我们可以利用Hdtach和Winbench 99v2.0测试出来。
  • 缓存(Cache memory):缓存是硬盘与外部总线交换数据的场所是硬盘控制器上的一块内存芯片,具有极快的存取速度。硬盘读数据的过程是将要读取的资料存入缓存,等缓存中填充满数据或者要读取的数据全部读完后再从缓存中以外部传输率传向硬盘外的数据总线。它是硬盘内部存储和外部接口之间的缓冲器。由于硬盘的内部数据传输率和接口访问速度不同,缓存在其中起到一个缓冲的作用。缓存的大小与速度是直接关系到硬盘的传输速度的重要因素,能够大幅度地提高硬盘整体性能。当硬盘存取零碎数据时需要不断地在硬盘与内存之间交换数据,有大缓存,则可以将那些零碎数据暂存在缓存中,减小外系统的负荷,也提高了数据的传输速度。
  • 单碟容量除了对于容量增长的贡献之外,单碟容量的另一个重要意义在于提升硬盘的数据传输速度。单碟容量的提高得益于磁道数的增加和磁道内线性磁密度的增加。磁道数的增加对于减少磁头的寻道时间大有好处,因为磁片的半径是固定的,磁道数的增加意味着磁道间距离的缩短,而磁头从一个磁道转移到另一个磁道所需的就位时间就会缩短。这将有助于随机数据传输速度的提高。而磁道内线性磁密度的增长则和硬盘的持续数据传输速度有着直接的联系,磁道内线性密度的增加使得每个磁道内可以存储更多的数据,从而在碟片的每个圆周运动中有更多的数据被从磁头读至硬盘的缓冲区里。

可靠性与数据完整性指标:

  • 平均无故障时间(MTBF,小时):平均无故障时间(Mean Time Between Failures,简称MTBF)是指硬盘平均能够正常运行多长时间,才发生一次故障。这是衡量硬盘可靠性的重要参数,平均无故障时间越长,硬盘的可靠性就越高。目前主流产品的平均无故障时间(MTBF)达到了一百万小时以上。
  • 全天候不间断运行的可靠性级别 (AFR)
  • 不可恢复读错误/被读数据(位)
  • 每年运行小时数
  • 字节数/扇区

参考:最大内部数据传输率   硬盘转速 硬盘  服务器硬盘的选择

大型互联网架构资料整理

0

Posted by agilejava | Posted in 大型网站架构 | Posted on 15-03-2011

标签:

1 新浪微博架构与平台安全

2 人人网技术架构介绍

3 Facebook网站的前端性能优化

IE浏览器对HTTP状态码的特殊处理

0

Posted by agilejava | Posted in WEB开发 | Posted on 15-03-2011

标签:

今天打算复习一下http协议,写的第一个程序就遇到了麻烦,程序很简单就是展示错误页面,在firefox测试是好的,但是IE中有个小问题,把QQ的错误页面与我的错误页面比较了一下,发现原来不是程序的问题,而是IE浏览器对404、500等状态码有特殊的处理:

如果你的错误页面过于简单,比如你的404页面上只有一句话“404”,那么IE将显示默认的友好错误信息,如下图:image

问题原因:

Internet Explorer 5和更高版本为以下友好错误信息提供了HTML模板替换项:400.403.404.405.406.408.409.410.500.501和505。每个错误都有一个名称值对(例如“404”,512)。第一个值为错误代码。第二个值是表示字节大小的值,Internet Explorer 5或更高版本使用该值来检测何时用自己的信息替换错误信息。因此,当Internet Explorer 5版的Wininet.dll文件得到HTTP错误信息时,Wininet.dll文件将确定HTML错误中附带的HTTP内容是否为正确设计的Web 页。这是在页面大小的基础上进行的。它在注册表中对每个错误的阈值进行评估。如果Web页太小,该Web页将被拒绝,并显示友好HTTP状态Web页

在Internet Explorer 4中,当Wininet.dll无法解决请求时,它显示一个嵌入式HTML错误信息和一个非描述性定义,例如:“Navigation Canceled”(导航已取消)或“Unable to retrieve Webpage in Offline mode”(在脱机模式下无法检索网页)。这些错误信息是Shdocvw.dll文件的资源(res:)。资源是指程序出于显示目的所使用的HTML代码,它嵌入在动态链接库(DLL)文件中。在Internet Explorer 5或更高版本中,这些错误信息是作为Shdoclc.dll文件的资源存储的。当收到错误信息时,它被相应的HTML模板取代,此模板可能包含以下任意类型的信息:

  •有关此问题的信息。
  •有关如何更正或解决此问题的信息。
  •指向前一页的链接。
  •指向Internet Explorer支持页的链接。
  •指向同一页的链接,以便您能尝试重新连接到该页。
  •指向缓存中的页面副本的链接(如果创建了应用程序编程接口API)。

  友好HTTP状态错误信息存储在以下注册表项中:HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main\ErrorThresholds。

image

解决此问题的办法有:

1 将页面的内容做的丰富一些,内容多一些(加一些table或者div之类的)!

JAVA代码

2 在404页面中设置状态码为200,response.setStatus(200);

3  设置IE的选项   工具–>Internet选项–>高级—>显示友好http错误信息(取消选择) 。

ps:在firefox下如果用了google的工具条也会有一样的问题,当然解决办法也是一样的!

分享微软的云计算视频

0

Posted by agilejava | Posted in 云计算 | Posted on 12-03-2011

标签:,

微软最新技术演示–云计算与自然用户界面

 

未来"云–端"精彩生活畅想

微软愿景:未来健康

OAuth与OpenID介绍

0

Posted by agilejava | Posted in 开放平台 | Posted on 28-02-2011

标签:,

SLF4J的静态日志系统绑定机制

0

Posted by agilejava | Posted in JAVA | Posted on 02-02-2011

标签:

SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。

SLF4J库类似于Apache Commons-Logging,但Apache Commons-Logging采用的是动态绑定机制,使用ClassLoader寻找和载入底层的日志库,而在OSGI中,不同的插件使用自己的ClassLoader,OSGI的这种机制保证了插件互相独立,然而却使得Apache Commons-Logging无法在OSGI的环境下工作了。SLF4J却没有这个问题,它是如何做到的呢?

一个简单的例子:

package chapters.introduction;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class HelloWorld1 {

  public static void main(String[] args) {

    Logger logger = LoggerFactory.getLogger("chapters.introduction.HelloWorld1");
    logger.debug("Hello world.");
  }
}

SLF4J与日志系统的绑定过程是在getLogger方法中完成的!下面介绍整个绑定过程。Business Process Model

 

通过上图大家可以发现整个静态绑定机制的核心是通过查找类路径下面的org/slf4j/impl/StaticLoggerBinder.class,所以类路径下只能有一个这个类。看到这里大家可能会问了,这个类的包名是org.slf4j.impl,找这个类如何与其他的日志系统连接呢?呵呵,这个很简单,其实slf4j的发布包中包含了为多种日志系统写好的绑定代理,每个日志系统都写好了一个独立的StaticLoggerBinder,由这个类调用相关日志系统的对象!

下图是slf4j发布包中的为各个日志系统写好的绑定代理。

image

为什么没有logback的绑定代理?呵呵,因为logback中已经内置了slf4j的绑定代理。

image

SCA架构知识点ppt

0

Posted by agilejava | Posted in JAVA | Posted on 31-12-2010

标签:

Xen KVM VMWare的简单对比

0

Posted by agilejava | Posted in 虚拟化 | Posted on 24-12-2010

标签:, ,

 

image

在CentOS上安装和配置KVM

2

Posted by agilejava | Posted in 虚拟化 | Posted on 12-11-2010

1 检查CPU

[root@liunx389 img]# egrep ‘vmx|svm’ /proc/cpuinfo
flags : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm constant_tsc pni monitor ds_cpl vmx est tm2 cx16 xtpr lahf_lm Read the rest of this entry »

分布式存储技术及应用

6

Posted by agilejava | Posted in 分布式存储 | Posted on 22-10-2010

标签:,

根据did you know(http://didyouknow.org/)的数据,目前互联网上可访问的信息数量接近1= 1百万亿亿 (1024)。毫无疑问,各个大型网站也都存储着海量的数据,这些海量的数据如何有效存储,是每个大型网站的架构师必须要解决的问题。分布式存储技术就是为了解决这个问题而发展起来的技术,下面让将会详细介绍这个技术及应用。

分布式存储概念

与目前常见的集中式存储技术不同,分布式存储技术并不是将数据存储在某个或多个特定的节点上,而是通过网络使用企业中的每台机器上的磁盘空间,并将这些分散的存储资源构成一个虚拟的存储设备,数据分散的存储在企业的各个角落。

具体技术及应用:

海量的数据按照结构化程度来分,可以大致分为结构化数据,非结构化数据,半结构化数据。

本文接下来将会分别介绍这三种数据如何分布式存储。

结构化数据的存储及应用

所谓结构化数据是一种用户定义的数据类型,它包含了一系列的属性,每一个属性都有一个数据类型,存储在关系数据库里,可以用二维表结构来表达实现的数据。

大多数系统都有大量的结构化数据,一般存储在OracleMySQL的等的关系型数据库中,当系统规模大到单一节点的数据库无法支撑时,一般有两种方法:垂直扩展与水平扩展。

· 垂直扩展:垂直扩展比较好理解,简单来说就是按照功能切分数据库,将不同功能的数据,存储在不同的数据库中,这样一个大数据库就被切分成多个小数据库,从而达到了数据库的扩展。一个架构设计良好的应用系统,其总体功能一般肯定是由很多个松耦合的功能模块所组成的,而每一个功能模块所需要的数据对应到数据库中就是一张或多张表。各个功能模块之间交互越少,越统一,系统的耦合度越低,这样的系统就越容易实现垂直切分。

· 水平扩展:简单来说,可以将数据的水平切分理解为按照数据行来切分,就是将表中的某些行切分到一个数据库中,而另外的某些行又切分到其他的数据库中。为了能够比较容易地判断各行数据切分到了哪个数据库中,切分总是需要按照某种特定的规则来进行的,如按照某个数字字段的范围,某个时间类型字段的范围,或者某个字段的hash值。

垂直扩展与水平扩展各有优缺点,一般一个大型系统会将水平与垂直扩展结合使用。

实际应用:1是为核高基项目设计的结构化数据分布式存储的架构图。

clip_image002

1可水平&垂直切分扩展的数据访问框架

· 采用了独立的分布式数据访问层,后端分布式数据库集群对前端应用透明。

· 集成了Memcached集群,减少对后端数据库的访问,提高数据的查询效率。

· 同时支持垂直及水平两种扩展方式。

· 基于全局唯一性主键范围的切分方式,减轻了后续维护的工作量。

· 全局唯一性主键的生成采用DRBD+Heartbeat技术保证了可靠性。

· 利用MySQL Replication技术实现高可用的架构。

:以上的数据切分方案并不是唯一扩展MySql的方法,有兴趣的读者可以关注一下 云计算时代的MySQL-Clustrix Sierra分布式数据库系统

Read the rest of this entry »