了解服务器硬盘的组件以及其工作原理对DBA来说是非常有用的,对已有的系统瓶颈分析等非常有利,下面就来对磁盘进行一系列深入的解析:

当前主流的硬盘接口

个人用:IDE串口化以后形成了SATA/SATA2/SATA3、SATA、SATA2、SATA3

企业用:SCSI串口化以后形成了SAS、SAS、FC

硬盘的主要组件:

1.数据接口:数据与主板以及主板上各部件之间进行数据交换的纽带

2.电路板:包含主芯片,缓存,电机驱动芯片,电路板固化的ROM芯片可以对硬盘进行初始化,加电初始寻道,定位及故障检测。

3.磁头:硬盘中最昂贵的部件,也是硬盘技术中最重要和关键的一环,负责读取盘片上的数据。(注意:磁头不能和盘片接触)

4.盘片:存储数据

4.1 盘片发展历史:塑料盘基 》 金属盘基 》 玻璃盘基 》 铝材料盘基 》 固态硬盘

5.传动臂 :移动磁头,定位磁道

硬盘基本参数:

1.磁面:盘片上用来存储数据的有效面。每个磁面按照从上至下的顺序从0开始进行编号。磁面号=磁头号(0磁头,1磁头,2磁头…..),读写磁头每个磁面一个

2.磁道:盘片转动时,磁头保持在一个位置,磁头沿盘片转过一周的圆形轨迹,叫做一条磁道。磁道由外向内编号,由0开始增加。目前磁盘磁道都有万道以上。相邻磁道之间并不是紧挨着,因磁化单元相隔太近,会影响磁头读写。

3.柱面:每张盘片的上下磁面都会划分数据相等的磁道,相同位置的磁道组成的类似圆柱的表面,叫做柱面。硬盘柱面数=盘片一个磁面上的磁道数。由外向内从0开始编号

4.扇区:

早期扇区:从硬盘圆心引出多条射线,将每个磁道等分成若干个扇环形,每一个扇环形对应的区域叫做一个扇区。

目前扇区:摒弃由圆心引出的射线等分,而是由每个磁道单独划分。

每个扇区存放512字节的信息

硬盘驱动器向硬盘读写数据时,以扇区为单位

硬盘寻址模式:

1.CHS(Cylinder/Head/Sector):

三维地址模式使用类型:小容量硬盘支持硬盘容量:单磁面524M以下

扇区的三维地址与物理扇区一一对应

CHS(0/1/1)–0柱面1磁头(磁面)1扇区

2.LBA(Logical Block Addressing)

线性寻址模式使用类型:大容量硬盘

外磁道扇区总数> 内磁道扇区总数

一个序号对应唯一一个物理扇区,即逻辑地址

硬盘容量=标示LBA最大值* 521B

影响硬盘性能指标:

1.转速

2.单碟容量

3.数据传输率

4.寻道时间

5.主轴的转速与缓存

硬盘读写速率测试(使用dd命令):

测试机型号:DELL R510

测试机系统:ubuntu10.04

测试机用途:CACHE机

硬盘转速:15000rpm

RAID状态:RAID阵列卡组建RAID5

读测试:

测试命令:time dd if=/dev/sdb1 of=/dev/null bs=8k count=8388608

测试命令说明:因为/dev/sdb1是一个物理分区,对它的读取会产生IO,/dev/null是伪设备,相当于黑洞,of到该设备不会产生IO,所以,这个命令相当于测试磁盘的读能力。

测试结果:
Linux系统磁盘原理渗透解析

1-13032Q03Z01T.jpg (26.04 KB, 下载次数: 0)

下载附件  保存到相册

2014-5-14 21:53 上传

写测试:

测试命令:time dd if=/dev/zero of=/srv/iotest bs=8k count=8388608

测试命令说明:

因为/dev/zero是一个伪设备,它只产生空字符流,对它不会产生IO,所以,IO都会集中在of文件中,of文件只用于写,所以这个命令相当于测试磁盘的写能力。

测试结果:
Linux系统磁盘原理渗透解析

1-13032Q03Z53K.jpg (28.29 KB, 下载次数: 0)

下载附件  保存到相册

2014-5-14 21:53 上传

硬盘SMART技术:

SMART : “Self-Monitoring,AnalysisandReportingTechnology”自我分析检测技术

硬盘运行时,会将自身的若干参数记录下来,参数包括型号、容量、温度、密度、坏扇区、寻道时间、传输、误码率等

硬盘运行了几千小时后,很多内在的物理参数都会发生变化,某一参数超过报警阈值,则说明硬盘接近损坏,需要修复。

磁盘IO性能系统级别调优:

1、磁盘IO调度器:

四种IO调度模式

一.CFQ (Completely Fair Queuing 完全公平的排队)(elevator=cfq)

二.Deadline (elevator=deadline):保证对既定的IO请求以最小的延迟时间

三.NOOP (elevator=noop):

四.Anticipatory (elevator=as)

查看系统IO调度模式

命令:cat /sys/block/sd*/queue/scheduler

2、调节配置文件中的读写buffer

例如数据库
Linux系统磁盘原理渗透解析

1-13032Q03Z5U6.jpg (35.12 KB, 下载次数: 0)

下载附件  保存到相册

2014-5-14 21:53 上传

3、调节IO内核参数

–调节磁盘请求队列长度

/sys/block/sda/queue/nr_requests默认为128

提高此参数的值会更加占用内存,但能更加多的合并读写操作,速度变慢,但能读写更加多的量。

–对读优化的建议

调节IO预先读请求的大小

/sys/block/sda/queue/read_ahead_kb默认128kb

发表评论

电子邮件地址不会被公开。 必填项已用*标注