0、简写说明

LB:logic Block

LBA: Logic Block address

LU: Logic unit (对应一个逻辑存储实体)

VPD: Vital Product Data scsi 协议规定的scsi设备产品数据。

1、Provision的等级

两大等级:Full Provison和Logical Block Provision

1)Full Provision就是没有任何供给策略,所有的lb在设备上都有physical block对应。

2)Logical Block Provision 并不是所有的LB在设备上都有Physical block对应。

1.1 Logical Block Provision的两个等级

1)Resource Provison

设备上保证拥有足够的资源支持所有的LBA都映射到Physical block(虽然当前并不是所有的LBA都mapping到了Physical Block,有的LBA可能是unmap或者anchor了)

2)thin Provison

设备不能保证所有的LBA都有足够的资源映射,也就是说LB数量可以大于设备所有Physical Block支持的量。

1.2 Logical Block Provision上LBA对应的状态

1)mapping:LBA有对应的Physical Block对应(可以多个LBA对应一个Physical Block),也就是硬件为LB分配了物理资源

2)anchor:LBA有对应的phyical Block,当时此物理资源类似于暂留的意思。

3)unmapped:LBA没有对应的Physical Block。

2、scsi 命令

2.1 获取是否支持

2.1 .1 获取logical block provison 能力

通过inquiry 命令查询VPD page 0xb2(logical block provision页)。

4个字段:

1)LBPU(logical block provision unmap)

支持scsi命令unmap

2)LBPWS(logical block provision write same)

支持scsi命令write same(16)with unmap bit

3)LBPWS10(logical block provision write same 10)

支持scsi命令write same(10)with unmap bit

注:如果一个设备即支持write same 16 with unmap和write same 10 with unmap,且它支持write same 32,那么它一定得支持write same 32 with unmap

4)lbprz(logical block provision read zero)

从处于provison的logical block读出的数据为0(如果设置为xx1),或者预设值(此字段设置为010b)。

如果lbprz为000,那么设备不能保证从unmap block读取的数据。

5)ANC_SUP(anchor support)

支持anchor命令。

2.1.2 读设备容量的时候获取provison信息

read capacity 16 命令返回时刻,可以反馈当前logical block的provison状态

1)lbpme(logical block provision management enable )

当设置为1时刻,表示支持logical provision

2)lbprz(logical block provsion read zero)

为1表示,当前从provison 的lba读取的数据硬件保障为0或者特定值。

2.2 触发unmap的命令

2.2.1 unmap命令

对指定位置开始的一段lba启动unmap操作。

注:通过unmap命令我们不能期望后续read返回特定的数据值(例如0)。如果需要这样的话应该使用write same with

Unmapped字段。

2.2.2 write same 10 with unmap

write same 10 命令带unmap字段设置为1会将此字段unmap。

2.2.3 write same 16 with unmap

write same16 命令带unmap 字段为1会将此字段unmap。

注:对于write same 16 with unmap和write same 10 with unmap,如果命令数据区域写入的字段将导致unmap操作后,read去读的数据和协议定义不一致的时候,那么这个unmap操作无效,只会执行正常的write same动作。

2.3 获取设备provision status

通过Get LBA Status命令可以获取设备当前指定lba的provision状态(也可以获取所有的provison状态下的LBA)。

LBA status 为0(mapped),1(deallocated),2(anchored)

注:如果此设备(lu)是full provision,那么status为0.

