存储基础 -- SCSI命令格式与使用场景

SCSI命令格式与使用场景

1. SCSI命令描述符块(CDB)

1.1 CDB基本概念

SCSI命令通过**命令描述符块(CDB, Command Descriptor Block)**表示。

  • CDB长度:SCSI命令根据使用场景有不同长度的CDB,常见的有6字节、10字节、12字节、16字节。
    • 示例:READ(6)、READ(10)、READ(12)、READ(16)命令表示的CDB长度不同。
  • 操作码(Opcode):CDB的第一个字节是“操作码”,标识具体命令类型。例如:
    • 0x00表示TEST UNIT READY命令。
    • 0x12表示INQUIRY命令。
  • 参数字段:后续字段根据命令的功能定义不同的参数,例如逻辑块地址(LBA)、传输长度、标志位等。

1.2 CDB结构示例

READ(10)命令的CDB结构
Byte | 位    | 名称                   | 含义
-----+------+-----------------------+--------------------------------------0  |  7-0 | Operation Code (0x28) | 标识READ(10)命令1  |  7   | RelAdr                | 是否相对地址模式|  6-5 | Reserved              | 保留字段|  4   | FUA                   | 强制直接读写介质|  3   | DPO                   | 禁用缓存换出|  2-0 | LUN                   | 逻辑单元号(Logical Unit Number)2-5 |      | Logical Block Address | 要读取的起始LBA6  |      | Reserved              | 保留字段7-8 |      | Transfer Length       | 要读取的逻辑块数量9  |      | Control               | 控制位
示例说明
  • Opcode标识命令类型。
  • Logical Block Address指定操作的逻辑块地址。
  • Transfer Length决定传输的逻辑块数量。

2. SCSI命令使用场景

以下列举了常见的SCSI命令及其使用场景。

2.1 TEST UNIT READY

  • 命令含义:检查目标设备是否已准备好接收命令。
  • 场景与用途
    • 系统启动时用于检查设备是否就绪。
    • 在读写操作前确认设备状态(例如光驱是否加载了介质)。

2.2 INQUIRY

  • 命令含义:获取SCSI设备的基本信息,包括供应商ID、产品ID、固件版本等。
  • 场景与用途
    • 系统识别设备型号和特性。
    • 存储管理中用于识别RAID卡或SAN环境中的设备信息。

2.3 REQUEST SENSE

  • 命令含义:获取设备错误信息或状态变化。
  • 场景与用途
    • 当命令返回错误时,用于诊断原因。
    • 存储故障排查和设备状态监控。

2.4 START STOP UNIT

  • 命令含义:控制设备马达启动或停止,或装载/卸载介质。
  • 场景与用途
    • 硬盘节能管理(停止磁盘旋转)。
    • 光驱或磁带机装载/卸载介质。

2.5 READ CAPACITY

  • 命令含义:获取设备的容量信息,包括逻辑块大小和最大逻辑块地址。
  • 场景与用途
    • 确定磁盘容量,用于分区和文件系统配置。
    • 对大容量设备(>2TB)使用READ CAPACITY(16)。

2.6 READ / WRITE

  • 命令含义:对逻辑块进行读写操作。
  • 场景与用途
    • 所有存储I/O操作的核心。
    • 在现代存储环境中,READ(16)和WRITE(16)支持超大地址范围。

2.7 MODE SENSE / MODE SELECT

  • 命令含义
    • MODE SENSE:读取设备模式参数。
    • MODE SELECT:修改设备模式参数。
  • 场景与用途
    • 查询或配置硬盘缓存策略。
    • 磁带数据压缩或光驱特性调整。

2.8 SYNCHRONIZE CACHE

  • 命令含义:将设备缓存中的数据写回物理介质。
  • 场景与用途
    • 系统关机或文件系统卸载时保证数据一致性。
    • RAID控制器或存储阵列切换前的缓存同步。

2.9 FORMAT UNIT

  • 命令含义:低级格式化设备,重新初始化物理扇区布局。
  • 场景与用途
    • 磁带或硬盘的出厂初始化。
    • 修复介质异常。

2.10 VERIFY

  • 命令含义:校验指定逻辑块范围的数据。
  • 场景与用途
    • 确保写入数据正确性。
    • RAID一致性校验。

2.11 PREVENT / ALLOW MEDIUM REMOVAL

  • 命令含义:控制是否允许手动移除介质。
  • 场景与用途
    • 写入或读取光盘/磁带时防止介质被意外弹出。

2.12 LOG SENSE / LOG SELECT

  • 命令含义
    • LOG SENSE:读取设备日志信息(如温度、错误统计等)。
    • LOG SELECT:修改日志参数或清空日志。
  • 场景与用途
    • 获取设备状态和运行记录。
    • 监控设备性能和健康状况。

