A storage Bug's Space

2T限制的理论分析

上一篇 / 下一篇  2005-04-21 22:56:31

查看( 855 ) / 评论( 5 )
SCSI BLOCK COMMAND第二版:
对于READ(6),READ(10),READ(12),WRITE(10),WRITE(12),其LBA的地址长度为4字节,这也就是说LBA的长度空间为2^32,在加上LBA的地址为块地址,而块的大小为512BYTE,从而其寻址空间为:
    2^32 * 512BYTE = 2^32 * 2^9BYTE = 2^41BYTE = 2TB,
以前的大部分OS都是采用这种命令,所以存在2T的限制;

而对于READ(16)、READ(32)、WRITE(16)、WRITE(32),其LBA的地址空间为8字节,就是64位(可能和64位OS相关),因此按照上述计算方法,其寻址空间有:
    2^64 * 2^9 B = 2^ 73 BYTE。

   因此采用新SCSI命令的OS完全可以克服2TB的限制!
   不过对于目前的硬盘来说,大都是支持48bit的LBA寻址,因为对于发下来的64BIT的LBA地址,目前来说是用不完的。但是48bit的LBA对于目前的应用来说已经完全足够啦!

TAG:

Marco的个人空间 Marco 发布于2005-04-22 10:58:28
嗯,支持一下
Rechardluo Space 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 Space 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位寻址。此为个人意见,欢迎拍砖!
我来说两句

(可选)

日历

« 2009-01-09  
    123
45678910
11121314151617
18192021222324
25262728293031

数据统计

  • 访问量: 1841
  • 日志数: 16
  • 建立时间: 2006-08-23
  • 更新时间: 2007-01-19

RSS订阅

Open Toolbar