Adicionando ou removendo discos do Storage

Este artigo visa demonstrar a manipulação de devices que se encontram no Storage, identificá-los e removê-los sem necessidade de parada do seu ambiente de produção. E, como funciona o mundo dos Storages para o sistema operacional.

[ Hits: 47.214 ]

Por: Rodrigo Carvalho em 29/05/2012


Identificando discos locais ou do storage



O primeiro passo para adicionarmos discos locais, ou do storage, ao nosso servidor, é termos em mãos algumas informações de WWNN, WWPN, para fazermos com que o Sistema Operacional entenda que um novo disco foi publicado (no caso LUN).

Para isso, usaremos comandos de manipulação de fibra óptica ou iSCSI devices.

Após a adição (local via Hot-Swap) ou publicação do disco pelo administrador do Storage (not covered), precisamos fazer com que o GNU/Linux execute um scan para novos dispositivos.

Para isso, execute os passos abaixo de acordo com seu ambiente:

Identificando Discos Locais (via Hot-Swap)

Os comandos abaixo permitem identificar o disco sem a necessidade de reiniciar seu servidor, as informações do disco são armazenadas no arquivo "messages".

Comando para identificação do novo disco:

# echo "- - -" > /sys/class/scsi_host/hosth/scan

Onde 'h' é a variação de host, que inicia com 0 e vai até 2.

Comando para visualizar as informações do novo disco:

# tail -f /var/log/messages
   sd 2:0:0:0: [sdb] Cache data unavailable
   sd 2:0:0:0: [sdb] Assuming drive cache: write through
   sd 2:0:0:0: [sdb] Attached SCSI disk

Acima podemos verificar que foi encontrado um novo disco 'sdb' com sucesso. A partir de agora, podemos utilizar nosso novo disco à vontade, e tudo isso feito sem a necessidade de boot no servidor.

Identificando discos Storage (via iSCSI)

Não irei abordar como instalar/configurar o servidor para dispositivos iSCSI, você pode encontrar como se faz isto aqui no VOL.

Após o administrador do Storage ter configurado seu iSCSI target ID e referenciá-lo ao pool de disco que seu servidor terá acesso, devemos identificar o novo disco.

Para isso utilizaremos os comandos a seguir:

# iscsiadm -m discovery -t st -p IP_STORAGE:3260
# iscsiadm -m discovery -t sendtargets -p 10.15.85.19:3260


O comando acima irá executar um scan no Storage e irá fazer um check-sum para validar se o servidor solicitante, possui permissão para executar a ação desejada.

Após a execução do comando (logicamente o daemon iscsd deve estar em execução), o resultado deverá ser parecido com o abaixo:

10.15.84.19:3260,2 iqn.1992-08.com.netapp:sn.33615311
10.15.85.19:3260,3 iqn.1992-08.com.netapp:sn.33615311


Neste caso, o servidor possuí dois portais: um para o IP 84, e outro para o IP 85. Para visualizar como estas informações foram tratadas, execute o comando abaixo:

# iscsiadm -m session -P 0

A saída do comando deverá ser parecida com a exibida abaixo:

  Target: iqn.1992-08.com.netapp:sn.33615311
     Portal: 10.15.84.19:3260,2
        Iface Name: iface2
     Portal: 10.15.85.19:3260,3
        Iface Name: iface2


Agora falta apenas executarmos o scan para utilizarmos nosso disco que se encontra no Storage, vamos utilizar nosso comando já conhecido:

# echo "- - -" > /sys/class/scsi_host/hosth/scan

Após verificarmos o arquivo "/var/log/messages", que foi atualizado com as informações do novo disco, basta apenas dimensioná-lo, criar os FS e pronto!

Perceba que não abordei nenhum tipo de configuração avançada para o iSCSI, ou seja, não está sendo utilizado (autenticação, nem restrições de rede etc).

Identificando Discos Storage (via LUN)

Quando trabalhamos com discos que se encontram no Storage, precisamos informar os valores corretos de L (HBA number), C (HBA Channel) e T (SCSI target ID).

Vamos precisar, também, das informações da WWNN. Abaixo segue um exemplo.

Se a WWNN do storage for: 0x5006016090203181, execute o comando abaixo:

# grep 5006016090203181 /sys/class/fc_transport/*/node_name

A saída deverá ser parecida com a está abaixo:

/sys/class/fc_transport/target5:0:2/node_name:0x5006016090203181
/sys/class/fc_transport/target5:0:3/node_name:0x5006016090203181
/sys/class/fc_transport/target6:0:2/node_name:0x5006016090203181
/sys/class/fc_transport/target6:0:3/node_name:0x5006016090203181