2.13 REASSIGN BLOCKS / WRITE SAME

  • 命令含义
    • REASSIGN BLOCKS:将坏块重新映射到备用扇区。
    • WRITE SAME:批量写入固定数据。
  • 场景与用途
    • 修复磁盘坏块。
    • 快速初始化或清零逻辑块。

2.14 READ DEFECT DATA

  • 命令含义:读取存储介质上的缺陷信息。
  • 场景与用途
    • 查看硬盘或磁带的缺陷分布。
    • 判断设备健康状态。

2.15 SEND DIAGNOSTIC / RECEIVE DIAGNOSTIC RESULTS

  • 命令含义:执行设备自检或获取诊断结果。
  • 场景与用途
    • 存储设备的在线自检。
    • 高端存储的维护和健康检查。

3. 总结

SCSI命令通过CDB表示,并通过不同的传输协议(如SAS、Fibre Channel、iSCSI等)进行传输。常见的命令包括设备就绪检测(TEST UNIT READY)、信息获取(INQUIRY)、读写操作(READ/WRITE)、容量查询(READ CAPACITY)、错误诊断(REQUEST SENSE)等。

在实际应用中,这些命令由操作系统或驱动封装,用户通过文件系统或存储管理工具间接使用。深入了解CDB格式和命令用途,对于驱动开发或存储调优具有重要意义。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/68293.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

认知计算与 AI 大模型:数据仓库、数据湖与数据分析的变革力量

大家好,我是秉寒,今天是龙年腊月 27 了,还有两天就是蛇年除夕了,在此借 CSDN,给大家拜年!祝愿大家在新的一年里,技术精进,工作顺遂,代码无 Bug,项目都超神&am…

[MySQL]MySQL数据库的介绍和库相关操作

目录 一、数据库介绍 1.什么是数据库 2.为什么使用数据库 3.数据库的操作运行逻辑 4.MySQL架构 5.SQL语句的分类 二、数据库的操作 1.数据库的连接 2.数据库的操作 创建数据库 查看数据库 显示数据库的创建语句 删除数据库 修改数据库 3.字符集和校验集 查看系…

亚博microros小车-原生ubuntu支持系列:13 激光雷达避障

一 背景知识 小车发了了数据包含激光雷达数据,类型是sensor_msgs/msg/LaserScan bohubohu-TM1701:~$ ros2 node info /YB_Car_Node /YB_Car_Node Subscribers: /beep: std_msgs/msg/UInt16 /cmd_vel: geometry_msgs/msg/Twist /servo_s1: std_msgs/…

机器学习 ---逻辑回归

逻辑回归是属于机器学习里面的监督学习,它是以回归的思想来解决分类问题的一种非常经典的二分类分类器。由于其训练后的参数有较强的可解释性,在诸多领域中,逻辑回归通常用作 baseline 模型,以方便后期更好的挖掘业务相关信息或提…

使用 Vue 3 的 watchEffect 和 watch 进行响应式监视

Vue 3 的 Composition API 引入了 <script setup> 语法&#xff0c;这是一种更简洁、更直观的方式来编写组件逻辑。结合 watchEffect 和 watch&#xff0c;我们可以轻松地监视响应式数据的变化。本文将介绍如何使用 <script setup> 语法结合 watchEffect 和 watch&…

volatile之四类内存屏障指令 内存屏障 面试重点 底层源码

目录 volatile 两大特性 可见性 有序性 总结 什么是内存屏障 四个 CPU 指令 四大屏障 重排 重排的类型 为什么会有重排&#xff1f; 线程中的重排和可见性问题 如何防止重排引发的问题&#xff1f; 总结 happens-before 和 volatile 变量规则 内存屏障指令 写操作…

ES6+新特性,var、let 和 const 的区别

在 JavaScript 中&#xff0c;var、let 和 const 都用于声明变量&#xff0c;但它们有一些重要的区别&#xff0c;主要体现在 作用域、可变性和提升机制 等方面。 1. 作用域&#xff08;Scope&#xff09; var: var 声明的变量是 函数作用域&#xff0c;也就是说&#xff0c;它…

模拟电子技术-常用半导体器件

模拟电子技术-常用半导体器件 一、半导体基础知识二、PN结2.1 PN结简介2.2 PN结正向导电性2.2.1 正向电压2.2.2 反向电压2.2.3 PN结伏安特性 三、二极管3.1 二极管伏安特性曲线3.2 二极管参数和等效电路3.2.1 性能参数3.2.2 等效电路 3.3 二极管限幅和整流应用(正向特性)3.4 稳…

01-02 三元组与七元组

