Xác định đĩa trên máy chủ SuperMicro chạy FreeBSD


8

Tôi đang chạy trên máy chủ SuperMicro 2U với 6 đĩa trong ZPool. Tôi muốn xác định từng khoang ổ đĩa bằng cách sử dụng LED Carrier Carrier để chạy lệnh từ một công cụ trong FreeBSD. Có cách nào để làm việc này không?

Tôi biết nếu các ổ đĩa đang chạy trên thẻ Raid, tôi có thể sử dụng tiện ích thẻ đột kích để xác định từng đĩa nhưng trong trường hợp của tôi, không có đột kích phần cứng.

Có một công cụ để làm điều này trong FreeBSD hoặc Linux không?

Câu trả lời:


3

Đối với hầu hết các giải pháp ZFS của tôi, tốt hơn bạn nên đặt cược rằng tôi có một bảng và một bộ nhãn xác định các ổ đĩa bằng một phần SAS WWN của chúng . Đây là chức năng của bộ điều khiển LSI tôi sử dụng, có nội dung như sau:

    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

nhập mô tả hình ảnh ở đây

Có một vài lựa chọn để làm việc này. Một là tiện ích Sanmon công nghiệp SMARTmon thương mại có sẵn cho các OEM và nhà tích hợp. Nó tận dụng các tính năng Dịch vụ bao vây SCSI (SES) trong các đơn vị JBOD bên ngoài, nhưng cũng có một số phép thuật cho các đĩa bên trong.

Bạn cũng có thể có một tùy chọn tùy thuộc vào bộ điều khiển bạn đang sử dụng. Bạn chỉ đang sử dụng một bộ điều khiển bo mạch chủ hoặc một HBA SAS không được xây dựng có mục đích?


Lưu ý: ký hiệu cXtYdZ chỉ là Solaris. Hầu hết các bản phân phối Linux có thư mục / dev / đĩa / by-id / chứa các liên kết tượng trưng từ tên chứa WWN sang tên /dev/sdXkiểu. Không có ý tưởng, nếu FreeBSD có một cái gì đó tương tự.
the-wợi

Hiện tại tôi đang sử dụng bo mạch chủ. Có thể di chuyển đến SAS trong tương lai gần. Tôi cũng đã xem xét thực hiện chính xác những gì bạn đề xuất chỉ là dán nhãn các vịnh bằng nhãn dán. Âm thanh như chuyển sang một HBA SAS không RAID chuyên dụng là cách để đi về lâu dài. Một với API CLI cho * nix sẽ đóng băng trên bánh;)
Timothy C. Quinn

9

Phương tiện của người nghèo để xác định các đĩa sẽ phát hành dd if=/dev/daX of=/dev/nullvà xem đèn LED hoạt động của đĩa nào đang nhấp nháy nhanh nhất. Điều này tất nhiên cần một khoảng thời gian hoạt động thấp cho các đĩa khác trong hệ thống, nhưng rất chung chung.

Nếu bạn có bộ điều khiển SAS (LSI) sẽ hoạt động sas2ircuthì bạn có thể sử dụng nó để ra lệnh "display" để liệt kê các ổ đĩa có sẵn và serial của chúng và sau đó chạy lệnh "LOCATE" để nháy đèn trên vỏ.


Thay vì "Hoạt động thấp", tốt hơn hết hãy dừng tất cả I / O bằng cách ngắt kết nối đĩa và tắt các công việc tuần tra.
La Mã

1
sas2ircu FTW! Cảm ơn, bạn đã cứu tôi. Tình cờ, tôi có một ITI flash LSI HBA với một bảng nối đa năng 12 vịnh siêu tốc với các sas nhỏ. Chạy trên siêu thị mobo, e3-1230v3, ecc 32gb. chạy FreeNAS 9.3 mới nhất. Lệnh LOCATE nhấp nháy đèn LED màu đỏ (lỗi), để lại đèn LED hoạt động màu xanh với chức năng bình thường. Lệnh Display hiển thị một cách tò mò rằng bộ điều khiển LSI là # 0 nhưng bao vây hiển thị là # 2 (Có thể bộ điều khiển mobo sata 2 và sata 3 là # 0 và # 1, nhưng đó là phỏng đoán).
Therealstubot

