여러 디스크가 있는 서버에서 특정 물리 디스크를 식별하는 명령

여러 디스크가 있는 서버에서 특정 물리 디스크를 식별하는 명령

10개의 하드 드라이브가 있는 서버가 있습니다. 장치가 /dev/sdhbtrfs 스크랩에서 수정할 수 없는 읽기 오류를 보고합니다. 어떤 물리적 디스크가 해당 디스크인지 확인하는 방법은 무엇입니까 /dev/sdh?

hdparm -I /dev/sd?나는 를 사용하여 디스크의 모델과 일련 번호를 얻 findmnt거나 마운트 지점을 얻을 수 있다는 것을 알고 있습니다 lsblk. 하지만 /dev/sdh필요한 일련번호를 통해 하드 드라이브에 연결하는 방법을 찾지 못했습니다 .

답변1

LSSCSI

많은 수의 하드 드라이브가 있는 서버에서는 일반적으로 lsscsi어떤 하드 드라이브가 어떤 포트에 연결되어 있는지 확인하는 데 사용합니다.

이 출력을 사용하여 이름 + 장치 및 일반 장치 이름을 얻을 수 있습니다.

$ lsscsi -g
[0:0:0:0]    disk    ATA      Hitachi HDT72101 A3AA  /dev/sda   /dev/sg0
[2:0:0:0]    disk    ATA      Hitachi HDS72101 A39C  /dev/sdb   /dev/sg1
[4:0:0:0]    disk    ATA      Maxtor 6L200P0   1G20  /dev/sdc   /dev/sg2
[12:0:0:0]   disk    WD       My Passport 25E2 4005  /dev/sde   /dev/sg5
[12:0:0:1]   enclosu WD       SES Device       4005  -         /dev/sg6

그리고 이를 사용하여 위 장치에 해당하는 MB의 포트 목록을 가져옵니다.

$ lsscsi -H
[0]    ahci
[1]    ahci
[2]    ahci
[3]    ahci
[4]    pata_atiixp
[5]    pata_atiixp
[12]    usb-storage

자세한 출력을 사용할 수도 있습니다.

$ lsscsi --verbose
[0:0:0:0]    disk    ATA      Hitachi HDT72101 A3AA  /dev/sda
  dir: /sys/bus/scsi/devices/0:0:0:0  [/sys/devices/pci0000:00/0000:00:11.0/host0/target0:0:0/0:0:0:0]
[2:0:0:0]    disk    ATA      Hitachi HDS72101 A39C  /dev/sdb
  dir: /sys/bus/scsi/devices/2:0:0:0  [/sys/devices/pci0000:00/0000:00:11.0/host2/target2:0:0/2:0:0:0]
[4:0:0:0]    disk    ATA      Maxtor 6L200P0   1G20  /dev/sdc
  dir: /sys/bus/scsi/devices/4:0:0:0  [/sys/devices/pci0000:00/0000:00:14.1/host4/target4:0:0/4:0:0:0]
[12:0:0:0]   disk    WD       My Passport 25E2 4005  /dev/sde
  dir: /sys/bus/scsi/devices/12:0:0:0  [/sys/devices/pci0000:00/0000:00:13.2/usb2/2-3/2-3:1.0/host12/target12:0:0/12:0:0:0]
[12:0:0:1]   enclosu WD       SES Device       4005  -
  dir: /sys/bus/scsi/devices/12:0:0:1  [/sys/devices/pci0000:00/0000:00:13.2/usb2/2-3/2-3:1.0/host12/target12:0:0/12:0:0:1]

노트:예를 들어, 연결되는 포트는 출력의 첫 번째 숫자 [0]가 아니라 블록의 첫 번째 숫자입니다.[4]lsscsi -H

창사

또한 특정 HDD가 어느 포트에 연결되어 있는지 알려주기 때문에 이 기능을 사용할 수 있었습니다 lshw. 따라서 여러 HDD가 있는 시스템에서 어느 포트를 더 쉽게 파악할 수 있습니다. 아래에서 /dev/sda일련번호를 확인할 수 있습니다.

$ lshw -c disk -c storage
  *-storage
       description: SATA controller
       product: SB7x0/SB8x0/SB9x0 SATA Controller [IDE mode]
       vendor: Advanced Micro Devices, Inc. [AMD/ATI]
       physical id: 11
       bus info: pci@0000:00:11.0
       logical name: scsi0
       logical name: scsi2
       version: 00
       width: 32 bits
       clock: 66MHz
       capabilities: storage pm ahci_1.0 bus_master cap_list emulated
       configuration: driver=ahci latency=64
       resources: irq:22 ioport:c000(size=8) ioport:b000(size=4) ioport:a000(size=8) ioport:9000(size=4) ioport:8000(size=16) memory:fbbff800-fbbffbff
     *-disk:0
          description: ATA Disk
          product: Hitachi HDT72101
          vendor: Hitachi
          physical id: 0
          bus info: scsi@0:0.0.0
          logical name: /dev/sda
          version: A3AA
          serial: STF604MH0AD4PB
          size: 931GiB (1TB)
          capabilities: partitioned partitioned:dos
          configuration: ansiversion=5 logicalsectorsize=512 sectorsize=512 signature=0005edc1

각 버스 정보의 좌표와 물리적 ID를 기준으로 어느 것이 무엇인지 판단할 수 있습니다.

지능형 제어

제가 과거에 사용한 또 다른 방법은 smartctl각 장치를 독립적으로 쿼리하여 일련번호, 제조업체 및 모델을 확인하고 케이스를 연 후 어떤 장치인지 알아내는 것입니다.

$ smartctl -i /dev/sda
smartctl 5.43 2016-09-28 r4347 [x86_64-linux-2.6.32-642.6.2.el6.x86_64] (local build)
Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF INFORMATION SECTION ===
Model Family:     Hitachi Deskstar 7K1000.B
Device Model:     Hitachi HDT721010SLA360
Serial Number:    STF604MH0AD4PB
LU WWN Device Id: 5 000cca 349c4b953
Firmware Version: ST6OA3AA
User Capacity:    1,000,204,886,016 bytes [1.00 TB]
Sector Size:      512 bytes logical/physical
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   8
ATA Standard is:  ATA-8-ACS revision 4
Local Time is:    Thu Aug  2 21:11:01 2018 EDT
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

ledctl/ledmon

고급 랙 서버에서는 ledctl장치 이름별로 특정 HDD의 LED를 켤 수 있습니다 /dev/.

LEDCTL 사용법
# ledctl locate=/dev/rssda will blink drive LED
# ledctl locate={ /dev/rssda /dev/rssdb } will blink both drive LEDs
# ledctl locate_off=/dev/rssda will turn off the locate LED

인용하다

답변2

lsblk이를 수행하는 한 가지 방법은 다음과 같습니다.

lsblk -a -o name,model,size,serial

다음은 출력의 예입니다.

NAME         MODEL             SIZE SERIAL
sdh          ST8000DM002-1YW1  7.3T ZA11A1W3

관련 정보