AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 480524
Accepted
Timothy C. Quinn
Timothy C. Quinn
Asked: 2013-02-20 18:46:28 +0800 CST2013-02-20 18:46:28 +0800 CST 2013-02-20 18:46:28 +0800 CST

识别运行 FreeBSD 的 SuperMicro 服务器上的磁盘

  • 772

我在 ZPool 中有 6 个磁盘的 SuperMicro 2U 服务器上运行。我想使用 Drive Carrier LED 从 FreeBSD 中的工具运行命令来识别每个驱动器托架。有没有办法做到这一点?

我知道驱动器是否在 Raid Card 上运行,我可以使用 raid card 实用程序来识别每个磁盘,但在我的情况下,没有硬件 raid。

有没有在 FreeBSD 或 Linux 中执行此操作的工具?

storage
  • 6 6 个回答
  • 26243 Views

6 个回答

  • Voted
  1. the-wabbit
    2013-02-21T05:21:28+08:002013-02-21T05:21:28+08:00

    穷人识别磁盘的方法是发出 add if=/dev/daX of=/dev/null并查看哪个磁盘的活动 LED 闪烁得最快。对于系统中的其他磁盘来说,这当然需要一段低活动期,但这是非常普遍的。

    如果您有一个可以使用的 (LSI) SAS 控制器,sas2ircu那么您可以使用它来发出“显示”命令以列出可用的驱动器及其序列号,然后运行“定位”命令以使机箱上的灯闪烁。

    • 10
  2. palesius
    2015-07-28T07:15:02+08:002015-07-28T07:15:02+08:00

    我知道这是一个老问题,但它给了我一些我放在一起的部分,我想我会收回我想出的脚本,因为这几乎完全符合我的情况:它需要 sas2ircu :http ://www.avagotech.com/docs-and-downloads/host-bus-adapters/host-bus-adapters-common-files/sas_sata_6g_p20/SAS2IRCU_P20.zip 以及来自端口、bash 和 sg3_utils

    它确实做了一些假设,我认为主要的假设是它连接到控制器 0。您可以使用它sas2ircu list来识别您的控制器编号。

    它将检查选定的池(通过 zpool status)。如果没有错误,它将:

    • 保存一个文件(位于 /root/.sas2ircu/drives),其中包含设备名称到机箱插槽的映射
    • 关闭此脚本之前激活的任何 LED(这存储在 /root/.sas2ircu/locs 中)

    如果有错误,它将:

    • 发送包含 zpool status 完整输出的电子邮件
    • 激活任何故障驱动器的 LED(并将激活的位置存储在 /root/.sas2ircu locs 中,以便以后可以停用它们)

    无论如何,这是脚本。我将它作为每小时的 cron 作业来运行。

    #! /usr/local/bin/bash
    if [ ! "$1" ]; then
      echo "Usage: zpscan.sh pool [email]"
      echo "Scan a pool, send email notification and activate leds of failed drives"
      exit
    fi
    if [ ! -d /root/.sas2ircu ]; then
      mkdir /root/.sas2ircu
      touch /root/.sas2ircu/drives
      touch /root/.sas2ircu/locs
    fi
    if [ "$2" ]; then
      email="$2"
    else
      email="root"
    fi
    condition=$(/sbin/zpool status $1 | egrep -i '(DEGRADED|FAULTED|OFFLINE|UNAVAIL|REMOVED|FAIL|DESTROYED|corrupt|cannot|unrecover)')
    if [ "${condition}" ]; then
      emailSubject="`hostname` - ZFS pool - HEALTH fault"
      mailbody=$(zpool status $1)
      echo "Sending email notification of degraded zpool $1"
      echo "$mailbody" | mail -s "Degraded Zpool $1 on hostname" $email
      drivelist=$(zpool status $1 | grep -E "(DEGRADED|FAULTED|OFFLINE|UNAVAIL|REMOVED|FAIL|DESTROYED)" | grep -vE "^\W+($1|NAME|mirror|logs|spares)" | sed -E $'s/.*was \/dev\/([0-9a-z]+)/\\1/;s/^[\t  ]+([0-9a-z]+)[\t ]+.*$/\\1/')
      echo "Locating failed drives."
      for drive in $drivelist;
      do
      record=$(grep -E "^$drive" /root/.sas2ircu/drives)
      location=$(echo $record | cut -f 3 -d " ")
      echo Locating: $record
      sas2ircu 0 locate $location ON
      if [ ! "$(egrep $location /root/.sas2ircu/locs)" ]; then
      echo $location >> /root/.sas2ircu/locs
      fi
      done
    else
      echo "Saving drive list."
      drivelist=$(zpool status $1 | grep -E $'^\t  ' | grep -vE "^\W+($1|NAME|mirror|logs|spares)" | sed -E $'s/^[\t ]+//;s/([a-z0-9]+).*/\\1/')
      saslist=$(sas2ircu 0 display)
      printf "" > /root/.sas2ircu/drives
      for drive in $drivelist;
      do
      sasaddr=$(sg_vpd -i -q $drive 2>/dev/null | sed -E '2!d;s/,.*//;s/  0x//;s/([0-9a-f]{7})([0-9a-f])([0-9a-f]{4})([0-9a-f]{4})/\1-\2-\3-\4/')
      encaddr=$(echo "$saslist" | grep $sasaddr -B 2 | sed -E 'N;s/^.*: ([0-9]+)\n.*: ([0-9]+)/\1:\2/')
      echo $drive $sasaddr $encaddr >> /root/.sas2ircu/drives
      done
    
      for loc in $(cat /root/.sas2ircu/locs);
      do
      sas2ircu 0 locate $loc OFF
      done
      printf "" > /root/.sas2ircu/locs
    fi
    
      for loc in $(cat /root/.sas2ircu/locs);
      do
      sas2ircu 0 locate $loc OFF
      done
      printf "" > /root/.sas2ircu/locs
    fi
    
    • 6
  3. eborisch
    2019-02-28T08:48:43+08:002019-02-28T08:48:43+08:00

    我知道这是一个老问题,但对于遇到此问题的搜索者来说,在 FreeBSD >= 10.3 上,您可以使用它sesutil locate da2 on来打开 da2 的 LED,前提是它位于提供 /dev/sesN 设备的外壳中。

    • 5
  4. ja-s
    2014-12-11T11:59:46+08:002014-12-11T11:59:46+08:00

    我不知道 FreeBSD,但在 Linux 中,有一个来自 Intel 的软件集合,ledmon(8)我使用用户空间程序ledctl(8)在我的 SuperMicro SC847E26-RJBOD1 中的特定驱动器上闪烁“定位”LED,该驱动器由LSI SAS3008 HBA(非 MegaRAID):

    $ sudo ledctl locate=/dev/sdce
    

    然后一旦找到它,我就关闭了“定位”LED:

    $ sudo ledctl locate_off=/dev/sdce
    

    sgpio(1)是 HBA 和背板之间通信所必需的。

    • 4
  5. Best Answer
    ewwhite
    2013-02-21T05:39:01+08:002013-02-21T05:39:01+08:00

    对于我的大多数 ZFS 解决方案,您最好打赌我有一张表和一组标签,这些标签通过部分SAS WWN标识驱动器。这是我使用的 LSI 控制器的一个功能,读起来像:

        NAME                        STATE     READ WRITE CKSUM
        vol1                        ONLINE       0     0     0
          mirror-0                  ONLINE       0     0     0
            c10t50000393482B340Cd0  ONLINE       0     0     0
            c10t50000393482B4CF0d0  ONLINE       0     0     0
          mirror-1                  ONLINE       0     0     0
            c10t50000393482B4DB4d0  ONLINE       0     0     0
            c10t50000393482BAB48d0  ONLINE       0     0     0
          mirror-2                  ONLINE       0     0     0
            c10t50000393482BDA68d0  ONLINE       0     0     0
            c10t500003935803910Cd0  ONLINE       0     0     0
    

    在此处输入图像描述

    有几个选项可以让它工作。一种是可供 OEM 和集成商使用的商业SanTools SMARTmon 实用程序。它利用了外部 JBOD 单元中的SCSI Enclosure Services (SES)功能,但对内部磁盘也有一些魔力。

    您可能还有一个选项,具体取决于您使用的控制器。您只是在使用主板控制器还是专用的非 RAID SAS HBA?

    • 3
  6. Roman
    2013-02-21T04:41:27+08:002013-02-21T04:41:27+08:00

    没有标准化的抽象软件接口来点亮 Drive Carrier LED(不是活动 LED)——这高度依赖于硬件。这意味着您仍然需要存储控制器工具(您所说的 raid 卡实用程序)向控制器发送适当的命令。如何调用或实现此软件当然取决于存储控制器的制造商/供应商。

    (你有 SW raid 并不重要,因为你显然仍然需要一个存储控制器与你的背板、盒和驱动器通信。)

    如果您使用带有廉价控制器的企业级驱动器盒,那么您可能就不走运了。

    • 1

相关问题

  • 初学者 SAS 和服务器问题

  • Amazon S3 存储如何计费?[关闭]

  • 轻松的网络存储和文件访问灵魂[关闭]

  • 无限存储

  • 在托管环境中,用户 PC 是否应该有本地外部 HD 备份?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve