Identificación de HDD por número de puerto SATA

15

¿Cómo puedo saber a qué número de puerto SATA de la placa base está conectado un HDD?

Queremos construir un software de copia de disco duro basado en la identificación física de SATA.

Daxesh
fuente

Respuestas:

10

lsscsi --verbose proporcionará una salida similar a esta:

[0:0:0:0]    disk    ATA      TOSHIBA THNSNH12 HTRA  /dev/sda 
  dir: /sys/bus/scsi/devices/0:0:0:0  [/sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0]
[1:0:0:0]    disk    ATA      WDC WD2003FZEX-0 01.0  /dev/sdb 
  dir: /sys/bus/scsi/devices/1:0:0:0  [/sys/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0]
[2:0:0:0]    disk    ATA      WDC WD3001FAEX-0 01.0  /dev/sdc 
  dir: /sys/bus/scsi/devices/2:0:0:0  [/sys/devices/pci0000:00/0000:00:1f.2/ata3/host2/target2:0:0/2:0:0:0]
[3:0:0:0]    cd/dvd  Optiarc  DVD RW AD-7280S  1.01  /dev/sr0 
  dir: /sys/bus/scsi/devices/3:0:0:0  [/sys/devices/pci0000:00/0000:00:1f.2/ata4/host3/target3:0:0/3:0:0:0]

que proporciona el ataNpuerto que puede coincidir con la información que se encuentra en el syslog. Útil si está tratando de determinar de dónde proviene un error.

Editar: si which lsscsino proporciona ningún resultado, debe instalarlo:

sudo apt-get install lsscsi

Edición adicional:

Esto probablemente no sea necesario, pero, por supuesto, puede filtrar la salida greppara localizar lo que le interesa, por ejemplo, si encuentra un error como ata4: status: { DRDY ERR }si pudiera simplemente emitir el comando

lsscsi --verbose | grep -P1 -A1 ata4 Lo que produciría resultados como este:

[3:0:0:0]    cd/dvd  Optiarc  DVD RW AD-7280S  1.01  /dev/sr0 
  dir: /sys/bus/scsi/devices/3:0:0:0  [/sys/devices/pci0000:00/0000:00:1f.2/ata4/host3/target3:0:0/3:0:0:0]

Lo que indicaría que el dispositivo (Optiarc DVD RW AD-7280S en ata4) no estaba listo cuando se le solicitó.

Esto debería ser suficiente información para permitirle localizar el dispositivo con problemas.

Elder Geek
fuente
8

sudo lshw -c storage -c diskle brinda mucha información sobre sus discos duros. P.ej:

 *-scsi:1
      physical id: 2
      logical name: scsi2
      capabilities: emulated
    *-disk
         description: ATA Disk
         product: ST31000524AS
         vendor: Seagate
         physical id: 0.0.0
         bus info: scsi@2:0.0.0
         logical name: /dev/sdb
         version: JC4B
         serial: 5VPDESM5
         size: 931GiB (1TB)
         capabilities: gpt-1.00 partitioned partitioned:gpt
         configuration: ansiversion=5 guid=d6e747d2-3e9c-47c2-865b-44f8d7cc5808 sectorsize=512
       *-volume
            description: EXT4 volume
            vendor: Linux
            physical id: 1
            bus info: scsi@2:0.0.0,1
            logical name: /dev/sdb1
            logical name: /mnt/hdd0
            version: 1.0
            serial: 2de34713-f0ee-4a12-9214-21a5431a7b7b
            size: 931GiB
            capabilities: journaled extended_attributes large_files huge_files dir_nlink recover extents ext4 ext2 initialized
            configuration: created=2013-07-20 14:14:09 filesystem=ext4 lastmountpoint=/mnt/hdd0 modified=2013-08-29 21:29:24 mount.fstype=ext4 mount.options=rw,relatime,errors=remount-ro,data=ordered mounted=2013-08-29 21:29:24 state=mounted

Sospecho que physical idle da el puerto físico al que está conectado el HDD (2 en este caso).

Cubiq
fuente
2
Tengo los puertos SATA numerados: 0,1,2,3. lshw reporta identificaciones físicas: 5,6,7,8. Esta respuesta no parece ser correcta.
user14654
1
Creo que "* -scsi: 1" del informe lshw se refiere al puerto SATA 1.
user14654
No funcionó para mí. El puerto SATA era 7, la identificación física de lshw era 9. ¡Úselo con precaución!
Preexo
2
@Preexo Trylsscsi --verbose
Elder Geek
El campo que estás buscando es bus info. Dado que se desaconseja la edición extensiva , he dividido eso en una respuesta separada con un ejemplo más profundo.
n.st
5

sudo apt-get install lsscsi

tech@tech:~$ lsscsi
[2:0:0:0]    disk    ATA      SAMSUNG HD040GJ/ ZG10  /dev/sda
[3:0:1:0]    disk    ATA      WDC WD3200AAJS-0 03.0  /dev/sdb
[4:0:0:0]    disk    Generic- Compact Flash    1.00  /dev/sdc
[4:0:0:1]    disk    Generic- SM/xD-Picture    1.00  /dev/sdd
[4:0:0:2]    disk    Generic- SD/MMC           1.00  /dev/sde
[4:0:0:3]    disk    Generic- MS/MS-Pro/HG     1.00  /dev/sdf

Esta utilidad le dará el puerto ATA 0 a 3.

Rahim
fuente
¿Puedo saber si tengo una placa base Gigabyte? Si uso ese comando, ¿dañará mi hardware? Porque la forma en que escribiste tu respuesta suena como si dañara mi hardware si lo intento en este momento;)
Dan
Funciona perfectamente bien en las placas base Intel.
Journeyman Geek
también funciona en tableros Supermicro.
Tim Kennedy el
1
@Rahim, ¿dónde está 0-3 en su salida de muestra? Veo 2,3,4
simpleuser
0

sudo lshw -c storage -c disk le brinda mucha información sobre sus discos duros.

Los bus infocampos le dan el puerto físico al que está conectado cada HDD / SSD (puertos 0 y 2 en este caso).
Tenga en cuenta que el número puede diferir si su sistema tiene múltiples controladores SATA (integrados o mediante tarjetas de extensión).

Por ejemplo:

  *-scsi:0
       physical id: 1
       logical name: scsi0
       capabilities: emulated
     *-disk
          description: ATA Disk
          product: Samsung SSD 840
          physical id: 0.0.0
          bus info: scsi@0:0.0.0
          logical name: /dev/sda
          version: BB6Q
          serial: S1DBNSAF791657P
          size: 232GiB (250GB)
          capabilities: partitioned partitioned:dos
          configuration: ansiversion=5 sectorsize=512 signature=d6cfe005
  *-scsi:1
       physical id: 2
       logical name: scsi2
       capabilities: emulated
     *-disk
          description: ATA Disk
          product: CT500MX500SSD1
          physical id: 0.0.0
          bus info: scsi@2:0.0.0
          logical name: /dev/sdb
          version: 010
          serial: 1810E132AC1E
          size: 465GiB (500GB)
          capabilities: partitioned partitioned:dos
          configuration: ansiversion=5 sectorsize=4096 signature=0007569c
n.st
fuente
(Ampliación @ respuesta de Cubiq fuera del ámbito de la edición, por lo tanto, como una respuesta por separado.)
n.st