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 possui uma placa eSATA de 4 portas, além de um par de unidades RAID1 de hardware interno. As unidades externas estão em pares de software RAID1 como /dev/md0e /dev/md1. Ambos foram configurados como volumes físicos LVM para criar meu storagevggrupo de volumes LVM. Recentemente, uma única unidade ficou offline (suspeito de cabos), mas não parece ser uma boa maneira de identificar fisicamente qual unidade eu preciso verificar, principalmente porque a ordem de inicialização não é a mesma entre as botas. Como posso encontrar o disco que precisa de atenção?

Kees Cook
fonte

Respostas:

15

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

Aqui está o que eu vejo (veja o 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 acessar o disco bruto.

Utilitário de Disco

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

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

Edit: Estou tentando melhorar meu bash-fu, então escrevi esta versão da linha de comando para fornecer apenas uma lista dos números de série do disco atuais em sua máquina. fdiskpode lançar alguns erros, mas isso não afeta 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 dividir isso em uma linha, se necessário - eu a dividi para facilitar a leitura)

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

Oli
fonte
O uso de números de série pode funcionar bem se alguém já os tiver gravado externamente. No caso de um sistema que não pode ser desligado, mas possui unidades de troca a quente, seria bom poder localizar a unidade com falha por meio de LEDs.
Kees Cozinhe
Você também notará que há um identificador de "Localização" no Utilitário de Disco, mostrando em qual porta do adaptador host a unidade está conectada. Você pode adivinhar quais portas são quais sem desconectar as unidades, mas não posso especular. isso realmente está funcionando.
Oli
No seu caso, parar a matriz de ataques por 5 minutos, desconectar cada unidade e obter o serial não deve ser excessivo e não deve exigir o desligamento da máquina ... Mas o RAID precisaria ser desativado, a menos que você queira reconstruindo.
Oli
"Localização" nem sempre é útil, por exemplo, no caso de PATA, geralmente existem 2 discos em uma porta e, se ambos estiverem configurados em "AUTO" para negociação mestre / escravo, provavelmente não há como descobrir qual é qual. ?
Porém
11
As unidades PATA ainda existem? Eu sou apenas SATA desde ... Bem, desde que um disco de 112gig foi considerado grande. O problema de encontrar a porta não conta realmente aqui, porque estamos falando de um compartimento de unidade externo. Mas claro. Nas placas-mãe dos consumidores, você provavelmente precisará consultar o manual para ter uma idéia de qual porta é o que ... Mesmo assim, o software pode atribuir-lhes uma ordem diferente.
Oli
5

Se você tiver problemas para corresponder o número de série da unidade ou a indicação da porta com os locais espaciais dos discos, poderá executar cat /dev/sdz >/dev/null(onde sdzestá a unidade com falha) e localizar a unidade pelo LED (ou pelo ouvido, se você não estiver em uma sala de servidores barulhenta) ) Se a unidade nem ligar, isso deve ser suficiente para dizer qual é. Certifique-se de colocar uma etiqueta visível nos discos para a próxima vez.

Gilles 'SO- parar de ser mau'
fonte
isso é pura genialidade, pois tem o efeito colateral de deixar a luz acesa, enquanto todos os outros estão piscando
HDave
3

A informação que udisks fornecidas (na linha de comando ou no GNOME Disk Utility ) 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 frontal (aquele do outro lado do que contém os conectores), tanto em números quanto em código de barras. Infelizmente, a maioria dos casos de PC impossibilita a leitura desses seriais sem puxar o disco para fora ...

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

Como seu disco está offline, presumo que ele não seja "visto" pelo kernel atualmente? Nesse caso, talvez seja necessário eliminar: você deseja o disco com um número de série que não esteja listado ...

JanC
fonte
2

Com a invasão de software, esse é um problema comum. Os ataques de hardware tendem a ter um recurso que permite piscar o LED associado a uma unidade, assumindo que seu hardware seja compatível.

Porém, com o RAID de software, cada unidade possui alguns metadados exclusivos. Você pode lê-lo em cada unidade usando o comando mdadm -E /dev/sda1para cada unidade na matriz, modificando os dispositivos para corresponder ao seu ambiente. Portanto, se você tiver uma situação em que uma unidade está causando problemas e está atualmente offline. Eu executaria isso em cada unidade que estiver online, registrando o número menor de cada unidade. Em seguida, usando um Live CD que suporta MD, o CD de recuperação do sistema é bom, com apenas uma unidade de cada vez conectada e executando este comando para encontrar o culpado. Isso provavelmente não é tão direto quanto você gostaria, mas deve funcionar.

3dinfluence
fonte
Talvez haja números de série que você possa obter no Linux que também sejam impressos na unidade física?
erjiang
1

lsscsi

$ lsscsi -l
[0: 0: 0: 0] disco ATA TOSHIBA THNS128G AGLA / dev / sda
  state = executando queue_depth = 1 scsi_level = 6 type = 0 device_blocked = 0 timeout = 30
[1: 0: 0: 0] CD / DVD HL-DT-ST DVD-ROM GT30N LT09 / dev / sr0
  state = executando 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. Portanto, / proc / mdstat lhe dirá qual membro falhou. Supondo que você não tenha uma gaiola de disco agradável, precisará detalhar o número de série, o sg_inq deve ajudar com isso.

Se você tiver um bom compartimento de unidades, poderá ativar o beacon do disco para ajudar a identificar o membro defeituoso.

http://www.mail-archive.com/[email protected]/msg07307.html

ppetraki
fonte
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
BVBMedia
fonte
0

É simples. Por exemplo, esta é 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, juntei / dev / sdh1 e / dev / sdg1 em / dev / md0

Andrea Grandi
fonte
11
Certo, mas isso não me diz nada sobre onde eles estão fisicamente no gabinete da unidade externa.
Kees Cook
0

Como sua matriz não possui inteligência SES e o LED de atividade do disco não é diretamente acionável, por exemplo, você precisa de suporte de firmware para isso. A única outra coisa que você pode fazer é desativar a E / S da melhor maneira possível e, em seguida, usar algo como ddousg_read nos próprios membros para passar um padrão de leituras para o disco que cria um padrão de piscada identificável exclusivamente usando o LED de atividade, um indicador farol do homem, se você quiser. É realmente sua única alternativa, a menos que reduzir a matriz seja uma opção.

Esse tipo de manutenção é o que diferencia as matrizes de armazenamento externo. Como você não planejou com antecedência anotando os números de série e suas posições, não é possível fazer a diferença simples de conjunto para identificar a unidade defeituosa. É o preço que você paga pela solução implantada, se você percebe ou não, mas ei, viva e aprenda.

ppetraki
fonte