美文网首页
SCSI logical block provisioning

SCSI logical block provisioning

作者: Jiafu | 来源:发表于2020-01-01 12:03 被阅读0次

Overview

谈Logical block provisioning之前,介绍一下thin LUN的概念。所谓thin LUN,就是LUN的LBA和实际物理块映射还没有确定。比如这个LUN的逻辑大小是1000G,但是这个LUN实际上只有500G的LBA是有实际物理块映射的,另外500G是没有映射的。等到LUN的用户真的将已经分配的500G空间用完的时候,需要更多的空间,那么这时候可以考虑将没有映射的500G LBA空间也建立到物理块的映射,然后可用的空间就扩大了,这就是thin LUN的原理。这样可以做到LUN的实际物理空间按需分配,达到节省资源的目的。有Thin LUN就有Thick LUN,相对的,thick LUN就是所有的LBA都和实际的物理块对应,这样读写性能可能会相对好一些(因为不需要动态创建映射),也不会有后续的创建映射失败的问题。但是这样做的缺点就是,资源的利用率可能会低点。

所以每个LUN的LBA,要么是map状态,要么是unmap状态。mapped状态就是LBA到PB的映射是确定的。unmapped状态就是LBA到PB的映射是不确定的。

LBA映射状态

unmapped又细分为两种状态:

  • anchored:针对anchored的LBA的写操作,不需要分配额外的映射资源。说白了对于anchored的LBA,随时可以和具体的PB对应上。
  • deallocated:针对deallocated的LBA的写操作,可能需要分配额外的映射资源。

对于mapped状态和anchored状态的LBA,可以认为映射资源都是保留的。而deallocated的映射资源是不保留的。

LUN一共有3种 logical block provisioning:


不同类型的logical block provisioning
  • Fully provisioned: 所有的LBA和PB的映射都是确定的,且不支持 logical block provisioning management,LBA的状态也只有mapped。
  • Resource provisioned: LUN有足够的资源来映射所有的LBAs,这些LBAs由READ CAPACITY返回。
  • Thin provisioned: 精简配置。LUN未必有足够的资源来映射所有的LBAs。必须至少支持mapped和deallocated两种状态。另外Resource provisioned和thin provisioned并非固定的,两种状态是可以转变的。例如如果资源不足,那么LUN可能从resource provisioned变成thin provisioned,同时需要建立一个unit attention,additional sense code 设置为 INQUIRY DATA HAS CHANGED。

Resource provisioned和Thin provisioned LUN,都需要支持 logical block provisioning management操作:

  • shall support the Logical Block Provisioning VPD page
  • may supply a provisioning group designation descriptor as defined in the Logical Block Provisioning VPD page;
  • may support logical block provisioning thresholds ;
  • may support the GET LBA STATUS (16) command;
  • may support the GET LBA STATUS (32) command
  • should support the Block Limits VPD page; and
  • shall support at least one of the following unmap mechanisms:
    • the UNMAP command;
    • the UNMAP bit in the WRITE SAME (10) command;
    • the UNMAP bit in the WRITE SAME (16) command; or
    • the UNMAP bit in the WRITE SAME (32) command.

查看LUN是否支持 logical block provisioning management

通过inquiry 命令查询VPD page 0xb2(logical block provision页),例如:

[root@node100 ~]# sg_vpd --page=lbpv /dev/sdc
Logical block provisioning VPD page (SBC):
  Unmap command supported (LBPU): 0  # 不支持unmap
  Write same (16) with unmap bit supported (LBWS): 0 # 不支持scsi命令write same(16)with unmap bit
  Write same (10) with unmap bit supported (LBWS10): 0 # scsi命令write same(10)with unmap bit
  Logical block provisioning read zeros (LBPRZ): 0
  Anchored LBAs supported (ANC_SUP): 0
  Threshold exponent: 0
  Descriptor present (DP): 0
  Provisioning type: 0
[root@node100 ~]# 

字段含义:

  • LBPU(logical block provision unmap):是否支持unmap命令。0代表不支持,1代表支持。
  • LBPWS(logical block provision write same):1代表支持scsi命令write same(16)with unmap bit,0代表不支持。
  • LBPWS10(logical block provision write same 10):1代表支持scsi命令write same(10)with unmap bit,0代表不支持。如果一个设备即支持write same 16 with unmap和write same 10 with unmap,且它支持write same 32,那么它一定得支持write same 32 with unmap
  • LBPRZ(logical block provision read zero):从处于provison的logical block读出的数据为0(如果设置为xx1),或者预设值(此字段设置为010b)。如果lbprz为000,那么设备不能保证从unmap block读取的数据。
  • ANC_SUP:1表示支持anchored LBAs,0表示不支持。
  • Provisioning type:0表示fully provisioned,1表示resource provisioned,2表示thin provisioned。

参考资料

SCSI Block Commands – 4

相关文章

网友评论

      本文标题:SCSI logical block provisioning

      本文链接:https://www.haomeiwen.com/subject/mooioctx.html