Analisando as informações acima, podemos dizer que foram encontrados 4 Canais de Fibra para a WWNN informado, ou seja, 2 HBAs single-channel e cada uma delas conectada a duas portas do Storage.

Considerando que o valor da nossa LUN é 56, o comando que usaremos para configurar o primeiro caminho para o disco é:

# echo "0 2 56" > /sys/class/scsi_host/host5/scan

O comando acima irá atualizar o arquivo "/var/log/messages" com as informações do novo disco, e após ser confirmado sua identificação, falta somente criar os FS e utilizá-lo.

Outros comandos para scanear novos discos (hardwares etc)

* Ressalto que, os comandos mencionados nesta seção, deverão ser executados somente quando necessário, para prevenir problemas inesperados ao seu servidor.

Conforme já mencionado anteriormente, somente execute um operação de SCAN com seu Sistema com baixo LOAD e consumo de MEMÓRIA, pois você pode ter problemas de I/O.

Lista de comandos que podem ser utilizados para scan e descrição:

1. # echo "1" > /sys/class/fc_host/host/issue_lip

O comando acima executa um atualização na camada LIP (Loop Initialization Protocol) e scaneei os interconectores SCSI do seu servidor. Por se tratar de um protocolo assíncrono, ele executa uma redefinição do barramento adicionando e removendo o dispositivo. Você deve acompanhar as entradas no arquivo "/var/log/messages/messages".

Este procedimento é necessário para identificar um destino SCSI novo em um conector Fibre Channel.

2. # /usr/bin/rescan-scsi-bus.sh

Este script foi incluído no RHEL 5.4, por default, ele executa um scan de todos os SCSI no barramento do sistema, atualizando a camada SCSI e refletindo os novos dispositivos no barramento. Este script oferece opções de adição e remoção.

3. # echo "- - -" > /sys/class/scsi_host/hosth/scan

Este comando já foi abordado anteriormente e executará um scan no barramento SCSI especificado (hosth).

4. # rmmod driver-name ou modprobe driver-name

Um dos comandos acima, executará e reinicializará o estado de todos os conectores controlados pelo driver.

Embora este processo seja extremo, ele pode ser utilizado em algumas situações. Pode ser usado, por exemplo, para reiniciar o módulo do driver com valor diferente.

Página anterior    

Páginas do artigo
   1. Storages - File Systems - Canal de Fibra
   2. Removendo discos locais ou do storage
   3. Identificando discos locais ou do storage
Outros artigos deste autor

Recuperando sistema em mirror LVM 1

Criando um mirror LVM nível 1

Leitura recomendada

ZRAM (Compressed RAM) no Debian

Instalando e configurando um servidor FTP

Instalação de servidor Slackware 10.2

Instalando Prolink Pixelview PV-BT878P+

O poderoso Nagios

  
Comentários
[1] Comentário enviado por demoncyber em 29/05/2012 - 22:44h

Ótimo texto, parabéns. Só fica a dica de adicionares referências bibliográficas que usaste, desta forma as pessoas caso queiram se aprofundar podem usar elas. Caso tenha estas referências podes replicar comentando aqui?? ( comentário com interesses XD)

[2] Comentário enviado por danniel-lara em 30/05/2012 - 07:38h

Parabéns , ficou muito bom o seu artigo

[3] Comentário enviado por rdgacarvalho em 30/05/2012 - 14:37h

Pessoal muito obrigado pelos elogios.

Demoncyber as referencias são do site da redhat.com. Estou preparando uma segunda parte deste artigo que irá abordar a parte de redimensionamento de LUN no Storage e como fazer o Sistema Operacional identificar está mudançã, tanto para ambiente configurados em iSCSI e Fibre Channel.

Aguarde em breve estará aqui no VOL bons artigos sobre Storage.

Great Times are coming. Think Open Source become Open Source!

[4] Comentário enviado por rdgacarvalho em 01/04/2013 - 16:59h

Listando informações importantes sobre um disco ou umaLUN. As informações sobre major and minor são praticamente cruciais para trabalho com Storage, então segue abaixo um ótimo comando para listar essas informações.

mountpoint -d <device>
[root@firnin ~]# mountpoint -d /opt
253:5
[root@firnin ~]# mountpoint -d /
253:1
[root@firnin ~]# mountpoint -d /var
253:3
[root@firnin ~]# mountpoint -d /tmp
253:4
[root@firnin ~]# mountpoint -d /usr
253:6
[root@firnin ~]# mountpoint -d /usr/local
253:7
[root@firnin ~]# mountpoint -d /opt
253:5

Abraços!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts