logo
Contato | Sobre...        
rebarba rebarba

Rodrigo Strauss :: Blog

follow us in feedly

Como montar um servidor iSCSI Linux

Um dos problemas que eu sempre tive desenvolvendo coisas para o Windows Server Cluster foi a disponibilidade de servidores de testes. O problema é que é necessário ter um storage compartilhado entre os nós do cluster, e como um storage não é lá algo muito barato, já dá para imaginar qual é o problema...

Uma solução para esse problema é o iSCSI, o SCSI sobre IP. Ou seja, ao invés de precisar de um storage com fiber channel ou algo assim, qualquer coisa que fale o protocolo iSCSI resolve. Isso facilita MUITO a vida de quem precisa de algo simples para testes ou usos não-produção - você não precisa criar disks, volumes, aggregates, RAIDs e eteceteras, é só exportar um disco.

Uma solução fácil é montar um servidor Linux dedicado para iSCSI - e você pode usar o VMWare Server ou o ESX para isso. Se você não tem ainda um Linux instalado, eu sugiro o Ubuntu Server. É bem fácil de instalar, e desmarcando todas as opções de serviços no setup (LAMP Server, Samba Server, etc), com 400MB de HD você já tem um server rodando. Mesmo que você seja um usuário Windows e não entenda nada de Linux, um google por "bash tutorial", a receita de bolo que eu vou passar, e uma procurada no How-To Forge resolve seu problema. Nem que seja até você encontrar um iSCSI Target para Windows - eu não achei nenhum grátis ou open source.

Na parte client (Windows) tudo que você precisa fazer é instalar o iSCSI Initiator da Microsoft. Eu testei no Windows Server 2003. O Initiator já vem junto com o Vista (e acredito que deva vir junto com o Windows Server 2008 também).

Para o server Linux, usaremos o iSCSI Enterprise Target (ietd), uma implementação open source do protocolo iSCSI. Para garantir que teremos sempre a última versão, compilaremos os fontes diretamente do Subversion do SourgeForge ao invés de usar os pacotes pré compilados da sua distribuição favorita do Linux.

Depois de ter seu Linux instalado e rodando, siga a seguinte receita de bolo:

  • Certifique-se que você é root (faça login como tal, ou use "su -" ou "sudo -i").
  • Vamos precisar do client do Subversion, OpenSSL, GCC e uns header do kernel do Linux. No Ubuntu/Debian, um "apt-get install subversion linux-headers-2.6.22-14-server libssl-dev linux-libc-dev gcc make" resolve.
  • Baixe os fontes diretamente do Subversion do pessoal do ietd. "svn checkout svn://svn.berlios.de/iscsitarget/trunk".
  • Agora é só compilar e instalar. Entre no diretório trunk e "make all install install-initd".

Agora que tudo está instalado, é só editar o arquivo de configuração, que fica em /etc/ietd.conf. Ele é bem fácil de entender, e já tem um exemplo comentado lá dentro. Como ilustração, segue o arquivo de configuração que eu montei para meus clusters de teste. São 6 discos, 3 para cada cluster:

#
# developers
#
Target iqn.2007-12.net.axur:ams.dev.storage1
  Lun 0 Path=/storage/ams.dev.storage1,Type=fileio

Target iqn.2007-12.net.axur:ams.dev.storage2
  Lun 1 Path=/storage/ams.dev.storage2,Type=fileio

Target iqn.2007-12.net.axur:ams.dev.storage3
  Lun 2 Path=/storage/ams.dev.storage3,Type=fileio


#
# testers
#
Target iqn.2007-12.net.axur:ams.test.storage1
  Lun 3 Path=/storage/ams.test.storage1,Type=fileio

Target iqn.2007-12.net.axur:ams.test.storage2
  Lun 4 Path=/storage/ams.test.storage2,Type=fileio

Target iqn.2007-12.net.axur:ams.test.storage3
  Lun 5 Path=/storage/ams.test.storage3,Type=fileio

Eu criei uma pasta /storage, e lá criei um arquivo para cada disco. Como é necessário criar os arquivos já com o tamanho do disco, é só usar o comando dd. "dd if=/dev/zero of=storage2 bs=1M count=400", por exemplo, cria um arquivo storage2 com 400 MB. Para entender como funcionam os identificadores dos disco, veja o artigo sobre iSCSI da Wikipedia. Você pode exportar um disco físico inteiro se quiser, veja na documentação do ietd.

Depois disso é só reinic... Ops, desculpa, essa é a parte Linux :-). Um "/etc/init.d/iscsi-target start" e tudo está funcionando. Feito isso, você precisa adicionar o servidor Linux como "Target Portal" no iSCSI Initiator do Windows, e na aba "Targets", fazer Log On para o Windows disponibilizar os discos. Depois disso, vá ao "Computer Management" >> "Disk Management" e inicialize/particione/formate seus novos discos como quiser.

Outra opção é usar o OpenFiler ou o FreeNas, que são distribuições Linux e BSD respectivamente, que além de exportar iSCSI funcionam como storage server. Eles têm serviços para CIFS (protocolo usado pelo Windows), NFS, FTP, etc, etc. Mas se você precisa só de iSCSI, um Linux e os passos que eu descrevi é tudo que você precisa.


Em 02/01/2008 19:19, por Rodrigo Strauss


  
 
 
Comentários
Olavo | em 29/02/2008 | #
Legal, mas é possível também utilizar apenas o StarWind (www.rocketdivision.com/wind.html) e eliminar a necessidade de utilizar o linux.

[]s
Rodrigo Strauss | website | e-mail | em 29/02/2008 | #
Legal! Já testou?
Cesar Mello | e-mail | em 16/09/2011 | #
Oi Strauss! Aqui é o César Mello de Porto Alegre. Estava pesquisando por iScsi e achei esse post no teu blog. Muito bom, parabéns!

E aí como vão as coisas?

Abraço
César
Algo a dizer?
Nome:


Site:


E-mail:


Escreva o número vinte e seis:


 Não mostre meu e-mail no site, não serve pra nada mesmo...

Comentário





Os comentários devem ser sobre assuntos relativos ao post, eu provavelmente apagarei comentários totalmente offtopic. Se quiser me enviar uma mensagem, use o formulário de contato. E não esqueça: isso é um site pessoal e eu me reservo o direito de apagar qualquer comentário ofensivo ou inapropriado.
rebarba rebarba
  ::::