当前位置: 首页 > news >正文

存储基础 -- 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格式和命令用途,对于驱动开发或存储调优具有重要意义。

相关文章:

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

SCSI命令格式与使用场景 1. SCSI命令描述符块(CDB) 1.1 CDB基本概念 SCSI命令通过**命令描述符块(CDB, Command Descriptor Block)**表示。 CDB长度:SCSI命令根据使用场景有不同长度的CDB,常见的有6字节…...

从崩溃难题看 C 标准库与 Rust:线程安全问题引发的深度思考

在软件开发的世界里,每一次技术的变革和尝试都伴随着未知的挑战。EdgeDB 团队在将部分网络 I/O 代码从 Python 迁移到 Rust 的过程中,就遭遇了一场棘手的问题,这个问题不仅暴露了 C 标准库的线程安全隐患,也让我们对 Rust 的 “安…...

【CSS入门学习】Flex布局设置div水平、垂直分布与居中

水平平均分布 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style>…...

9. 神经网络(一.神经元模型)

首先&#xff0c;先看一个简化的生物神经元结构&#xff1a; 生物神经元有多种类型&#xff0c;内部也有复杂的结构&#xff0c;但是可以把单个神经元简化为3部分组成&#xff1a; 树突&#xff1a;一个神经元往往有多个树突&#xff0c;用于接收传入的信息。轴突&#xff1a;…...

R 语言 | future 包,非阻塞的执行耗时脚本

目的&#xff1a;有一段代码&#xff0c;后面暂时用不到&#xff0c;但是又很耗时&#xff0c;占了当前R session&#xff0c;难道只能等半个小时&#xff0c;等到它结束才能画图&#xff1f; 可以使用R多线程&#xff0c;在支线进程中执行耗时任务&#xff0c;同时不阻塞当前…...

UE学习日志#12 Niagara特效大致了解(水文,主要是花时间读了读文档和文章)

1 核心组件&#xff08;官方文档阅读&#xff09; 一些介绍主要来自官方文档Niagara概述 1.1 Systems 官方文档中的描述&#xff1a; Niagara系统是一种容器&#xff0c;可以放入你要构建该效果的所有内容。在这个系统中&#xff0c;你可以搭建不同的构建块来实现总体效果。…...

【数据结构】_链表经典算法OJ:合并两个有序数组

目录 1. 题目描述及链接 2. 解题思路 3. 程序 3.1 第一版 3.2 第二版 1. 题目描述及链接 题目链接&#xff1a;21. 合并两个有序链表 - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a; 将两个升序链表合并为一个新的 升序 链表并返回。 新链表是通过拼接给…...

Mongodb副本集群为什么选择3个节点不选择4个节点

一、容错能力的定义 在副本集中&#xff0c;容错能力是指系统能够容忍多少个节点故障而仍然能够保持服务可用性的能力。这通常与选举机制中的多数投票原则密切相关。 二、三节点副本集的容错能力 在三节点的副本集中&#xff0c;通常有一个主节点和两个从节点。当主节点故障…...

基于 WEB 开发的手机销售管理系统设计与实现内容

标题:基于 WEB 开发的手机销售管理系统设计与实现 内容:1.摘要 摘要&#xff1a;随着智能手机的普及和电子商务的快速发展&#xff0c;手机销售行业面临着越来越多的挑战和机遇。为了提高销售效率和管理水平&#xff0c;本文设计并实现了一个基于 WEB 的手机销售管理系统。该系…...

LeetCode - Google 大模型校招10题 第1天 Attention 汇总 (3题)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/145368666 GroupQueryAttention(分组查询注意力机制) 和 KVCache(键值缓存) 是大语言模型中的常见架构&#xff0c;GroupQueryAttention 是注意力…...

Vue3 provide/inject用法总结

1. 基本概念 provide/inject 是 Vue3 中实现跨层级组件通信的方案&#xff0c;类似于 React 的 Context。它允许父组件向其所有子孙组件注入依赖&#xff0c;无论层级有多深。 1.1 基本语法 // 提供方&#xff08;父组件&#xff09; const value ref(hello) provide(key, …...

