A storage Bug's Space
2T限制的理论分析
查看( 855 ) /
评论( 5 )
TAG:
-
Marco
发布于2005-04-22 10:58:28
-
嗯,支持一下
-
rechardluo
发布于2005-04-22 13:07:20
-
对于存储的各种限制,现在做一个分析!欢迎大家讨论和更正。
对于应用数据到存储系统,通常遵循如下的流程,:
应用
|
OS
|
文件系统
|
卷管理器
|
存储设备驱动程序
|
存储设备
因此,整个流程都可能存在一些限制:
a, 如OS,就有32位OS和64位OS的一些限制;
b, 文件系统,如FAT16,就有2G分区的限制。这是和它定义的簇号变量相关,其簇号最大为0XFFFF(就是16位),同时每簇的大小通常为32KB,所以分区的最大值为2^16 * 2^15B = 2^31B= 2GB。不过这一限制早就突破了!
c,对于卷管理器,一般是将对磁盘的访问,设置为对应的命令,对于ATA设备驱动,就发送ATA的命令(就是处理IDE硬盘);对于SCSI驱动,OS会发送一个包含SCSI BLOCK COMMAND的命令(可以参考SPEC),而这些SCSI BLOCK COMMAND命令(特别是READ、WRITE命令)里面的LBA地址变量的长度,将决定一个TARGET上LUN能够访问的存储空间,像READ(6),READ(10),READ(12),WRITE(10),WRITE(12)命令,其LBA为32位长度,而对于硬盘来说每个块大小位512B,进而存在2TB的限制。在SCSI BLOCK COMMAND第二版中,扩展了该命令,LBA可以有64位,突破了该限制。
d,对于IDE硬盘设备,以前采用的CHS模式,还有512MB的容量限制,这也是因为CHS的空间为20BIT,从而只能寻址2^20 *512B=512MB,
后来采用了28BIT的LBA寻址以及48BIT的LBA寻址,这些限制已经被突破。
值得注意的是,有些数据库应用可以跨越文件系统,直接操作块设备来完成其操作,因此数据库供应商也可能存在限制。同时对于网络存储来说,各个设备和软件都可能存在限制,因此大家都会尊崇统一的SPEC,从而消除这些限制。
总的来说,对于存储设备的限制,如果遵守SCSI协议,那么其存储空间的限制,最重要的部分应该是和实现的SCSI命令相关联的!而且这些限制可能都是早期的设计中,没有考虑全后面的应用而产生的,扩展这些限制在技术上并不是不可跨越,而是在于一些向后兼容性的问题。
坛子里面牛人多,还希望各位高人指正、补充。
-
RadioShack发布于2005-04-22 19:46:09
-
坛子里难得一见的即系统又有深度的帖子,受益匪浅。
-
小菜发布于2005-04-26 15:23:56
-
支持
那么SATA的硬盘寻址,现在是采用什么模式呢
而48位的LBA寻址,与64位相比还会产生多大的差距
-
rechardluo
发布于2005-04-26 17:47:30
-
对于SATA硬盘,它走的就是ATA的路线,只是再PHY层的连接上有了变化,其他的都没有大的变化(除了增加了一些额外的控制、状态、和错误寄存器),SATA兼容ATA的命令,因此它的寻址模式和ATA(IDE)是一样的!
至于64BIT的硬盘寻址,应该是近期都比较难以突破,因为目前的48BIT寻址已经充分的利用了ATA COMMAND BLOCK REGS了,它用3各BYTE来传输LBA的长度,对于48BIT(刚好6BYTE)已经需要两次写寄存器才能完成。因此,近期内,硬盘很难支持64位寻址。此为个人意见,欢迎拍砖!
