每个IO设备在启动时都要向内存中映射一个或者多个地址,这个地址有8位长,又被称做IO端口。

为了让磁头精确定位到每个磁道,用普通的电机达不到这样的精度,必须用步进电机,利用精确的齿轮组或者音圈,每次旋转可以仅仅使磁头进行微米级的位移。音圈电机则是使用精密缠绕的铜丝,置于磁场之中,通过控制电流的流向和强度,使得磁头臂在磁场作用下作精确的步进。之所以叫做“音圈”,是因为这种方法一开始是用在喇叭的纸盆上的,通过控制电流来控制纸盆的精确振动。

磁头传动装置是使磁头作径向移动的部件,通常有两种类型的传动装置:一种是齿条传动的步进电机传动装置,另一种是音圈电机传动装置。前者是固定推算的传动定位器,而后者则采用伺服反馈返回到正确的位置上。磁头传动装置以很小的等距离使磁头部件作径向移动,用以变换磁道。

读数据时通过告诉磁盘控制器要读出数据所在的柱面号、磁头号和扇区号(物理地址的三个组成部分)进行读取(现在都是直接使用LBA地址来告诉磁盘所要读写的扇区)。

具有高带宽规格的硬盘在传输大块连续数据时具有优势,而具有高IOPS的硬盘在传输小块不连续的数据时具有优势。

IO可以分为读/写IO、大/小块IO、连续/随机IO、顺序/并发IO、稳定/突发IO、持续/间断IO和实/虚IO。

(1)同步IO:同步IO是指程序的某一个进程或者线程,如果某时刻调用了同步IO接口,则IO请求发出后,这个进程或者线程必须等待IO路径上的下位程序返回的信号(不管是成功收到数据的信号还是失败的信号)。如果不能立刻收到下位的信号;则一直处于等待状态,不继续执行后续的代码,被操作系统挂起,操作系统继续执行其他的进程或者线程。

异步IO:异步IO请求发出后,操作系统会继续执行本线程或者进程中后续的代码,直到时间片到时或者因其他原因被挂起。异步IO模式下,应用程序的响应速度不会受IO瓶颈的影响,即使这个IO很长时间没有完成。虽然应用程序得不到它要的数据,但不会影响其他功能的执行。

基于这个结果,很多数据库在异步IO的情况下,都会将负责把缓存Flush到磁盘的进程(Oracle中这个进程为DBWR进程)数量设置成比较低的数值,甚至为1。因为在异步IO的情况下,Flush进程不必挂起以等待IO完成,所以即使使用很多的Flush进程,也与使用1个进程效果差不多。

未接收到确认的包会存放在缓冲区内,不会删除,直到收到对方确认。

提示:由于Fiber和Fibre只有一字之差,所以产生了很多流传的误解。FC只代表Fibre Channel,而不是Fiber Channel,后者被翻译为“光纤通道”,甚至接口为FC的磁盘也被称为“光纤磁盘”,其实这些都是很滑稽的误解。

本书之后的文字中,就把FC网络上的磁盘叫做SAN,把以太网络上的文件系统称为NAS。

一句话,TCP是把上层数据“分段”,IP是把TCP分好的段再“分片”(如果这个段大于MTU),IP到达目的之后会把每个分片合并成一个TCP的“分段”,提交给TCP,然后TCP就直接存放到货仓,顺序排放,不管上层消息间的分界。

老T拿着设计蓝图找到了SCSI协议,并且成功取得了SCSI的芳心。于2004年4月份完婚,并且领到了结婚证,编号为RFC3720。

两人并肩携手,成功游说了一批磁盘阵列生产厂商在其产品上尝试着实现iSCSI协议。

CAP理论是指Consistency、Availability以及Partition Tolerance,分别指数据访问时的一致性、可用性(请求总是可以被执行和返回,不超时。可视为性能)以及分区容忍性。前两者大家都理解,最后一个“分区容忍性”是指大规模集群一旦遇到网络或者其他类型故障导致整个集群被裂为多个孤岛,此时集群是否依然正常提供服务,这一点可以视为扩展性中的一个子需求。