Como posso identificar fisicamente uma única unidade em uma matriz RAID?

16

Eu tenho um compartimento de unidade externa com 4 discos eSATA. Meu sistema tem uma placa eSATA de 4 portas, bem como um par de unidades RAID1 de hardware interno. As unidades externas estão nos pares de software RAID1 como /dev/md0 e /dev/md1 . Ambos foram configurados como volumes físicos LVM para criar meu grupo de volumes storagevg LVM. Recentemente, uma única unidade ficou offline (suspeito de cabos), mas parece não haver uma boa maneira de identificar fisicamente a unidade que preciso verificar, especialmente porque a ordem de inicialização não é a mesma entre as inicializações. Como posso encontrar o disco precisando de atenção?

    
por Kees Cook 03.11.2010 / 01:42

8 respostas

15

Utilitário de Disco (instalado em Sistema - > Administração) fornecerá os números de série de todos os seus discos.

Aqui está o que eu vejo (olhe no canto superior direito da série). Você notará que esta unidade está dentro de uma matriz RAID mdadm. O Utilitário de Disco pode penetrar na matriz para acesso ao disco bruto.

Eu tenho 6 do mesmo modelo de disco no meu PC, então desenhei um pequeno diagrama mostrando sua posição no caso e o número de série para que eu possa localizá-los rapidamente em uma série em uma emergência.

O oposto também é verdadeiro, pois se um disco morrer, eu só preciso descobrir quais discos estão aparecendo e posso eliminá-los até saber qual serial está faltando.

Edit: Estou tentando melhorar meu bash-fu, então eu escrevi esta versão de linha de comando para dar-lhe apenas uma lista de números de série de disco que são atuais em sua máquina. fdisk pode lançar alguns erros, mas isso não mancha a lista:

for disk in 'sudo fdisk -l | grep -Eo '(/dev/[sh]d[a-z]):' | sed -E 's/://'';
do
    sudo hdparm -i $disk | grep -Eo 'SerialNo=.*' | sed -E 's/SerialNo=//';
done

(E você pode desmoronar isso em uma linha, se precisar - eu o decidi por legibilidade)

Editar 2: ls /dev/disk/by-id/ é um pouco mais fácil;)

    
por Oli 03.11.2010 / 11:22
5

Se você tiver problemas em corresponder ao número de série ou à indicação de porta da unidade com os locais espaciais dos seus discos, execute cat /dev/sdz >/dev/null (onde sdz é a unidade com falha) e localize a unidade pelo seu LED (ou pelo ouvido você não está em uma sala de servidores barulhentos). Se a unidade não liga, isso deve ser suficiente para dizer qual é. Certifique-se de colocar um rótulo visível nos discos para a próxima vez.

    
por Gilles 03.11.2010 / 20:30
3

As informações que udisks fornece (na linha de comando ou no Utilitário de Disco do GNOME ) incluem o número de série do disco. Nos discos que tenho, o número de série é impresso no lado superior e no lado da frente (aquele do outro lado do que contém os conectores), tanto como números como com um código de barras. Infelizmente, a maioria dos casos de PC torna impossível a leitura desses folhetins sem retirar o disco ...

Você também pode encontrar os números de série em /dev/disk/by-id/ .

Como seu disco está off-line, presumo que não seja "visto" pelo kernel atualmente? Nesse caso, você pode ter que ir por eliminação: você quer o disco com um número de série que não esteja listado ...

    
por JanC 03.11.2010 / 03:50
2

Com a invasão de software, esse é um problema comum. Os ataques de hardware tendem a ter um recurso que permite que você pisque o LED associado a uma unidade, supondo que seu hardware suporte isso.