4

Tôi biết đây là một câu hỏi cũ, nhưng nó đã cho tôi một vài câu tôi ghép lại và tôi nghĩ tôi sẽ quay lại kịch bản mà tôi đã đưa ra, vì đây là một kết hợp gần như chính xác với tình huống của tôi: nó yêu cầu sas2ircu : http://www.avagotech.com/docs-and-d Downloads

Nó thực hiện một vài giả định, tôi nghĩ rằng cái chính là nó được gắn vào bộ điều khiển 0. bạn có thể sử dụng sas2ircu listđể xác định số bộ điều khiển của mình.

Nó sẽ kiểm tra nhóm đã chọn (thông qua trạng thái zpool). Nếu không có lỗi, nó sẽ:

  • lưu tệp (tại /root/.sas2ircu/drive) với ánh xạ tên thiết bị vào các khe cắm
  • tắt bất kỳ đèn led nào được kích hoạt trước đó bởi tập lệnh này (cái này được lưu trong /root/.sas2ircu/locs)

Nếu có lỗi, nó sẽ:

  • gửi email với đầu ra đầy đủ của trạng thái zpool
  • kích hoạt đèn led của bất kỳ ổ đĩa bị lỗi nào (và lưu trữ các vị trí được kích hoạt trong các vị trí /root/.sas2ircu để sau đó chúng có thể bị vô hiệu hóa)

dù sao đây là kịch bản. Tôi điều hành nó như một công việc định kỳ hàng giờ.

#! /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

3

Tôi không biết về FreeBSD, nhưng trong Linux, có một bộ phần mềm của Intel được gọi ledmon(8)và tôi đã sử dụng chương trình không gian người dùng ledctl(8)để nháy đèn LED "định vị" trên một ổ đĩa cụ thể trong SuperMicro SC847E26-RJBOD1 có các ổ đĩa được điều khiển bởi một LSI SAS3008 HBA (không phải MegaRAID):

$ sudo ledctl locate=/dev/sdce

Sau đó, khi tôi tìm thấy nó, tôi tắt đèn LED "định vị":

$ sudo ledctl locate_off=/dev/sdce

sgpio(1) là cần thiết cho giao tiếp giữa HBA và bảng nối đa năng.


2

Tôi biết đây là một câu hỏi cũ, nhưng đối với những người tìm kiếm nhấn vào đây, trên FreeBSD> = 10.3, bạn có thể sử dụng sesutil locate da2 onđể bật đèn LED của da2 với điều kiện nó nằm trong một vỏ bọc cung cấp thiết bị / dev / sesN.


1

Không có giao diện phần mềm được trừu tượng hóa tiêu chuẩn để chiếu sáng LED Drive Carrier (không phải đèn LED hoạt động) - đây là phần phụ thuộc phần cứng cao. Điều này có nghĩa là bạn vẫn cần các công cụ điều khiển lưu trữ (tiện ích thẻ đột kích mà bạn đang nói đến) để gửi các lệnh thích hợp đến bộ điều khiển. Làm thế nào phần mềm này được gọi hoặc thực hiện tất nhiên phụ thuộc vào nhà sản xuất / nhà cung cấp của bộ điều khiển lưu trữ.

(Không có vấn đề gì khi bạn có cuộc đột kích SW, vì rõ ràng bạn vẫn cần một bộ điều khiển lưu trữ nói chuyện với bảng nối đa năng, caddies và ổ đĩa của bạn.)

Nếu bạn đang sử dụng caddies ổ đĩa cấp doanh nghiệp với bộ điều khiển giá rẻ, thì bạn có thể không gặp may.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.