sg3_utils:强大的SCSI命令工具集

sg3_utils:强大的SCSI命令工具集

【免费下载链接】sg3_utils Deprecated git-svn mirror for sg3_utils 【免费下载链接】sg3_utils 项目地址: https://gitcode.com/gh_mirrors/sg/sg3_utils

项目介绍

sg3_utils是一个开源的工具包,最初设计用于向使用SCSI命令集的存储设备发送单个SCSI命令。该工具包分为三类:

  1. sg_raw:用户提供CDB(Command Descriptor Block),并可选地指定数据输入和输出缓冲区的大小。
  2. 单命令工具:大多数工具发送一个SCSI命令,名称以"sg_"开头,后跟命令名称。例如,sg_inq发送SCSI INQUIRY命令。
  3. 复制类型工具:如sg_ddsgp_ddsgm_dd,基于Unix的dd命令功能和命令行语法,可用于验证两个存储设备是否包含相同的数据。

平台支持

这些工具主要在Linux上编写,支持从Linux内核2.4到当前系列6。虽然第三类工具仅在Linux上实现,但第一和第二类工具已移植到Android、FreeBSD、NetBSD、Solaris和Windows等多个平台。Windows版本使用Cygwin或MinGW(加上Msys)构建环境。

核心技术架构

共享库设计

许多这些工具共享大量代码(例如SCSI错误消息),通过名为libsgutils的库避免了大量重复(可能容易出错)的代码。不同的发行版对库和包的命名有不同的策略,因此这个包有时被称为"sg3-utils"(即下划线变成连字符)。

多命令集支持

SCSI命令集不是唯一广泛使用的存储命令集,还有ATA和NVMe命令集。SCSI命令集可以将SCSI命令转换为ATA命令(称为SAT:SCSI到ATA转换)。SAT包括一个ATA PASS-THROUGH SCSI命令,sg_sat_*工具(有四个)是使用SAT的示例。

NVMe命令集相对较新。sg_inq工具在底层设备是SCSI设备时发送SCSI INQUIRY命令,如果底层设备是NVMe控制器或命名空间,则发送NVMe Admin Identify命令并解码响应。

JSON输出支持

借鉴smartmontools项目,JSON正逐步添加到那些解码大量存储设备提供的(元)数据的工具中。人类可读的输出仍然是默认设置,'--json'选项将输出更改为JSON。'--json'选项本身接受一个可选参数,该参数是一个字符串,其中每个字符打开(或关闭,如果前面有'-')JSON输出的某些属性。

JSON的一个困难是其整数表示是有符号的,大小为64位,并以十进制呈现,如果需要则带前导负号。然而存储元数据倾向于对较大的值(例如逻辑块地址)使用十六进制。这个问题通过'h'参数解决,它将十进制呈现的数字更改为具有两个名称-值对的JSON子对象。

完整文档体系

手册页是工具文档的主要方法。该包安装的所有工具和脚本都有一个手册页。examples、testing和utils目录中的工具不会安装,也没有手册页。几乎所有工具都有运行时帮助,通常使用'-h'短选项或'--help'长选项调用。

有一个名为"sg3_utils"的总体手册页。所有手册页都放在第8章中,该章节用于系统管理命令/工具。

实际应用场景

存储设备管理

通过发送SCSI命令,管理员可以查询设备信息、执行诊断操作等。

数据验证与复制

使用sg_dd等工具,可以验证两个存储设备的数据一致性,或执行数据复制操作。

跨平台兼容性

支持多种操作系统和存储命令集,确保在不同环境下的兼容性和灵活性。

项目特色

  • 多功能性:提供多种工具,涵盖从单个SCSI命令发送到复杂的数据复制操作
  • 跨平台支持:不仅限于Linux,还支持Android、FreeBSD、NetBSD、Solaris和Windows等多个平台
  • 强大的库支持:通过libsgutils库,减少代码重复,提高工具的可维护性和稳定性
  • 详细的文档:提供全面的manpages和HTML文档,帮助用户快速上手和深入理解工具的使用

快速开始

要使用sg3_utils,首先需要克隆仓库:

git clone https://gitcode.com/gh_mirrors/sg/sg3_utils

然后按照标准的构建流程进行编译和安装:

cd sg3_utils
./bootstrap
./configure
make
sudo make install

实用示例

项目中提供了丰富的示例代码,位于examples目录中:

  • scsi_inquiry.c:基本的SCSI查询命令示例
  • sg_simple1.csg_simple5.c:简单命令使用演示
  • sg_persist_tst.sh:持久化命令测试脚本

这些示例代码展示了如何使用sg3_utils的各种功能,从基本的命令发送到复杂的设备管理操作。

sg3_utils为存储专业人士提供了强大而灵活的工具集。无论你是系统管理员、存储工程师还是开发人员,sg3_utils都能为你提供强大的支持。立即开始使用这个功能丰富的SCSI命令工具集,提升你的存储设备管理效率。

【免费下载链接】sg3_utils Deprecated git-svn mirror for sg3_utils 【免费下载链接】sg3_utils 项目地址: https://gitcode.com/gh_mirrors/sg/sg3_utils

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值