想必用过大机的人都接触过Block, Track, Cylinder的概念。Mainframe的存储管理一般就是基于这几个单位。
那么,Mainframe上1个Cylinder是多少个Track?1个Track是多少个KB?1个Track包含多少个Block?
对于第一个问题,多数人都知道答案是15,基于一般的磁盘设备,15这个答案没有错,但是对于磁带,应该是没有柱面这个概念的。(这个有待探讨,毕竟大家真用过磁带的不多,而做备份是不需要手动分配存储的)
第二个问题,1个Track是多少个KB?
经过查阅相关IBM官方文档,可以得知,不同类型的设备,1个Track包含的KB数不等。
对于最常见的3390设备,1 Track = 56,664 Bytes;对于3380设备,1 Track = 47,476Bytes。
(参考文献:IBM System Storage DS8000 Information Center,章节LUN calculation)
第三个问题,1个Track包含多少个Block?
首先,Block的大小是自定义的,能够定义的最大的Block Size是32760(bytes)。如果定义一个Block为32760 bytes,那么无论对于3390还是3380,一个Track只能包含1个block。无疑这是很大的浪费,因为这个track上剩下的Bytes是无法取用的。(1个Track只能隶属于1个文件,而且block不可以span track)
所以,空间最优化的block size方案是1个track放2个block。因为block之间有inter block gap,1个track上剩下的可用byte数为55,996个,所以,最优的block size数值为最接近但不超过27,998的那个record size的整数倍的数值。