Differences

This shows you the differences between two versions of the page.

Link to this comparison view

instalando_e_configurando_servidor_nas_no_debian_squeeze_pt_br [2017/09/05 12:18] (current)
Line 1: Line 1:
 +====== Instalando e Configurando Servidor NAS no Debian Squeeze ​ ======
  
 +
 +E ai galera, aqui eu vou abordar a instalação e configuração de um servidor NAS utilizando o Debian Squeeze.
 +
 +Uma unidade NAS é essencialmente um servidor conectado a rede, com a funcionalidade única de promover serviços de armazenamento de dados para outros dispositivos da rede. Estas unidades não são desenvolvidas para tarefas computacionais em geral, apesar de tecnicamente ser possível executar outros softwares nelas. Geralmente, as unidades não possuem teclado ou monitor, e são configuradas pela rede, normalmente através de um browser.
 +
 +Sistemas NAS podem conter mais de um HD, podendo também contar com a tecnologia RAID (Redundant Arrays of Independent Disks), centralizando a responsabilidade de servir os arquivos em uma rede e deste modo liberando recursos de outros servidores desta rede. Os protocolos utilizados pelo NAS são o NFS, popular em sistemas UNIX, ou CIFS/SMB (Common Internet File System/​Server Message Block) em ambientes Windows, assim como o tradicional FTP.
 +
 +O NAS disponibiliza armazenamento e sistema de arquivos, contrastando com o SAN (Storage Area Network), que só realiza armazenamento e deixa ao cliente a tarefa de lidar com o sistema de arquivos. A principal distinção entre os dois sistemas de armazenamento é que o NAS fornece protocolos de arquivo, e o SAN protocolos de camada. Raramente vê-se o sistema SAN sendo utilizado fora de grandes redes de computadores.
 +
 +Equipamentos NAS estão sendo usados pelo mundo corporativo há algum tempo, porém com a redução dos custos destes dispositivos e com a popularização de redes domésticas,​ diversos produtos NAS surgiram para o mercado pessoal. Estes dispositivos NAS de uso doméstico são baseados em processadores baratos rodando uma versão embarcada de Linux. Além do baixo custo, estes aparelhos têm baixo consumo de energia e têm uma instalação relativamente simples. Existem alternativas open source para implementações caseiras de NAS, como o FreeNAS, o Openfiler e o NASLite.
 +
 +
 +O que vou utilizar:
 +  * **Servidor Debian Squeeze**
 +    * **IP:** 10.101.0.25/​24
 +    * **Nome:** debian25
 +    * **Disco:** /dev/sdb 100 GB
 +  * **Cliente Debian Squeeze**
 +    * **IP:** 10.101.0.26/​24
 +    * **Nome:** debian26
 +    * **Localização da configuração do cliente:** /etc/iscsi
 +  * **Cliente CentOS 6.3**
 +    * **IP:** 10.101.0.50/​24
 +    * **Nome:** centos
 +    * **Localização da configuração do cliente:** /​var/​lib/​iscsi
 +
 +Prepare o seu sistema com o seguinte script http://​wiki.douglasqsantos.com.br/​doku.php/​confinicialsqueeze_en para que não falte nenhum pacote ou configuração.
 +
 +Agora vamos fazer um update dos repositório e vamos fazer um upgrade do sistema no Servidor
 +<sxh bash>
 +aptitude update && aptitude dist-upgrade -y
 +</​sxh>​
 +
 +Agora vamos instalar os pacotes necessários para o servidor trabalhar como NAS
 +<sxh bash>
 +aptitude install iscsitarget iscsitarget-dkms lvm2 -y
 +</​sxh>​
 +
 +Agora vamos resolver as dependências dos módulos
 +<sxh bash>
 +depmod -a
 +</​sxh>​
 +
 +Agora vamos carregar o módulo do iscsci
 +<sxh bash>
 +modprobe iscsi_trgt
 +</​sxh>​
 +
 +Agora vamos deixar este módulo na inicialização do sistema
 +<sxh bash>
 +echo "​iscsi_trgt"​ >> /​etc/​modprobe.d/​iscsi.conf
 +</​sxh>​
 +
 +Podemos listar informações dos nossos mapeamentos em
 +<sxh bash>
 +cat /​proc/​net/​iet/​session /​proc/​net/​iet/​volume
 +</​sxh>​
 +
 +Agora precisamos marcar o disco /dev/sdb para que o LVM passa utilizar ele
 +<sxh bash>
 +pvcreate -v /dev/sdb
 +</​sxh>​
 +
 +Agora vamos criar um grupo de volumes para podemos utilizar os lvs
 +<sxh bash>
 +vgcreate -v STORAGE /dev/sdb
 +</​sxh>​
 +
 +Agora vamos criar um lv para utilizarmos como lun que é o dispositivo que vai ser entregue para os clientes
 +<sxh bash>
 +lvcreate -v -L 7G -n lun0 STORAGE
 +</​sxh>​
 +
 +Agora vamos fazer backup do arquivo de configuração do iet que é quem controla as nossas luns
 +<sxh bash>
 +cp -a /​etc/​iet/​ietd.conf{,​.bkp}
 +</​sxh>​
 +
 +Agora vamos deixar o arquivo como abaixo
 +<sxh apache>
 +vim /​etc/​iet/​ietd.conf
 +#​Identificação da nossa LUN
 +Target iqn.2013-01.br.com.douglasqsantos:​storage.lun0
 +#Agora vamos definir um alias para a nossa lun
 +Alias LUN0
 +#Usuário utilizado para conectar na nossa lun
 +IncomingUser usuario senha
 +OutgoingUser
 +#Especifica aonde esta a nossa lun e o tipo padrão é o fileio
 +Lun 0 Path=/​dev/​STORAGE/​lun0,​Type=fileio
 +#Opções de conexões
 +MaxConnections 1
 +MaxSessions 0
 +NOPInterval 1
 +NOPTimeout 5
 +DataPDUInOrder Yes
 +DataSequenceInOrder Yes
 +</​sxh>​
 +
 +Por padrão o acesso as luns é liberados para todos e isso não é legal com isso vamos liberar o acesso somente para a nossa faixa 10.101.0.0/​24
 +
 +Vamos fazer um backup do arquivo de configuração do controle de acesso as luns
 +<sxh bash>
 +cp /​etc/​iet/​initiators.allow{,​.bkp}
 +</​sxh>​
 +
 +Agora vamos liberar o acesso a nossa lun para a rede 10.101.0.0/​24 deixe o arquivo como abaixo não caso não tenha zerado o arquivo comente a linhas ALL ALL
 +<sxh bash>
 +vim /​etc/​iet/​initiators.allow
 +[...]
 +iqn.2013-01.br.com.douglasqsantos:​storage.lun0 10.101.0.0/​24
 +</​sxh>​
 +
 +Agora precisamos liberar o iscsitarget ser iniciado junto com o sistema
 +<sxh bash>
 +sed -i '​s/​ISCSITARGET_ENABLE=false/​ISCSITARGET_ENABLE=true/​g'​ /​etc/​default/​iscsitarget
 +</​sxh>​
 +
 +Agora vamos reiniciar o serviço para que ele reconheça a nossa Lun
 +<sxh bash>
 +/​etc/​init.d/​iscsitarget restart
 +</​sxh>​
 +
 +Podemos consultar as sessões em uma determinada lun da seguinte forma
 +<sxh bash>
 +cat /​proc/​net/​iet/​session ​
 +tid:1 name:​iqn.2013-01.br.com.douglasqsantos:​storage.lun0
 +</​sxh>​
 +
 +Podemos consultar os as luns exportadas da seguinte forma
 +<sxh bash>
 +cat /​proc/​net/​iet/​volume ​
 +tid:1 name:​iqn.2013-01.br.com.douglasqsantos:​storage.lun0
 +  lun:0 state:0 iotype:​fileio iomode:wt blocks:​4194304 blocksize:​512 path:/​dev/​STORAGE/​lun0
 +</​sxh>​
 +====== Cliente Debian ======
 +
 +Agora vamos mandar atualizar os repositórios e vamos fazer um upgrade do sistema
 +<sxh bash>
 +aptitude update && aptitude dist-upgrade -y
 +</​sxh>​
 +
 +Agora vamos mandar instalar o cliente iscsi
 +<sxh bash>
 +aptitude install open-iscsi -y
 +</​sxh>​
 +
 +Agora vamos mandar reiniciar o serviço do open-iscsi no cliente
 +<sxh bash>
 +/​etc/​init.d/​open-iscsi restart
 +</​sxh>​
 +
 +Agora vamos mandar listar a nossa lun pelo cliente
 +<sxh bash>
 +iscsiadm -m discovery -t st -p 10.101.0.25
 +10.101.0.25:​3260,​1 iqn.2013-01.br.com.douglasqsantos:​storage.lun0
 +</​sxh>​
 +
 +Tivemos retorno do servidor NAS, agora vamos acertar a configuração de acesso a lun
 +
 +Primeiro vamos habilitar a conexão automaticamente
 +<sxh bash>
 +iscsiadm -m node iqn.2013-01.br.com.douglasqsantos:​storage.lun0 --op=update --name node.startup --value=automatic
 +</​sxh>​
 +
 +Agora vamos acertar o tipo de autenticação que vai ser CHAP
 +<sxh bash>
 +iscsiadm -m node iqn.2013-01.br.com.douglasqsantos:​storage.lun0 --op=update --name node.session.auth.authmethod --value=CHAP
 +</​sxh>​
 +
 +Agora vamos acertar o nome do usuário da conexão
 +<sxh bash>
 +iscsiadm -m node iqn.2013-01.br.com.douglasqsantos:​storage.lun0 --op=update --name node.session.auth.username --value=usuario
 +</​sxh>​
 +
 +Agora vamos acertar a senha do usuário para conexão ​
 +<sxh bash>
 +iscsiadm -m node iqn.2013-01.br.com.douglasqsantos:​storage.lun0 --op=update --name node.session.auth.password --value=senha
 +</​sxh>​
 +
 +Agora vamos efetuar o login no servidor
 +<sxh bash>
 +iscsiadm -m node iqn.2013-01.br.com.douglasqsantos:​storage.lun0 --login ​
 +Logging in to [iface: default, target: iqn.2013-01.br.com.douglasqsantos:​storage.lun0,​ portal: 10.101.0.25,​3260]
 +Login to [iface: default, target: iqn.2013-01.br.com.douglasqsantos:​storage.lun0,​ portal: 10.101.0.25,​3260]:​ successful
 +</​sxh>​
 +
 +Agora vamos ver se conseguimos o acesso
 +<sxh bash>
 +dmesg
 +[...]
 +[ 2603.886884] scsi9 : iSCSI Initiator over TCP/IP
 +[ 2604.907785] scsi 9:0:0:0: Direct-Access ​    ​IET ​     VIRTUAL-DISK ​    ​0 ​   PQ: 0 ANSI: 4
 +[ 2604.910061] sd 9:0:0:0: Attached scsi generic sg3 type 0
 +[ 2604.919603] sd 9:0:0:0: [sdc] 14680064 512-byte logical blocks: (7.51 GB/7.00 GiB)
 +[ 2604.920254] sd 9:0:0:0: [sdc] Write Protect is off
 +[ 2604.920257] sd 9:0:0:0: [sdc] Mode Sense: 77 00 00 08
 +[ 2604.921303] sd 9:0:0:0: [sdc] Write cache: disabled, read cache: enabled, doesn'​t support DPO or FUA
 +[ 2604.925890] ​ sdc:
 +[ 2604.932353] sd 9:0:0:0: [sdc] Attached SCSI disk
 +</​sxh>​
 +
 +Como podemos notar agora temos o dispositivo sdc mapeado via iscsi, vamos criar uma partição nele
 +<sxh bash>
 +fdisk /dev/sdc
 +
 +WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
 +         ​switch off the mode (command '​c'​) and change display units to
 +         ​sectors (command '​u'​).
 +
 +Comando (m para ajuda): n
 +Comando - ação
 +   ​e ​  ​estendida
 +   ​p ​  ​partição primária (1-4)
 +p
 +Número da partição (1-4): 1
 +Primeiro cilindro (1-1020, default 1): #ENTER
 +Using default value 1
 +Last cilindro, +cilindros or +size{K,​M,​G} (1-1020, default 1020): #ENTER
 +Using default value 1020
 +
 +Comando (m para ajuda): w
 +A tabela de partições foi alterada!
 +
 +Chamando ioctl() para reler tabela de partições.
 +Sincronizando discos.
 +</​sxh>​
 +
 +Aqui eu criei uma partição com o tamanho total do disco, agora vamos criar um sistema de arquivos para essa partição
 +<sxh bash>
 +mkfs.ext4 -L ISCSI -m 0 /dev/sdc1
 +mke2fs 1.41.12 (17-May-2010)
 +Filesystem label=ISCSI
 +OS type: Linux
 +Block size=4096 (log=2)
 +Fragment size=4096 (log=2)
 +Stride=0 blocks, Stripe width=0 blocks
 +458752 inodes, 1833952 blocks
 +0 blocks (0.00%) reserved for the super user
 +First data block=0
 +Maximum filesystem blocks=1879048192
 +56 block groups
 +32768 blocks per group, 32768 fragments per group
 +8192 inodes per group
 +Superblock backups stored on blocks: ​
 +  32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
 +
 +Writing inode tables: done                            ​
 +Creating journal (32768 blocks): done
 +Writing superblocks and filesystem accounting information:​ done
 +
 +This filesystem will be automatically checked every 28 mounts or
 +180 days, whichever comes first. ​ Use tune2fs -c or -i to override.
 +</​sxh>​
 +
 +Aqui eu passei a opção de -L para especificar um label para a partição e passei o -m 0 para não reservar os 5% do disco para o usuário root.
 +
 +Agora vamos criar um diretório para montarmos a nossa partição
 +<sxh bash>
 +mkdir /iscsi
 +</​sxh>​
 +
 +Agora vamos montar a nossa partição
 +<sxh bash>
 +mount /dev/sdc1 /iscsi/
 +</​sxh>​
 +
 +Agora vamos listar as nossas partições
 +<sxh bash>
 +df
 +Sist. Arq.    Tipo    Size  Used Avail Use% Montado em
 +/​dev/​sda1 ​    ​ext3 ​   323M  192M  115M  63% /
 +tmpfs        tmpfs    249M     ​0 ​ 249M   0% /​lib/​init/​rw
 +udev         ​tmpfs ​   244M  200K  244M   1% /dev
 +tmpfs        tmpfs    249M     ​0 ​ 249M   0% /dev/shm
 +/​dev/​sda9 ​    ​ext3 ​   2,8G   ​69M ​ 2,6G   3% /home
 +/​dev/​sda8 ​    ​ext3 ​   234M  6,1M  216M   3% /tmp
 +/​dev/​sda5 ​    ​ext3 ​   2,8G  748M  1,9G  29% /usr
 +/​dev/​sda6 ​    ​ext3 ​   1,4G  234M  1,1G  18% /var
 +/​dev/​sdc1 ​    ​ext4 ​   6,9G  144M  6,8G   3% /iscsi
 +</​sxh>​
 +
 +Está tudo ok, agora vamos inserir essa partição na inicialização do sistema
 +<sxh bash>
 +echo "/​dev/​sdc1 /iscsi ext4 _netdev,​defaults,​noatime 0 0" >> /etc/fstab
 +</​sxh>​
 +
 +Como a montagem é via rede precisamos utilizar a opção _netdev e para agilizar o sistema de arquivo eu desabilitei a atualização de acesso dos arquivos.
 +
 +
 +Agora vamos ajustar o arquivo de conexão da iscsi
 +<sxh bash>
 +vim /​etc/​iscsi/​iscsid.conf
 +[...]
 +node.startup = automatic
 +[...]
 +node.session.auth.authmethod = CHAP
 +[...]
 +node.session.auth.username = usuario
 +node.session.auth.password = senha
 +[...]
 +node.session.cmds_max = 1024 
 +[...]
 +node.session.queue_depth = 128
 +[...]
 +node.session.iscsi.FastAbort = No
 +</​sxh>​
 +
 +Agora vamos reiniciar o cliente para confirmarmos a montagem
 +<sxh bash>
 +reboot
 +</​sxh>​
 +
 +Agora vamos ver o uptime do cliente
 +<sxh bash>
 +uptime
 + ​11:​44:​17 up 0 min,  1 user,  load average: 0.00, 0.00, 0.00
 +</​sxh>​
 +
 +Agora vamos listar as nossas partições
 +<sxh bash>
 +df
 +Sist. Arq.    Tipo    Size  Used Avail Use% Montado em
 +/​dev/​sda1 ​    ​ext3 ​   323M  192M  115M  63% /
 +tmpfs        tmpfs    249M     ​0 ​ 249M   0% /​lib/​init/​rw
 +udev         ​tmpfs ​   244M  200K  244M   1% /dev
 +tmpfs        tmpfs    249M     ​0 ​ 249M   0% /dev/shm
 +/​dev/​sda9 ​    ​ext3 ​   2,8G   ​69M ​ 2,6G   3% /home
 +/​dev/​sda8 ​    ​ext3 ​   234M  6,1M  216M   3% /tmp
 +/​dev/​sda5 ​    ​ext3 ​   2,8G  748M  1,9G  29% /usr
 +/​dev/​sda6 ​    ​ext3 ​   1,4G  234M  1,1G  18% /var
 +/​dev/​sdc1 ​    ​ext4 ​   6,9G  144M  6,8G   3% /iscsi
 +</​sxh>​
 +
 +
 +Agora vamos consultar a conexão do cliente no Servidor
 +
 +No servidor NAS
 +<sxh bash>
 +cat /​proc/​net/​iet/​session ​
 +tid:1 name:​iqn.2013-01.br.com.douglasqsantos:​storage.lun0
 +  sid:​1125899927618048 initiator:​iqn.1993-08.org.debian:​01:​fa98a8565dfe
 +    cid:0 ip:​10.101.0.26 state:​active hd:none dd:none
 +</​sxh>​
 +
 +====== Agora vamos criar mais uma Lun ======
 +
 +Agora vamos criar mais uma lv para utilizarmos como lun
 +<sxh bash>
 +lvcreate -v -L 7G -n lun1 STORAGE
 +</​sxh>​
 +
 +
 +No servidor NAS
 +<sxh apache>
 +vim  /​etc/​iet/​ietd.conf
 +#​Identificação da nossa LUN
 +Target iqn.2013-01.br.com.douglasqsantos:​storage.lun0
 +#Agora vamos definir um alias para a nossa lun
 +Alias LUN0
 +#Usuário utilizado para conectar na nossa lun
 +IncomingUser usuario senha
 +OutgoingUser
 +#Especifica aonde esta a nossa lun e o tipo padrão é o fileio
 +Lun 0 Path=/​dev/​STORAGE/​lun0,​Type=fileio
 +#Opções de conexões
 +MaxConnections 1
 +MaxSessions 0
 +NOPInterval 1
 +NOPTimeout 5
 +DataPDUInOrder Yes
 +DataSequenceInOrder Yes
 +
 +#​Identificação da nossa LUN
 +Target iqn.2013-01.br.com.douglasqsantos:​storage.lun1
 +#Agora vamos definir um alias para a nossa lun
 +Alias LUN1
 +#Especifica aonde esta a nossa lun e o tipo padrão é o fileio
 +Lun 1 Path=/​dev/​STORAGE/​lun1,​Type=fileio
 +#Opções de conexões
 +MaxConnections 1
 +MaxSessions 0
 +NOPInterval 1
 +NOPTimeout 5
 +DataPDUInOrder Yes
 +DataSequenceInOrder Yes
 +</​sxh>​
 +
 +Agora vamos liberar o mapeamento da nossa nova lun para a rede 10.101.0.0/​24
 +<sxh bash>
 +vim /​etc/​iet/​initiators.allow
 +[...]
 +iqn.2013-01.br.com.douglasqsantos:​storage.lun0 10.101.0.0/​24
 +iqn.2013-01.br.com.douglasqsantos:​storage.lun1 10.101.0.0/​24
 +</​sxh>​
 +
 +Agora vamos mandar reiniciar o serviço do iscsi-target
 +<sxh bash>
 +/​etc/​init.d/​iscsitarget restart
 +</​sxh>​
 +
 +Agora vamos consultar o nosso novo volume
 +<sxh bash>
 +cat /​proc/​net/​iet/​volume ​
 +tid:2 name:​iqn.2013-01.br.com.douglasqsantos:​storage.lun1
 +  lun:1 state:0 iotype:​fileio iomode:wt blocks:​4194304 blocksize:​512 path:/​dev/​STORAGE/​lun1
 +tid:1 name:​iqn.2013-01.br.com.douglasqsantos:​storage.lun0
 +  lun:0 state:0 iotype:​fileio iomode:wt blocks:​4194304 blocksize:​512 path:/​dev/​STORAGE/​lun0
 +</​sxh>​
 +
 +====== Cliente CentOS ======
 + 
 +
 +Prepare o seu sistema com o seguinte script http://​www.douglas.wiki.br/​doku.php?​id=confinicialcentos6 para que não falte nenhum pacote ou configuração.
 +
 +vamos mandar fazer um update dos repositórios e vamos mandar fazer um update do sistema
 +
 +<sxh bash>
 +yum check-update && yum update -y
 +</​sxh>​
 +
 +Agora vamos mandar instalar o cliente para conexão iscsi
 +<sxh bash>
 +yum install iscsi-initiator-utils iscsi-initiator-utils-devel -y
 +</​sxh>​
 +
 +Agora vamos colocar o cliente iscsi na inicialização do sistema
 +<sxh bash>
 +chkconfig --add iscsi
 +chkconfig --add iscsid
 +</​sxh>​
 +
 +Agora vamos ativar ele
 +<sxh bash>
 +chkconfig iscsi on
 +chkconfig iscsid on
 +</​sxh>​
 +
 +
 +Agora vamos reiniciar o serviço
 +<sxh bash>
 +/​etc/​init.d/​iscsi restart
 +</​sxh>​
 +
 +Agora vamos listar as luns do servidor NAS
 +<sxh bash>
 +iscsiadm -m discovery -t st -p 10.101.0.25
 +10.101.0.25:​3260,​1 iqn.2013-01.br.com.douglasqsantos:​storage.lun1
 +10.101.0.25:​3260,​1 iqn.2013-01.br.com.douglasqsantos:​storage.lun0
 +</​sxh>​
 +
 +Note que agora temos duas luns e quando mandarmos conectar ele vai mapear as duas, vamos ajustar isso.
 +
 +Vamos obter o iqn do nosso cliente CentOS
 +<sxh bash>
 +cat /​etc/​iscsi/​initiatorname.iscsi ​
 +InitiatorName=iqn.1994-05.com.redhat:​4a84d448b327
 +</​sxh>​
 +
 +Agora que temos o iqn que é a identificação iscsi para o cliente vamos liberar a lun1 somente para ele
 +
 +No servidor NAS
 +<sxh bash>
 +vim /​etc/​iet/​initiators.allow
 +[...]
 +iqn.2013-01.br.com.douglasqsantos:​storage.lun0 10.101.0.0/​24
 +iqn.2013-01.br.com.douglasqsantos:​storage.lun1 iqn.1994-05.com.redhat:​4a84d448b327
 +</​sxh>​
 +
 +Note que ainda temos um problema a lun1 ainda vai aparecer para o nosso cliente CentOS, porém a lun1 não deve aparecer para o debian, vamos reiniciar o iscsitarget ​
 +<sxh bash>
 +/​etc/​init.d/​iscsitarget restart
 +</​sxh>​
 +
 +Agora no cliente Debian vamos listar as luns 
 +<sxh bash>
 +iscsiadm -m discovery -t st -p 10.101.0.25
 +10.101.0.25:​3260,​1 iqn.2013-01.br.com.douglasqsantos:​storage.lun0
 +</​sxh>​
 +
 +Note que somente foi mapeado uma lun pois a outra lun fizemos o controle pelo iqn, agora vamos listar no cliente CentOS
 +<sxh bash>
 +iscsiadm -m discovery -t st -p 10.101.0.25
 +10.101.0.25:​3260,​1 iqn.2013-01.br.com.douglasqsantos:​storage.lun0
 +10.101.0.25:​3260,​1 iqn.2013-01.br.com.douglasqsantos:​storage.lun1
 +</​sxh>​
 +
 +Note que ainda temos as duas luns, vamos verificar o iqn do cliente Debian.
 +<sxh bash>
 +tail -n 1 /​etc/​iscsi/​initiatorname.iscsi ​
 +InitiatorName=iqn.1993-08.org.debian:​01:​51fe411a118d
 +</​sxh>​
 +
 +Agora vamos mudar no servidor NAS o acesso da lun1 para somente o cliente Debian possa utilizar ela
 +
 +No servidor NAS
 +<sxh bash>
 +vim /​etc/​iet/​initiators.allow
 +[...]
 +iqn.2013-01.br.com.douglasqsantos:​storage.lun0 iqn.1993-08.org.debian:​01:​51fe411a118d
 +iqn.2013-01.br.com.douglasqsantos:​storage.lun1 iqn.1994-05.com.redhat:​4a84d448b327
 +</​sxh>​
 +
 +Agora vamos reiniciar o iscsitarget
 +<sxh bash>
 +/​etc/​init.d/​iscsitarget restart
 +</​sxh>​
 +
 +Agora no cliente CentOS vamos listar as luns
 +<sxh bash>
 +iscsiadm -m discovery -t st -p 10.101.0.25
 +10.101.0.25:​3260,​1 iqn.2013-01.br.com.douglasqsantos:​storage.lun1
 +</​sxh>​
 +
 +Se receber algum erro como abaixo.
 +<sxh bash>
 +iscsiadm -m discovery -t st -p 10.101.0.25
 +iscsiadm: This command will remove the record [iface: default, target: iqn.2013-01.br.com.douglasqsantos:​storage.lun0,​ portal: 10.101.0.25,​3260],​ but a session is using it. Logout session then rerun command to remove record.
 +10.101.0.25:​3260,​1 iqn.2013-01.br.com.douglasqsantos:​storage.lun1
 +</​sxh>​
 +
 +Precisamos mandar desconectar da lun da seguinte forma
 +<sxh bash>
 +iscsiadm -m node -u
 +</​sxh>​
 +
 +Note que agora temos o controle das luns.
 +
 +Agora como não precisamos mandar logar com o usuário e senha na lun1 vamos fazer o mapeamento
 +<sxh bash>
 +iscsiadm -m node -l -T iqn.2013-01.br.com.douglasqsantos:​storage.lun1 -p 10.101.0.25:​3260
 +Logging in to [iface: default, target: iqn.2013-01.br.com.douglasqsantos:​storage.lun1,​ portal: 10.101.0.25,​3260] (multiple)
 +Login to [iface: default, target: iqn.2013-01.br.com.douglasqsantos:​storage.lun1,​ portal: 10.101.0.25,​3260] successful.
 +</​sxh>​
 +
 +Vamos listar a nossa conexão com o servidor NAS
 +<sxh bash>
 +iscsiadm -m session -P 2
 +Target: iqn.2013-01.br.com.douglasqsantos:​storage.lun1
 +  Current Portal: 10.101.0.25:​3260,​1
 +  Persistent Portal: 10.101.0.25:​3260,​1
 +    **********
 +    Interface:
 +    **********
 +    Iface Name: default
 +    Iface Transport: tcp
 +    Iface Initiatorname:​ iqn.1994-05.com.redhat:​bf9c07079f6
 +    Iface IPaddress: 10.101.0.50
 +    Iface HWaddress: <​empty>​
 +    Iface Netdev: <​empty>​
 +    SID: 1
 +    iSCSI Connection State: LOGGED IN
 +    iSCSI Session State: LOGGED_IN
 +    Internal iscsid Session State: NO CHANGE
 +    *********
 +    Timeouts:
 +    *********
 +    Recovery Timeout: 120
 +    Target Reset Timeout: 30
 +    LUN Reset Timeout: 30
 +    Abort Timeout: 15
 +    *****
 +    CHAP:
 +    *****
 +    username: <​empty>​
 +    password: ********
 +    username_in:​ <​empty>​
 +    password_in:​ ********
 +    ************************
 +    Negotiated iSCSI params:
 +    ************************
 +    HeaderDigest:​ None
 +    DataDigest: None
 +    MaxRecvDataSegmentLength:​ 262144
 +    MaxXmitDataSegmentLength:​ 8192
 +    FirstBurstLength:​ 65536
 +    MaxBurstLength:​ 262144
 +    ImmediateData:​ Yes
 +    InitialR2T: Yes
 +    MaxOutstandingR2T:​ 1
 +</​sxh>​
 +
 +Podemos notar que temos a conexão e que ela está como  LOGGED IN
 +
 +Agora vamos consultar o dmesg
 +<sxh bash>
 +scsi7 : iSCSI Initiator over TCP/IP
 +scsi 7:0:0:1: Direct-Access ​    ​IET ​     VIRTUAL-DISK ​    ​0 ​   PQ: 0 ANSI: 4
 +sd 7:0:0:1: Attached scsi generic sg2 type 0
 +sd 7:0:0:1: [sdc] 4194304 512-byte logical blocks: (7.51 GB/7.00 GiB)
 +sd 7:0:0:1: [sdc] Write Protect is off
 +sd 7:0:0:1: [sdc] Mode Sense: 77 00 00 08
 +sd 7:0:0:1: [sdc] Write cache: disabled, read cache: enabled, doesn'​t support DPO or FUA
 + sdc: unknown partition table
 +sd 7:0:0:1: [sdc] Attached SCSI disk
 +</​sxh>​
 +
 +Como podemos notar agora temos o dispositivo sdc mapeado via iscsi, vamos criar uma partição nele
 +<sxh bash>
 +fdisk /dev/sdc
 +
 +WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
 +         ​switch off the mode (command '​c'​) and change display units to
 +         ​sectors (command '​u'​).
 +
 +Comando (m para ajuda): n
 +Comando - ação
 +   ​e ​  ​estendida
 +   ​p ​  ​partição primária (1-4)
 +p
 +Número da partição (1-4): 1
 +Primeiro cilindro (1-1020, default 1): #ENTER
 +Using default value 1
 +Last cilindro, +cilindros or +size{K,​M,​G} (1-1020, default 1020): #ENTER
 +Using default value 1020
 +
 +Comando (m para ajuda): w
 +A tabela de partições foi alterada!
 +
 +Chamando ioctl() para reler tabela de partições.
 +Sincronizando discos.
 +</​sxh>​
 +
 +Aqui eu criei uma partição com o tamanho total do disco, agora vamos criar um sistema de arquivos para essa partição
 +<sxh bash>
 +mkfs.ext4 -L ISCSI -m 0 /dev/sdc1
 +mke2fs 1.41.12 (17-May-2010)
 +Filesystem label=ISCSI
 +OS type: Linux
 +Block size=4096 (log=2)
 +Fragment size=4096 (log=2)
 +Stride=0 blocks, Stripe width=0 blocks
 +458752 inodes, 1833952 blocks
 +0 blocks (0.00%) reserved for the super user
 +First data block=0
 +Maximum filesystem blocks=1879048192
 +56 block groups
 +32768 blocks per group, 32768 fragments per group
 +8192 inodes per group
 +Superblock backups stored on blocks: ​
 +  32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
 +
 +Writing inode tables: done                            ​
 +Creating journal (32768 blocks): done
 +Writing superblocks and filesystem accounting information:​ done
 +
 +This filesystem will be automatically checked every 28 mounts or
 +180 days, whichever comes first. ​ Use tune2fs -c or -i to override.
 +</​sxh>​
 +
 +Aqui eu passei a opção de -L para especificar um label para a partição e passei o -m 0 para não reservar os 5% do disco para o usuário root.
 +
 +Agora vamos criar um diretório para montarmos a nossa partição
 +<sxh bash>
 +mkdir /iscsi
 +</​sxh>​
 +
 +Agora vamos montar a nossa partição
 +<sxh bash>
 +mount /dev/sdc1 /iscsi/
 +</​sxh>​
 +
 +Agora vamos listar as nossas partições
 +<sxh bash>
 +df
 +Sist. Arq.    Tipo    Size  Used Avail Use% Montado em
 +/​dev/​sda5 ​    ​ext4 ​    ​47G ​ 7,8G   ​37G ​ 18% /
 +tmpfs        tmpfs    3,9G  5,3M  3,9G   1% /dev/shm
 +/​dev/​sda1 ​    ​ext4 ​   461M   ​81M ​ 357M  19% /boot
 +/​dev/​sda7 ​    ​ext4 ​   410G  232G  157G  60% /home
 +/​dev/​sdb1 ​    ​ext4 ​   294G  191M  279G   1% /srv
 +/​dev/​sdc1 ​    ​ext4 ​   6,9G  144M  6,8G   3% /iscsi
 +</​sxh>​
 +
 +Está tudo ok, agora vamos inserir essa partição na inicialização do sistema
 +<sxh bash>
 +echo "/​dev/​sdc1 /iscsi ext4 _netdev,​defaults,​noatime 0 0" >> /etc/fstab
 +</​sxh>​
 +
 +Como a montagem é via rede precisamos utilizar a opção _netdev e para agilizar o sistema de arquivo eu desabilitei a atualização de acesso dos arquivos.
 +
 +
 +Agora vamos ajustar o arquivo de conexão da iscsi
 +<sxh bash>
 +vim /​etc/​iscsi/​iscsid.conf
 +[...]
 +node.startup = automatic
 +[...]
 +node.session.cmds_max = 1024 
 +[...]
 +node.session.queue_depth = 128
 +[...]
 +node.session.iscsi.FastAbort = No
 +</​sxh>​
 +
 +Agora vamos reiniciar o cliente para confirmarmos a montagem
 +<sxh bash>
 +reboot
 +</​sxh>​
 +
 +Agora vamos ver o uptime do cliente
 +<sxh bash>
 +uptime
 + ​15:​26:​35 up 0 min,  1 user,  load average: 0.00, 0.00, 0.00
 +</​sxh>​
 +
 +Agora vamos listar as nossas partições
 +<sxh bash>
 +df
 +Sist. Arq.    Tipo    Size  Used Avail Use% Montado em
 +/​dev/​sda5 ​    ​ext4 ​    ​47G ​ 7,8G   ​37G ​ 18% /
 +tmpfs        tmpfs    3,9G  5,3M  3,9G   1% /dev/shm
 +/​dev/​sda1 ​    ​ext4 ​   461M   ​81M ​ 357M  19% /boot
 +/​dev/​sda7 ​    ​ext4 ​   410G  232G  157G  60% /home
 +/​dev/​sdb1 ​    ​ext4 ​   294G  191M  279G   1% /srv
 +/​dev/​sdc1 ​    ​ext4 ​   6,9G  144M  6,8G   3% /iscsi
 +</​sxh>​
 +
 +
 +Agora vamos consultar a conexão do cliente no Servidor
 +
 +No servidor NAS
 +<sxh bash>
 +cat /​proc/​net/​iet/​session ​
 +tid:2 name:​iqn.2013-01.br.com.douglasqsantos:​storage.lun1
 +  sid:​562949990973952 initiator:​iqn.1994-05.com.redhat:​43c7a0d2ad63
 +    cid:0 ip:​10.101.0.1 state:​active hd:none dd:none
 +tid:1 name:​iqn.2013-01.br.com.douglasqsantos:​storage.lun0
 +  sid:​281474997486080 initiator:​iqn.1993-08.org.debian:​01:​fa98a8565dfe
 +    cid:0 ip:​10.101.0.26 state:​active hd:none dd:none
 +</​sxh>​
 +
 +Agora vamos consultar os nossos volumes
 +<sxh bash>
 +cat /​proc/​net/​iet/​volume ​
 +tid:2 name:​iqn.2013-01.br.com.douglasqsantos:​storage.lun1
 +  lun:1 state:0 iotype:​fileio iomode:wt blocks:​4194304 blocksize:​512 path:/​dev/​STORAGE/​lun1
 +tid:1 name:​iqn.2013-01.br.com.douglasqsantos:​storage.lun0
 +  lun:0 state:0 iotype:​fileio iomode:wt blocks:​4194304 blocksize:​512 path:/​dev/​STORAGE/​lun0
 +</​sxh>​
 +
 +Caso precise adicionar mais luns é só criar o lv e inserir as entradas necessárias em /​etc/​iet/​ietd.conf
 +
 +====== Referências ======
 +  - http://​pt.wikipedia.org/​wiki/​Network-Attached_Storage
 +  - http://​iscsitarget.sourceforge.net/​
 +  - http://​troysunix.blogspot.com.br/​2011/​06/​configuring-iscsi-targets-in-linux.html