iSCSI - Internet Small Computer System Interface
O iSCSI é um protocolo que permite a integração do SCSI para trabalhar com o armazenamento na rede. O Internet Small Computer System Interface permite que vc possa utilizar de boas praticas de SAN ou seja, armazenamento na rede para aumentar a disponibilidade dos arquivos e velocidade de armazenamento na rede.
Dependendo da sua distribuição o suporte ao iSCSI ja esta integrado a versão do kernel que vc utiliza e ate mesmo no gerenciador de pacotes do mantedor que vc utiliza. Como por exemplo em distribuições como o RHEL/CentOS, Debian vamos precisar instalar certos pacotes e algumas outras instalações como o Ubuntu Server ja vem com o suporte ao iscsi na propria instalação e seu suporte no Linux permite que possamos montar como um dispositivo de bloco, o que é muito interessante. Entao vamos entender a sua instalação e configuração.
No RHEL/CentOS a instalação do iscsi vai depender se vc possui o pacote iscsi-initiator-utils que permite a utilização do daemon que gerencia o protocolo e tambem permite a utilização dos comandos de scsi. Ja no Debian e no Ubuntu trabalhamos com o pacote open-iscsi.
Para instalar no RHEL/CentOS execute:
# yum install iscsi-initiator-utils -y
Para instalar no Debian execute:
# apt-get install open-iscsi open-iscsi-utils -y
Existem 3 procedimentos que devemos tomar apos a instalação do iSCSI apos a instalação. Primeiro devemos editar o arquvo /etc/iscsi/iscsid.conf que é o arquivo de configuração para o storage iscsi e funcionamento. Para os outros passos devemos cumprir com algumas metas de configuração padrão como verificar a disponibilidade do daemon e determinar usuario, senha e ip do host do servidor de armazenamento.
A configuração do arquivo /etc/iscsi/iscsid.conf se parece com a saida abaixo onde é definido o usuario de controle do iscsi e senha. Ele possui 2 tipos de configurações diferentes. A controle de node e discover, sendo que a configuração do node defini um nome de usuário e senha CHAP para autenticação sendo inicializada pelo alvo e discovery que é usado para definir uma descoberta sessão CHAP username e senha para a autenticação iniciador pelo alvo
# vi /etc/iscsi/iscsid.conf
node.session.auth.username = My_ISCSI_USR_NAMEnode.session.auth.password = MyPassworddiscovery.sendtargets.auth.username = My_ISCSI_USR_NAMEdiscovery.sendtargets.auth.password = MyPassword
Após concluir com a configuração basta iniciar o daemon:
# /etc/init.d/iscsi start
Sendo que no RHEL/CentOS vc precisa utilizar o frontend do insserv para fazwer com que o seu daemon sempre seja executado no procedimento de boot sendo gerenciado pela sua runlevel default. Podemos fazer isso com o comando #chkconfig iscsi on OU ntsysv e é só marcar o iscsi e ele sera iniciado na runlevel 3 e 5 normalmente, e no caso Debian/Ubuntu podemos utilizar o comando update-rc.d ou o proprio rcconf. Mas no caso do Ubuntu e Debian nem será preciso pois ele será automaticamente gerenciado pela sua runlevel padrão que sempre será a 2.
A 2 etapa é utilizar o comando iscsiadm para gerenciar o acesso ao iscsi database atraves do login e o ip do servidor. Podemos utilizar o comando iscsiadm da seguinte maneira:
# iscsiadm -m discovery -t sendtargets -p 10.0.0.2
vamos levar em consideração que o ip 10.0.0.2 é o IP de LAN do seu servidor, é o ip do meu ;)
Reinicie o daemon:
# /etc/init.d/iscsi restart
OU #service iscsi restart OU #invoke-rc.d iscsi restart
NOTA: como o iscsi será identificado como um dispositivo de bloco para que vc nao se confunda com os dispositivos ja encontrados no seu Linux vc pode utilizar o comando #fdisk -l para verificar como estão as suas partições no disco ou consultar o arquivo /proc/partitions para isso. Mas assim que vc executar os comandos acima para inciar o dispositivo de iSCSI ele vai jogar uma saida arquivo /var/log/messages do seu syslog parecida com esta:
Oct 10 12:42:20 ora9is2 kernel: Vendor: EQLOGIC Model: 100E-00 Rev: 3.2
Oct 10 12:42:20 ora9is2 kernel: Type: Direct-Access ANSI SCSI revision: 05
Oct 10 12:42:20 ora9is2 kernel: SCSI device sdd: 41963520 512-byte hdwr sectors (21485 MB)
Oct 10 12:42:20 ora9is2 kernel: sdd: Write Protect is off
Oct 10 12:42:20 ora9is2 kernel: SCSI device sdd: drive cache: write through
Oct 10 12:42:20 ora9is2 kernel: SCSI device sdd: 41963520 512-byte hdwr sectors (21485 MB)
Oct 10 12:42:20 ora9is2 kernel: sdd: Write Protect is off
Oct 10 12:42:20 ora9is2 kernel: SCSI device sdd: drive cache: write through
Oct 10 12:42:20 ora9is2 kernel: sdd: unknown partition table
Oct 10 12:42:20 ora9is2 kernel: sd 3:0:0:0: Attached scsi disk sdd
Oct 10 12:42:20 ora9is2 kernel: sd 3:0:0:0: Attached scsi generic sg3 type 0
Oct 10 12:42:20 ora9is2 kernel: rtc: lost some interrupts at 2048Hz.
Oct 10 12:42:20 ora9is2 iscsid: connection0:0 is operational now
-
Pela leitura do arquivo de LOG acima eu encontrei o meu dispositivo iscsi em /dev/sdd, então o proximo procedimento e ultimo é a formatação e definir o ponto de montagem. Eu recomendaria que vc entre com o fdisk no dispositivo /dev/sdd e particione o dispositivo de bloco para facilitar o gerenciamento como vc faz com qualquer dispositivo que vc coloca na sua maquina e logo após não esqueca de rodar o partprobe para atualizar a tabela do kernel em /proc/partitions e então prosseguir com a formatação e montar:
#fdisk /dev/sdd
#partprobe
#mkfs.ext3 /dev/sdd1
# mkdir /mnt/iscsi
# mount /dev/sdd1 /mnt/iscsi
Pronto! Ja esta funcionando…. Não se esqueça de colocar no arquivo /etc/fstab a seguinte instrução:
/dev/sdd1 /mnt/iscsi ext3 _netdev 0 0
E no próximo boot vc garante que o seu ponto de montagem será automaticamente montado no dispositivo referente ao iscsi.
É possivel tb adcionar uma interface de rede relacionada ao seu iscsi com o comando # iscsiadm -m iface -I iface0 –op=new e utilizar do ifconfig para verificar o seu MAC relacionado ao dispositivo que vc quer associar e utilizar o comando # iscsiadm -m iface -I iface0 –op=update -n iface.hwaddress -v 00:11:22:aa:3b:d4 .
É o poder ;)