Linux——网络基础(1)

文章目录 目录 文章目录 前言 一、文件传输协议 应用层 传输层 网络层 数据链路层 数据接收与解封装 主机与网卡 数据传输过程示意 二、IP和MAC地址 定义与性质 地址格式 分配方式 作用范围 可见性与可获取性 生活例子 定义 用途 特点 联系 四、TCP和UDP协…...

【记录】日常|从零散记录到博客之星Top300的成长之路

文章目录 shandianchengzi 2024 年度盘点概述写作风格简介2024年的创作内容总结 shandianchengzi 2024 年度盘点 概述 2024年及2025年至今我创作了786即84篇文章&#xff0c;加上这篇就是85篇。 很荣幸这次居然能够入选博客之星Top300&#xff0c;这个排名在我之前的所有年份…...

【二分查找】力扣373. 查找和最小的 K 对数字

给定两个以 非递减顺序排列 的整数数组 nums1 和 nums2 , 以及一个整数 k 。 定义一对值 (u,v)&#xff0c;其中第一个元素来自 nums1&#xff0c;第二个元素来自 nums2 。 请找到和最小的 k 个数对 (u1,v1), (u2,v2) … (uk,vk) 。 示例 1: 输入: nums1 [1,7,11], nums2 …...

池化层Pooling Layer

1. 定义 池化是对特征图进行的一种压缩操作&#xff0c;通过在一个小的局部区域内进行汇总统计&#xff0c;用一个值来代表这个区域的特征信息&#xff0c;常用于卷积神经网络&#xff08;CNN&#xff09;中。 2. 作用 提取代表性信息的同时降低特征维度&#xff0c;具有平移…...

力扣算法题——11.盛最多水的容器

目录 &#x1f495;1.题目 &#x1f495;2.解析思路 本题思路总览 借助双指针探索规律 从规律到代码实现的转化 双指针的具体实现 代码整体流程 &#x1f495;3.代码实现 &#x1f495;4.完结 二十七步也能走完逆流河吗 &#x1f495;1.题目 &#x1f495;2.解析思路…...

自由学习记录(32)

文件里找到切换颜色空间 fgui中的 颜色空间是一种总体使用前的设定 颜色空间&#xff0c;和半透明混合产生的效果有差异&#xff0c;这种问题一般可以产生联系 动效就是在fgui里可以编辑好&#xff0c;然后在unity中也准备了对应的调用手段&#xff0c;可以详细的使用每一个具…...

VScode+Latex (Recipe terminated with fatal error: spawn xelatex ENOENT)

使用VSCode编辑出现Recipe terminated with fatal error: spawn xelatex ENOENT问题咋办&#xff1f; 很好解决&#xff0c;大概率的原因是因为latex没有添加到系统环境变量中&#xff0c;所有设置的编译工具没有办法找到才出现的这种情况。 解决方法&#xff1a; winR 然后输…...

「蓝桥杯题解」蜗牛(Java)

题目链接 这道题我感觉状态定义不太好想&#xff0c;需要一定的经验 import java.util.*; /*** 蜗牛* 状态定义&#xff1a;* dp[i][0]:到达(x[i],0)最小时间* dp[i][1]:到达 xi 上方的传送门最小时间*/public class Main {static Scanner in new Scanner(System.in);static f…...

PHP EOF (Heredoc) 详解

PHP EOF (Heredoc) 详解 PHP 中的 EOF(End Of File)是一种非常有用的语法特性,允许开发者创建多行字符串。它特别适合于创建格式化文本,如配置文件、HTML 模板等。本文将详细讲解 PHP EOF 的用法、优势以及注意事项。 什么是 EOF? EOF 是一种特殊的字符串定义方式,它允…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 &#xff08;一&#xff09;实时滤波与参数调整 基础滤波操作 60Hz 工频滤波&#xff1a;勾选界面右侧 “60Hz” 复选框&#xff0c;可有效抑制电网干扰&#xff08;适用于北美地区&#xff0c;欧洲用户可调整为 50Hz&#xff09;。 平滑处理&…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

ip子接口配置及删除

配置永久生效的子接口&#xff0c;2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...