SCSI 中定义的provision相关推荐

  1. c语言头文件中定义inline static相关函数的优劣

    头文件中常见static inline函数,于是思考有可能遇到的问题,如头文件经常会被包含会不会产生很多副本?网上说法不一.于是自己验证.经过arm-none-eabi-gcc下测试后得出结论. in ...

  2. iOS asset 中定义颜色,xib中便捷访问

    在aseet 中定义一个颜色 这样就可以在xib 中访问颜色了,这样就不用重复的去输入

  3. 主键SQL教程–如何在数据库中定义主键

    Every great story starts with an identity crisis. Luke, the great Jedi Master, begins unsure - " ...

  4. python 类中定义类_Python中的动态类定义

    python 类中定义类 Here's a neat Python trick you might just find useful one day. Let's look at how you ca ...

  5. Log4j使用技巧——让子类使用父类中定义的Logger

    关于Log4j,是一个很庞大的话题,在这里,我不能对其特点和使用方法进行一一描述,只想记录自己在使用Log4j开发项目的过程中遇到的一些问题和自己的解决方案. 在项目中,有时候会遇到这么一种情况,我们 ...

  6. Vue 中定义方法页面上使用

    vue中定义方法的格式 为什么要这样定义 最近在学习前段,特别是HBuildX 我看里面很多方式都是这样使用,所以想强加练习 如何引用 当然我们的editArticle也可以直接放到js中,如下: 都 ...

  7. 在同一个文件中定义多个命名空间

    (PHP 5 >= 5.3.0, PHP 7) 也可以在同一个文件中定义多个命名空间.在同一个文件中定义多个命名空间有两种语法形式. Example #1 定义多个命名空间,简单组合语法 < ...

  8. 在python中定义类时、运算符重载_自定义 Python 类中的运算符和函数重载(上)...

    如果你对 Python 中的str对象使用过 + 或 * 运算符,你一定注意到了它的操作与 int 或 float 类型的区别: 你可能想知道同一内置运算符或函数如何对不同类对象进行不同操作的.这分别 ...

  9. 编写一个头文件,头文件中定义一个宏cube(x)用于求一个数的平方

    <程序设计基础实训指导教程-c语言> ISBN 978-7-03-032846-5 p145 7.1.2 上级实训内容 [实现内容17]编写一个头文件,头文件中定义一个宏cube(x)用于 ...

最新文章

  1. JAVA中的线程安全与非线程安全
  2. makefile例子
  3. static_cast、dynamic_cast、reinterpret_cast、const_cast[转]
  4. 【Python】Matplotlib绘制机器学习中的判别分析示意图
  5. 华为云 AI 实战营计划,带你迈上 AI 之路
  6. 贝叶斯算法伪代码_字节跳动算法面经
  7. 【预测模型】基于matlab BP神经网络预测【含Matlab源码 221期】
  8. umijs 隐藏开发工具_使用UmiJS框架开发React应用
  9. java 前后端分离思想与实现
  10. 【React自制全家桶】九、Redux入手
  11. 小团队管理核心(一)
  12. linux 如何删除gpt分区,Centos 7下如何删除GPT分区
  13. 哪种蓝牙耳机比较好?2022TWS耳机推荐
  14. 硬盘柱面损坏怎么办_硬盘在坏道检测中出现了要多少个损坏柱面才说明这个硬盘废了?...
  15. 枣庄市建筑物矢量数据(Shp格式+带高度)
  16. openmv学习之旅②之色块追踪算法的改善
  17. 大数据意味着向黑客暴露更多数据?
  18. TypeScript基础+进阶
  19. 成都生物研究所高性能计算服务器,专家人才库数据----中科院成都生物所资源库...
  20. mysql characterencoding utf8mb4_Mysql UTF-8mb4字符集的问题

热门文章

  1. 小爱(小米),天猫精灵(阿里),小度(百度),小艺(华为)智能家居系统选择
  2. 问题描述:宏代码导致无法打开文件
  3. python中的matplotlib绘图
  4. CSU - 1655 文本计算器
  5. Android Studio分析工具ApkAnalyzer基本使用
  6. 安卓手机用ADB命令打印APP的崩溃日志
  7. 【转】BCWS、BCWP、ACWP的理解
  8. 开源星空照片_如何拍摄星空的好照片
  9. java poi 边框_java poi 设置边框
  10. SDUT 2504 多项式求和