[if !supportLists]第一章 [endif]磁盘历史和内外部物理结构介绍
[if !supportLists]1、[endif]磁盘的历史介绍
从1956年9月IBM向世界展示了第一台磁盘存储系统IBM 350 RAMAC至今,磁盘存储系统已经经历了近半个世纪的发展。经历了这么多年,磁盘的变化非常巨大。虽然最早的RAMAC容量只有5MB,然而却需要使用50个直径为24英寸的硬盘。而我们现在的一块容量高达1000GB的磁盘,仅仅只需要三张磁盘片(还是一块3.5寸盘)即可。
[if !supportLists]2、[endif]磁盘发展趋势和实现措施
发展趋势实现措施
体积更小存储密度更高
速度更快读写更灵敏的磁头,主轴转数更高,接口更先进
容量更大存储密度更高、介质更好
使用更安全数据保持保护技术
第二章磁盘核心知识及数据读写原理
企业生产环境主流磁盘的相关信息对比:
企业生产场景普及程度:SAS>SSD>SATA
企业容量对比性能和价格:SSD>SAS>SATA(一块SSD和一块SATA)
企业价格购买磁盘容量:SATA>SAS>SSD
2、固态磁盘于传统磁盘比较,拥有以下缺点:
固态磁盘缺点缺点说明
成本高每单位容量价格是传统磁盘的5~10倍,(基于内存),甚至200~300倍(基于DRAM)。
容量低目前固态磁盘最大容量远低于传统磁盘。(美国公司Foremay退出了EC188M系列固态盘2TB)。传统磁盘的容量仍在迅速增长,据称IBM已经测试过4TB的传统硬盘。
易受外界影响由于不像传统磁盘那样屏蔽于法拉第笼中,固态磁盘更易受到某些外界因素的不良影响。如断电(基于DRAM的固态磁盘尤甚)、磁场感染、静电等。
写入寿命有限写入寿命有限(基于闪存)。一般闪存写入寿命为1万到10万次,特制的可达100万到500万次,然后整台计算机寿命期内文件系统的某些部分(如文件分配表)的写入次数仍将超过这一权限。特质的文件系统或者固件可以分担写入的位置,使固态磁盘的整体寿命达到20年以上。
数据难以恢复数据损坏后难以恢复。一旦在硬件上发生损坏,如果是传统的磁盘或者磁带存储方式,荣国数据恢复也许还能挽救一部分数据。但是如果是固态储存,一旦芯片发生损坏,想要在碎成几瓣或者被电流击穿的芯片中找回数据那几乎是不可能的。当然这种不足也是可以牺牲存储空间来弥补的,主要用RAID
3、SSD固态粗盘与传统机械磁盘优劣势对比:
项目固态磁盘传统机械磁盘
容量较小大
价格高低
随机存取极快一般
写入次数SLC:10万次
MLC:1万次
特制的可达到100-500W次
无限制
盘内阵列可极难
工作噪音无有
工作温度极低较明显
防震很好较差
数据恢复难可以
重量轻重
4、企业生产工作中磁盘的选型
磁盘:当前服务器市场:主流磁盘为SAS、SATA、SSD硬盘。
[if !supportLists](1)[endif]企业级SAS硬盘(默认):
企业里常见的SAS硬盘是15000转/分(这里就是主轴的转数)。当前主流300G、600G、1000G,从具体的业务需求及性价比考虑,在工作中多用146G、300-600G的SAS硬盘,
一般选6*300G,6*600G,单盘容量不要太大,除非纯备份!
用途:用户提供生产线上的普通对外提供服务的业务服务器
例如:生产线上的数据库业务、存储业务、图片业务及相关高并发业务(web http,cache服务),总的来说,如果没有特殊业务需求,SAS磁盘是生产环境首选的磁盘配置。
(2)[endif]企业级SATA硬盘:
企业级SATA硬盘,7200-10000转/分,常见的容量为1T和2T,4T,6T,优点是经济实惠,
容量大,从具体的业务需求及性价比考虑,老男孩老师在工作中多用SATA磁盘做线下不提供服务的数据存储或者并发业务访问不是很大的业务应用,比如站点程序及数据库、图片的线下备份等。
特性:容量性价比高,一般2T的SATA磁盘较佳。
选择SATA理由:1、没钱。2、量少,不给用户提供服务。3、备份。
磁盘选购小结:
(1)[endif]线上的业务,用SAS磁盘。
(2)[endif]线下的业务,用SATA磁盘,磁带库。
(3)[endif]线上高并发、容量小的业务,SSD磁盘。
(4)[endif]成本思想:根据数据的访问热度,只能分析分层存储。SATA+SSD
[if !supportLists]5、[endif]老男孩企业故障案例:
不要用SATA磁盘来做在线高并发服务的数据存储或数据库业务,这是血的教训。
某公司采用SATA做数据库的存储盘,结果导致数据库连续宕机一个月。
5台SATA盘RAID5。
解决:重新买5台,把磁盘动SATA(RAID5)换成SAS(RAID10)。
数据库集群。
[if !supportLists]1、[endif]主库选择用SAS RAID10,从库SAS Raid0。
[if !supportLists]2、[endif]当数据库使用的引擎是MyISAM引擎,改成Innodb引擎。
6、磁盘相关名词说明
英文:汉语
Disk磁盘
Head磁头
Sector扇区
Track磁道
Cylinder柱面
Units单元块(一个柱面的大小)
Block数据块
Inode索引节点
7、磁盘及盘片结构
[if !vml]
[endif]
8、盘片示意图
[if !vml]
[endif]
[if !supportLists]9、[endif]磁盘的磁道
磁盘在格式化时被划分成许多同心圆,这些同心圆的轨迹叫做磁道(Track)。磁道由盘面从外向内依次从0开始顺序编号。一块磁盘大约有300~1024个磁道。
[if !supportLists]10、[endif]磁盘的扇区
[if !vml]
[endif]
扇区的第一个主要部分是标识符,标识符就是扇区头标,包括组成扇区三位地址的三个数字,扇区所在的磁头(或盘面)。磁道(或柱面号)以及扇区在磁道上的位置即扇区号,头标中还包括一个字段,其中有显示扇区是否能可靠存储数据,或者是否以及发现某个故障因而不宜使用的标记。有些磁盘控制器在扇区头标中还记录有指示字,可在原扇区出错时指引磁盘转到替换扇区或磁道。最后扇区头标以循环冗余校验(CRC)值作为结束,以供控制器检验扇区头标的读出情况,确保准确无误。
扇区的第二个主要部分是存储数据的数据段,可分为数据和保护数据的纠错码(ECC)。在初始准备期间,计算机用512个虚拟信息字节(实际数据的存放地)和与这些虚拟信息字节相应的ECC数字填入这个部分。
记忆要点:
(1). 一块磁盘有2-14个盘片,每个盘片有两个面,每个面对于一个读写磁头,用磁头号来区分盘面,即盘面数就是磁头数。盘片数*2=磁头数(盘面数)
(2). 不同盘面的磁道被划分为多个扇形区域,每个区域就是一个扇区
(3). 同一个盘面,以盘片中心为圆心,每个不同半径的圆形轨迹就是一个磁道
(4). 不同盘面相同半径的磁道组成一个圆柱面就是柱面
(5). 一个柱面包含多个磁道(这些磁道的半径一样),一个磁道包含多个扇区
(6). 数据信息记录可表示为:某磁头,某磁道(柱面),某扇区。
11、
[if !supportLists](1)[endif]磁道的一句话概括定义
磁道:每个盘面有两个面,都可记录信息。盘片表面以盘片中心为圆心,用于记录数据的不同半径的原型磁化轨迹就称为磁道。磁化轨迹就是磁化区域,是看不见的。磁道看起来是一个平面圆周形。
[if !supportLists](2)[endif]扇区的一句话概括定义
扇区:盘面由圆心向四周画直线,不同的磁道被直线分成许多扇形(弧形)的区域,每个弧形的区域叫做扇区,每个扇区大小一般为512字节,扇区看起来就是圆弧或扇形。
[if !supportLists](3)[endif]柱面的一句话概括定义
柱面:磁盘中,不同的盘片(或盘面)相同半径的磁道轨迹从上到下所组成的圆柱形区域就称为柱面,柱面看起来是一个圆柱形。
12、磁盘是机械式磁盘:
(1)盘片的旋转靠马达带动主轴,机械运动。
(2)磁头的径向移动也是靠步进电机来完成的,机械运动。
(3)所有的磁头同时同向移动的。
磁盘在读写数据是,尽可能让磁头不懂,或少移动磁头就能读到更多或全部的数据。
[if !supportLists]13、[endif]磁盘读取原理:
[if !vml]
[endif]
[if !supportLists]14、[endif]机械磁盘读写磁盘数据的原理小结:
[if !supportLists](1)[endif]磁盘是按照柱面为单位读写数据的,即先读取同一个盘面的某一个磁道,读完之后,如果数据没有读完,磁头也不会切换到其他的磁道,而是选择切换磁头,读取下一个盘面的相同半径的磁道,知道所有盘面的相同半径的磁道读取完成会后,如果数据还没有读写完成,才会切换其他不同半径的磁道,这个切换磁道的过程称为寻道。
[if !supportLists](2)[endif]不同磁头间的切换时电子切换,而不同磁道间的切换需要磁头做径向运动,这个径向运动需要步进电机调节,这个动作是机械的切换。
磁头寻道是机械运动,切换磁头是电子切换。
15、磁盘容量的计算:
512字节*每磁道扇区数=磁道大小
磁道大小*磁道数=盘面大小
盘面大小*磁头数=磁盘容量
磁盘容量=512字节*每磁道扇区数*磁道数*磁头数
柱面大小=磁道大小*磁头数
磁道大小=521字节*没磁道扇区数
磁盘容量=柱面大小*柱面数(磁道数)
磁盘容量=521字节*每磁道扇区数*柱面数(磁道数)*磁头数
fdisk -l 查看磁盘对应的分区
[root@oldboy ~]# fdisk -l
Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000349ee
Device Boot Start End Blocks Id System
/dev/sda1 * 1 26 204800 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 26 124 786432 82 Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3 124 2611 19979264 83 Linux
[root@oldboy ~]# echo 512*63*2610*255|bc
21467980800
[root@oldboy ~]# echo 512*63*2610*255/1000/1000
512*63*2610*255/1000/1000
[root@oldboy ~]# echo 512*63*2610*255/1000/1000|bc
21467
[root@oldboy ~]# echo 512*63*2610*255/1000/1000/1000|bc
21
[root@oldboy ~]# echo 512 63 2610 255|awk '{print $1*$2*$3*$4/1000000000}'
21.468