串行连接SCSI(SAS)Linux实用程序

sasutils的Python项目详细描述


sasutils是一组命令行工具和python库,用于简化串行连接scsi(sas)结构的管理。

https://img.shields.io/pypi/v/sasutils.svgSupported Python VersionsLicense

sasutils命令行工具

  • SAS U计数器
  • SAS U设备
  • SAS U发现
  • SES U报告

另外,在udev规则中使用的两个“zeroconf”udev脚本使用ses-2子外壳昵称创建友好的设备别名。

  • 别名
  • sas_sd_snic_别名

注意

sasutils从sysfs(/sys)获取大部分系统数据时,sg-ses(在sg3-utils或sg3-utils中可用) 要使某些ses功能正常工作,需要使用smp-utils或smp-utils中提供的smp-discover。

SAS计数器

sas_计数器报告sas/ses/sd i/o和phy错误计数器,并在适合碳/石墨的输出中提供sas拓扑信息。 此命令还支持以下示例中的ses-2昵称(io1-sassw1是SAS交换机的昵称,io1-jbod1-0是JBOD SIM的昵称)。

$ sas_counters
...
oak-io1-s1.SAS9300-8e.0x500605b00ab01234.Switch184.io1-sassw1.JB4602_SIM_0.io1-jbod1-0.bays.41.ST8000NM0075.0x5000c50084c79876.ioerr_cnt 2 1487457378
oak-io1-s1.SAS9300-8e.0x500605b00ab01234.Switch184.io1-sassw1.JB4602_SIM_0.io1-jbod1-0.bays.41.ST8000NM0075.0x5000c50084c79876.iodone_cnt 7154904 1487457378
oak-io1-s1.SAS9300-8e.0x500605b00ab01234.Switch184.io1-sassw1.JB4602_SIM_0.io1-jbod1-0.bays.41.ST8000NM0075.0x5000c50084c79876.iorequest_cnt 7154906 1487457378
...
oak-io1-s1.SAS9300-8e.0x500605b00ab05678.Switch184.io1-sassw2.phys.15.invalid_dword_count 5 1487457378
oak-io1-s1.SAS9300-8e.0x500605b00ab05678.Switch184.io1-sassw2.phys.15.loss_of_dword_sync_count 1 1487457378
oak-io1-s1.SAS9300-8e.0x500605b00ab05678.Switch184.io1-sassw2.phys.15.phy_reset_problem_count 0 1487457378
oak-io1-s1.SAS9300-8e.0x500605b00ab05678.Switch184.io1-sassw2.phys.15.running_disparity_error_count 1 1487457378
...

SAS发现

显示SAS拓扑。默认情况下,sas_discover尝试折叠常见设备(如磁盘)。使用-v-vv-vvv--addr显示更多详细信息。