01-02 三元组与七元组 好的&#xff01;以下是关于网络中的 三元组&#xff08;3-Tuple&#xff09; 和 七元组&#xff08;7-Tuple&#xff09; 的详细扩展说明&#xff0c;包括它们的组成、用途以及与五元组的对比。 1. 三元组&#xff08;3-Tuple&#xff09; 组成 三元组…

2024年博客之星主题创作|2024年蓝桥杯与数学建模年度总结与心得

引言 2024年&#xff0c;我在蓝桥杯编程竞赛和数学建模竞赛中投入了大量时间和精力&#xff0c;这两项活动不仅加深了我对算法、数据结构、数学建模方法的理解&#xff0c;还提升了我的解决实际问题的能力。从蓝桥杯的算法挑战到数学建模的复杂应用&#xff0c;我在这些竞赛中…

javascript-es6 (一)

作用域&#xff08;scope&#xff09; 规定了变量能够被访问的“范围”&#xff0c;离开了这个“范围”变量便不能被访问 局部作用域 函数作用域&#xff1a; 在函数内部声明的变量只能在函数内部被访问&#xff0c;外部无法直接访问 function getSum(){ //函数内部是函数作用…

数据的秘密:如何用大数据分析挖掘商业价值

数据的秘密&#xff1a;如何用大数据分析挖掘商业价值 在这个数据爆炸的时代&#xff0c;我们每天都在产生、存储和处理着海量的数据。然而&#xff0c;仅仅拥有数据并不等于拥有价值。就像拥有一座金矿&#xff0c;不开采和提炼&#xff0c;最终只是一堆毫无用处的石头。如何…

使用eNSP配置GRE VPN实验

实验拓扑 实验需求 1.按照图示配置IP地址 2.在R1和R3上配置默认路由使公网区域互通 3.在R1和R3上配置GRE VPN&#xff0c;使两端私网能够互相访问&#xff0c;Tunne1口IP地址如图 4.在R1和R3上配置RIPv2来传递两端私网路由 GRE VPN配置方法&#xff1a; 发送端&#xff1a; …

Ansible自动化运维实战--script、unarchive和shell模块(6/8)

文章目录 一、script模块1.1、功能1.2、常用参数1.3、举例 二、unarchive模块2.1、功能2.2、常用参数2.3、举例 三、shell模块3.1、功能3.2、常用参数3.3、举例 一、script模块 1.1、功能 Ansible 的 script 模块允许你在远程主机上运行本地的脚本文件&#xff0c;其提供了一…

大数据Hadoop入门1

目录 相关资料 第一部分 1.课程内容大纲和学习目标 2.数据分析和企业数据分析方向 3.数据分析基本流程步骤 4.大数据时代 5.分布式和集群 6.Linux操作系统概述 7.VMware虚拟机概念与安装 8.centos操作系统的虚拟机导入 9.VMware虚拟机常规使用、快照 第二部分 1.课…

【Elasticsearch】doc_values 可以用于查询操作

确实&#xff0c;doc values 可以用于查询操作&#xff0c;尽管它们的主要用途是支持排序、聚合和脚本中的字段访问。在某些情况下&#xff0c;Elasticsearch 也会利用 doc values 来执行特定类型的查询。以下是关于 doc values 在查询操作中的使用及其影响的详细解释&#xff…

TS开发的类型索引目录

TypeScript 相关知识整理 一、相关文档 Web API 类型&#xff1a;https://developer.mozilla.org/zh-CN/docs/Web/APIHTML DOM类型&#xff1a;https://developer.mozilla.org/zh-CN/docs/Web/API/HTMLElementReact类型文档&#xff1a;https://react-typescript-cheatsheet.…

Python 对列表进行排序的 5 种方法

在 Python 中&#xff0c;排序是一个非常常见且重要的操作&#xff0c;尤其是对列表的排序。Python 提供了多种方法来实现排序操作&#xff0c;从内置函数到自定义排序逻辑&#xff0c;都可以方便地满足不同的需求。以下将介绍 Python 对列表进行排序的 5 种方法&#xff0c;并…

2025年1月26日(超声波模块:上拉或下拉电阻)

添加上拉或下拉电阻是在电子电路设计和嵌入式系统编程中常用的一种技术手段&#xff0c;下面为你详细解释其含义、作用和应用场景。 基本概念 在数字电路里&#xff0c;引脚的电平状态通常有高电平&#xff08;逻辑 1&#xff09;和低电平&#xff08;逻辑 0&#xff09;两种…

项目概述与规划 (I)

项目概述与规划 (I) JavaScript的学习已经接近尾声了&#xff0c;最后我们将通过一个项目来讲我们在JavaScript中学习到的所有都在这个项目中展现出来&#xff0c;这个项目的DEMO来自于Udemy中的课程&#xff0c;作者是Jonas Schmedtmann&#xff1b; 项目规划 项目步骤 用户…