Como combinar ata4.00 para o / dev / sdX apropriado ou disco físico real?

4

Obtendo coisas assim nos registros:

Oct  2 22:11:21 jupiter kernel: [439646.093111] ata4.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6
Oct  2 22:11:21 jupiter kernel: [439646.093144] ata4.00: BMDMA stat 0x6
Oct  2 22:11:21 jupiter kernel: [439646.093176] ata4.00: failed command: WRITE DMA EXT
Oct  2 22:11:21 jupiter kernel: [439646.093206] ata4.00: cmd 35/00:98:00:0d:ff/00:02:42:00:00/e0 tag 0 dma 339968 out
Oct  2 22:11:21 jupiter kernel: [439646.093282] ata4.00: status: { DRDY ERR }
Oct  2 22:11:21 jupiter kernel: [439646.093306] ata4.00: error: { ICRC ABRT }
Oct  2 22:11:21 jupiter kernel: [439646.093353] ata4: soft resetting link
Oct  2 22:11:21 jupiter kernel: [439646.265242] ata4.00: configured for UDMA/133
Oct  2 22:11:21 jupiter kernel: [439646.265268] ata4: EH complete

Agora me pergunto qual disco substituir. Mas não consigo encontrar nenhum mapeamento claro entre "ataX.YZ" e / dev / disk / entries.

    
por Ruben 05.10.2011 / 09:14

3 respostas

5
  • Você deve obter mais informações do dmesg:

    dmesg | grep ata
    

    Algo como:

    [    2.345126] ata2.00: ATA-8: WDC WD20EARX-00PASB0, 51.0AB51, max UDMA/133
    

    Esse seria meu disco rígido da Wester Digital.

  • Aqui está uma maneira se você tem várias unidades de um modelo (quando acima não vai ajudar):

    1. Encontre um mapeamento do host SCSI para o ID *:

      $ egrep "^[0-9]{1,}" /sys/class/scsi_host/host*/unique_id
      /sys/class/scsi_host/host0/unique_id:1
      /sys/class/scsi_host/host1/unique_id:2
      /sys/class/scsi_host/host2/unique_id:3
      /sys/class/scsi_host/host3/unique_id:4
      
    2. Encontre um mapeamento do host SCSI para o ID sd *:

      $ ls -l /sys/block/sd*
      ... /sys/block/sda -> ../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda
      ... /sys/block/sdb -> ../devices/pci0000:00/0000:00:1f.2/host1/target1:0:0/1:0:0:0/block/sdb
      

    Agora você pode vincular esses dois resultados por meio do identificador host *. Então, se nesse caso eu estou tendo problemas com o ata2, eu procuraria o unique_id 2 → host1 e, em seguida, qual sd * é host1 → sdb.

  • Eu também tentei criar um one-liner. Não faço ideia se é robusto. Você primeiro tem que definir o ata * como uma variável:

    FAIL=ata1
    

    execute:

    echo "$FAIL -> $(ls -l /sys/block/ | grep $(grep "^$(echo $FAIL | cut -c 4-)" /sys/class/scsi_host/host*/unique_id | sed "s/.*\(host[0-9]\{1,\}\).*//") | awk '{print }')"
    

    que deve retornar algo como:

    ata1 -> sda
    
por htorque 05.10.2011 / 09:47
4

Em alguns dos meus servidores, tenho dois ou mais dispositivos em um scsi_host. Eu não sei se está correto, mas eu assumi que ele pode ser distinguido pelo alvo e funciona para mim:

ls -l /sys/block/sd*
lrwxrwxrwx 1 root root 0 2012-02-08 08:15 /sys/block/sda -> ../devices/pci0000:00/0000:00:01.0/0000:01:00.0/host3/target3:0:0/3:0:0:0/block/sda
lrwxrwxrwx 1 root root 0 2012-02-08 08:15 /sys/block/sdb -> ../devices/pci0000:00/0000:00:1f.2/host6/target6:0:0/6:0:0:0/block/sdb
lrwxrwxrwx 1 root root 0 2012-02-08 08:15 /sys/block/sdc -> ../devices/pci0000:00/0000:00:1f.2/host7/target7:0:0/7:0:0:0/block/sdc
lrwxrwxrwx 1 root root 0 2012-02-08 08:15 /sys/block/sdd -> ../devices/pci0000:00/0000:00:1f.2/host8/target8:0:0/8:0:0:0/block/sdd
lrwxrwxrwx 1 root root 0 2012-02-08 08:15 /sys/block/sde -> ../devices/pci0000:00/0000:00:1f.2/host9/target9:0:0/9:0:0:0/block/sde
lrwxrwxrwx 1 root root 0 2012-02-08 08:15 /sys/block/sdf -> ../devices/pci0000:00/0000:00:1f.2/host10/target10:0:0/10:0:0:0/block/sdf
lrwxrwxrwx 1 root root 0 2012-02-08 08:15 /sys/block/sdg -> ../devices/pci0000:00/0000:00:1f.2/host11/target11:0:0/11:0:0:0/block/sdg
lrwxrwxrwx 1 root root 0 2012-02-08 08:15 /sys/block/sdh -> ../devices/pci0000:00/0000:00:1c.4/0000:04:00.0/host13/target13:0:0/13:0:0:0/block/sdh
lrwxrwxrwx 1 root root 0 2012-02-08 08:15 /sys/block/sdi -> ../devices/pci0000:00/0000:00:1c.4/0000:04:00.0/host13/target13:0:1/13:0:1:0/block/sdi

Script bash simples:

#!/bin/bash

#inspired by https://sobrelinux.info/questions/32600/how-to-match-ata4-00-to-the-apropriate-dev-sdx-or-actual-physical-disk"host[0-9]+"'
  t='ls -l $d | egrep -o "target[0-9:]*"'
  a2='echo $t | egrep -o "[0-9]:[0-9]$" | sed 's/://''
  a='cat /sys/class/scsi_host/$h/unique_id'
  echo "$s -> ata$a.$a2"
done

e sua saída:

sda -> ata4.00
sdb -> ata7.00
sdc -> ata8.00
sdd -> ata9.00
sde -> ata10.00
sdf -> ata11.00
sdg -> ata12.00
sdh -> ata14.00
sdi -> ata14.01
    
por porbas 08.02.2012 / 13:21
0

Tarde demais agora, mas para o bem de outros leitores ... Eu tive que responder à sua outra pergunta "Agora eu me pergunto qual disco substituir."

O sinalizador de erro do CICV está quase sempre associado a um cabo SATA defeituoso, o que é fácil de substituir / testar. É um pouco possível levantar a bandeira do CICV se a energia da unidade estiver com defeito.

O que é certo, porém, é que há NO evidência de algo errado com a unidade! Substitua o cabo SATA.

    
por RobJ 24.07.2014 / 01:56