串行连接SCSI(SAS)Linux实用程序
sasutils的Python项目详细描述
sasutils是一组命令行工具和python库,用于简化串行连接scsi(sas)结构的管理。
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 |
---|