$ sas_discover -v
oak-io1-s1
|--host35 SAS9300-8e
|  `--8x--expander-35:0 ASTEK
|         |--1x--end_device-35:0:0
|         |      `--enclosure io1-sassw1 ASTEK
|         `--4x--expander-35:1 QCT
|            |-- 60 x end_device -- disk
|            `--  1 x end_device -- enclosure io1-jbod1-0 QCT
`--host36 SAS9300-8e
   `--8x--expander-36:0 ASTEK
          |--1x--end_device-36:0:0
          |      `--enclosure io1-sassw2 ASTEK
          `--4x--expander-36:1 QCT
             |-- 60 x end_device -- disk
             `--  1 x end_device -- enclosure io1-jbod1-1 QCT

SAS设备

ZeroConf工具,用于扫描SAS设备并解析关联的存储模块。有助于快速检查布线和硬件设置。

与-v一起使用时,sas_devices还将显示所有带序列号的磁盘设备。

以下示例显示了使用2个sim(一个“存储模块组”)正确检测60个磁盘jbod的方法。

$ sas_devices
Found 2 SAS hosts
Found 4 SAS expanders
Found 1 enclosure groups
Enclosure group: [io1-jbod1-0][io1-jbod1-1]
NUM         VENDOR        MODEL    REV  PATHS
 60 x      SEAGATE ST8000NM0075   E002      2
Total: 60 block devices in enclosure group

SES U报告

SES状态和环境指标。

与-c一起使用时,此命令将查找所有存储模块,然后使用ses-2昵称并使用sg_ses输出适合碳/石墨的结果。

$ ses_report -c --prefix=datacenter.stanford
datacenter.stanford.io1-sassw1.Cooling.Left_Fan.speed_rpm 19560 1476486766
datacenter.stanford.io1-sassw1.Cooling.Right_Fan.speed_rpm 19080 1476486766
datacenter.stanford.io1-sassw1.Cooling.Center_Fan.speed_rpm 19490 1476486766
...

使用-s获取所有检测到的ses元素描述符的状态。

# ses_report -s --prefix=datacenter.stanford | grep SIM
datacenter.stanford.io1-jbod1-0.Enclosure_services_controller_electronics.SIM_00 OK
datacenter.stanford.io1-jbod1-0.Enclosure_services_controller_electronics.SIM_01 OK
datacenter.stanford.io1-jbod1-0.SAS_expander.SAS_Expander_SIM_0 OK
datacenter.stanford.io1-jbod1-0.SAS_expander.SAS_Expander_ISIM_2 OK
datacenter.stanford.io1-jbod1-0.SAS_expander.SAS_Expander_ISIM_0 OK
datacenter.stanford.io1-jbod1-1.Enclosure_services_controller_electronics.SIM_00 OK
datacenter.stanford.io1-jbod1-1.Enclosure_services_controller_electronics.SIM_01 OK
datacenter.stanford.io1-jbod1-1.SAS_expander.SAS_Expander_SIM_1 OK
datacenter.stanford.io1-jbod1-1.SAS_expander.SAS_Expander_ISIM_3 OK
datacenter.stanford.io1-jbod1-1.SAS_expander.SAS_Expander_ISIM_1 OK

警告

ses_report需要最新版本的sg3_utils,例如不适用于CentOS 6附带的版本。

别名

使用每个设备的ses-2子机柜昵称和机架标识符生成udev别名。

例如,在udev规则中添加以下内容:

KERNEL=="sd*", PROGRAM="/usr/bin/sas_sd_snic_alias %k", SYMLINK+="%c"

这将生成由设备子机柜昵称和间隔标识符组成的udev别名。在以下情况下,io1-jbod1-0是子存储模块昵称(这里是jbod 1的sim 0)。

$ ls -l /dev/io1-jbod1-0-bay26
lrwxrwxrwx 1 root root 4 Oct 14 21:00 /dev/io1-jbod1-0-bay26 -> sdab

注意

使用sg_ses–昵称=…定义ses-2子机柜昵称。

别名

此实用程序与sas_sd_snic_alias非常相似,但仅接受设备映射器设备。在udev规则中添加以下行:

KERNEL=="dm-[0-9]*", PROGRAM="/usr/bin/sas_mpath_snic_alias %k", SYMLINK+="mapper/%c"

这将产生有用的符号链接。

$ ls -l /dev/mapper/io1-jbod1-bay26
lrwxrwxrwx 1 root root 8 Oct 14 21:00 /dev/mapper/io1-jbod1-bay26 -> ../dm-31

注意

要使sas mpath_snic_alias与具有两个sim的jbod一起工作,两个存储模块昵称都应具有一个将自动使用的公共前缀(例如“myjbodx-”)。

sasutils python库

文档将在wiki上提供。

  • 下面的示例将列出在sysfs中找到的所有SAS主机(控制器)

    fromsasutils.sasimportSASHostfromsasutils.sysfsimportsysfs# sysfs is a helper to walk through sysfs (/sys)fornodeinsysfs.node('class').node('sas_host'):# Instantiate SASHost with the sas_host sysfs device classhost=SASHost(node.node('device'))# To get its sysfs name, use:print(host.name)# To get attributes from scsi_host, use:print('  %s'%host.scsi_host.attrs.host_sas_address)print('  %s'%host.scsi_host.attrs.version_fw)
  • 另请参见https://github.com/stanford-rc/sasutils/wiki/Code-snippets

Author:Stephane Thiell - Stanford Research Computing Center

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java当我点击MainActivity中的按钮以显示其他活动时,它不起作用   java游戏!框架:在请求之间获取控制器的组件/字段/对象   JavaBlackBerry:调用计算器并检索值?   java Struts2 jQuery插件提交按钮   java无法将更新的画布绘制到活动   java如何将Gson值放入HashMap   使用截取时出现java错误:RecyclerView:未连接适配器;跳过布局   java组织。冬眠HibernateException:在Hibernate搜索中编制索引时出错(在事务完成之前)   java Swagger服务器存根生成工作流   java JInternalFrame底部阴影问题   java nio缓冲区类中limit()的用法是什么   java水平回收器视图内部选项卡布局   java Maven无法找到依赖项   java如何管理不同应用程序实例的权限文件?