Mas com o software RAID, cada unidade possui alguns metadados exclusivos. Que você pode lê-lo em cada unidade usando o comando mdadm -E /dev/sda1 para cada unidade na matriz, modificando os dispositivos para que correspondam ao seu ambiente. Portanto, se você tiver uma situação em que uma unidade esteja causando problemas e esteja atualmente off-line. Eu executaria isso em cada unidade que está on-line, gravando o número menor para cada unidade. Em seguida, usando um Live CD que suporte MD, o CD de resgate do sistema é bom, com apenas uma unidade por vez conectada e executando este comando para encontrar o culpado. Isso provavelmente não é tão direto quanto você gostaria, mas deve funcionar.

    
por 3dinfluence 03.11.2010 / 02:52
1

lsscsi

$ lsscsi -l
[0:0:0:0]    disk    ATA      TOSHIBA THNS128G AGLA  /dev/sda
  state=running queue_depth=1 scsi_level=6 type=0 device_blocked=0 timeout=30
[1:0:0:0]    cd/dvd  HL-DT-ST DVDRAM GT30N     LT09  /dev/sr0
  state=running queue_depth=1 scsi_level=6 type=5 device_blocked=0 timeout=30

se o disco não estiver em execução, é um bom sinal. Então / proc / mdstat irá dizer-lhe qual membro falhou. Assumindo que você não tenha uma gaiola boa você terá que detalhar por número de série, sg_inq deve ajudar com isso.

Se você tiver uma boa gaiola de unidades, será possível ativar o disco farol para ajudar a identificar o membro defeituoso.

link

    
por ppetraki 14.11.2010 / 01:24
1

Para obter os códigos de série de todos os discos rígidos, execute:

lsblk -i -o kname,mountpoint,fstype,size,maj:min,name,state,rm,rota,ro,type,label,model,serial


KNAME MOUNTPOINT   FSTYPE   SIZE MAJ:MIN NAME   STATE   RM ROTA RO TYPE LABEL         MODEL            SERIAL
sda                         3.7T   8:0   sda    running  0    1  0 disk               WDC WD4000F9YZ-0 WD-WCCXXX4
sda1                        3.7T   8:1   '-sda1          0    1  0 part
sdb   /mnt/backup3 ext4     3.7T   8:16  sdb    running  0    1  0 disk backup_netops WDC WD4000F9YZ-0 WD-WCCXXX1
sdc                         3.7T   8:32  sdc    running  0    1  0 disk               WDC WD4000F9YZ-0 WD-WCCXXX3
sdc1  /mnt/backup2 ext4     3.7T   8:33  '-sdc1          0    1  0 part
sdd                         3.7T   8:48  sdd    running  0    1  0 disk               WDC WD4000F9YZ-0 WD-WCCXXX2
sdd1  /mnt/backup1 ext4     3.7T   8:49  '-sdd1          0    1  0 part
    
por BVBMedia 27.03.2016 / 15:55
0

É simples. Este, por exemplo, é a saída no meu PC:

andrea@centurion:~$ cat /proc/mdstat 
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 sdh1[1] sdg1[0]
      312568576 blocks [2/2] [UU]

unused devices: <none>

Como você pode ver, eu tenho / dev / sdh1 e / dev / sdg1 em / dev / md0

    
por Andrea Grandi 03.11.2010 / 01:59
0

Como sua matriz não tem inteligência do SES e a atividade do disco O LED não é dirigível diretamente, por ex. você precisa de suporte de firmware para naquela. A única outra coisa que você pode fazer é desativar o I / O como melhor que puder e, em seguida, use algo como dd ou sg_read em os próprios membros para stride um padrão de leituras para o disco que cria um padrão de piscada exclusivamente identificável usando o LED de atividade, um farol de pobre, se você quiser. É realmente a sua única alternativa, a menos que colocar o array no ar seja uma opção.

Esse tipo de manutenção é o que diferencia o armazenamento externo matrizes. Desde que você não planejou adiante, rabiscando a série números e suas posições, você não pode fazer a diferença simples para identificar o disco defeituoso. É o preço que você paga pela solução você implantou, quer você perceba ou não, mas ei, viva e aprenda.

    
por ppetraki 15.11.2010 / 03:04

Tags