INFRAESTRUTURA
- Host Cliente
- 2 Interfaces de Rede
- Eth0: 10.0.2.4/24
- Eth1: 192.168.56.101/24
- Host Storage
- 2 Interfaces de Rede
- Eth0: 10.0.2.X/24
- Eth1: 192.168.56.101/24
Sendo a rede 192.168.56.x/24 um dos caminhos para o storage e 10.0.2.X/24 será o outro caminho.
Por se tratar um ambiente virtual, não temos cabos, switches etc. Em um ambiente físico utilize switches diferentes, pois utilizando o mesmo switch a “redundância” não estará livre de ser afetada caso o switch apresente falhas. 🙂
Iniciadas as duas estações, primeiramente devemos configurar o repositório, para isso vamos utilizar a ISO do Red Hat Enterprise Linux6.5, a mesma que usamos para a instalação do SO.
# mount /dev/cdrom /mnt
# mkdir /repo
# cp -rf /mnt/* /repo
Criar um arquivo de configuração para que o comando yum reconheça como um repositório o “/repo”:
# vi /etc/yum.repos.d/rhel.repo
Conteúdo do arquivo deverá ficar desta maneira:
baseurl=file:///repo
name=”Redhat”
gpgcheck=0
[redhat-storage]
baseurl=file:///repo/ResilientStorage
name=”Redhat1″
gpgcheck=0
[redhat-ha]
baseurl=file:///repo/HighAvailability
name=”Redhat2″
gpgcheck=0
Para testarmos se a configuração teve efeito no S.O.:
# yum repolist
Loaded plugins: product-id, subscription-manager This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register. redhat | 3.9 kB 00:00 ... redhat-ha | 3.9 kB 00:00 ... redhat-storage | 3.9 kB 00:00 ... repo id repo name status redhat "Redhat" 3.690 redhat-ha "Redhat2" 56 redhat-storage "Redhat1" 62
CONFIGURANDO STORAGE
X = Indiferente do tamanho que deseja disponibilizar, no meu exemplo vou adicionar um disco de 5GB.
Primeiramente, na máquina de storage, vamos instalar os pacotes necessários para configurar o ISCSI e assim exportarmos a LUN:
# yum install scsi-target-utils -y
Para que as configurações sejam persistentes, devemos por na inicialização do S.O. e iniciar o serviço:
# service tgtd start
Starting SCSI target daemon: [ OK ]
# chkconfig tgtd on
Vamos agora criar e configurar nosso IQN (Iscsi qualified name):
# tgtadm –lld iscsi –mode target –op new –tid 1 –targetname iqn.2014-05.com.exaple.iscsi:diskiscsi
Para validarmos se a criação foi com sucesso, utilizamos o seguinte comando:
# tgt-admin -s
Target 1: iqn.2014-05.com.exaple.iscsi:diskiscsi System information: Driver: iscsi State: ready I_T nexus information: LUN information: LUN: 0 Type: controller SCSI ID: IET 00010000 SCSI SN: beaf10 Size: 0 MB, Block size: 1 Online: Yes Removable media: No Prevent removal: No Readonly: No Backing store type: null Backing store path: None Backing store flags: Account information: ACL information:
Até aqui já temos nosso servidor ISCSI com iqn criado, vamos agora disponibilizar nossa primeira LUN de número 1. E informamos qual dispositivo de bloco vai ser exportado:
# tgtadm –lld iscsi –mode logicalunit –op new –tid 1 –lun 1 –backing-store /dev/sdb
Para validarmos se a criação foi com sucesso, utilizamos o seguinte comando:
# tgt-admin -s
Target 1: iqn.2014-05.com.exaple.iscsi:diskiscsi System information: Driver: iscsi State: ready I_T nexus information: LUN information: LUN: 0 Type: controller SCSI ID: IET 00010000 SCSI SN: beaf10 Size: 0 MB, Block size: 1 Online: Yes Removable media: No Prevent removal: No Readonly: No Backing store type: null Backing store path: None Backing store flags: LUN: 1 Type: disk SCSI ID: IET 00010001 SCSI SN: beaf11 Size: 5369 MB, Block size: 512 Online: Yes Removable media: No Prevent removal: No Readonly: No Backing store type: rdwr Backing store path: /dev/sdb Backing store flags: Account information: ACL information:
Se você conseguiu chegar neste ponto, já temos ISCSI server levemente configurado e com LUN disponível para ser utilizado.
Configurar ACL para quais são os clientes que poderão utilizar “montar” este dispositivo. Neste caso, pegue os endereços de IP da máquina cliente. No meu caso, minha máquina cliente tem os seguintes IPs:
# hostname -I
10.0.2.5
192.168.56.102
Na máquina storage, vamos criar as ACLs para estes IPs utilizando o comando abaixo:
# tgtadm –lld iscsi –mode target –op bind –tid 1 –initiator-address 10.0.2.5
# tgtadm –lld iscsi –mode target –op bind –tid 1 –initiator-address 192.168.56.102
Para confirmar as modificações, utilize o comando já conhecido:
# tgt-admin -s
E confirme se na parte das ACLs já aparece quais são os IPs que vão poder montar estar unidade.
Liberação do firewall para poder receber esta conexão pelo cliente:
# iptables -A INPUT -p udp -m state –state NEW,ESTABLISHED –dport 3260 -j ACCEPT
# iptables -A INPUT -p tcp -m state –state NEW,ESTABLISHED –dport 3260 -j ACCEPT
# iptables-save > /etc/sysconfig/iptables
Para finalizar o ISCSI, salve as configurações realizadas no arquivo de configuração:
# tgt-admin –dump > /etc/tgt/targets.conf
# cat /etc/tgt/targets.conf
<target iqn.2014-05.com.exaple.iscsi:diskiscsi>
backing-store /dev/sdb
initiator-address 10.0.2.5
initiator-address 192.168.56.102
</target>
CONFIGURAR ISCSI CLIENT E MULTIPATH
# ls /dev/sd?
/dev/sda
Para que possamos importar os volumes expostos pelo ISCSI e configurar o multipath, devemos instalar os pacotes na máquina cliente:
# yum install iscsi-initiator-utils device-mapper-multipath -y
Após instalação do pacotes, vamos então mapear o volume remoto disponível pelo storage. Primeiramente, vamos solicitar à máquina storage que envie os volumes disponíveis (Targets):
* Lembrando que devemos fazer esta requisição pelas duas redes 10 e 192.
# iscsiadm -m discovery -t st -p 192.168.56.101
192.168.56.101:3260,1 iqn.2014-05.com.exaple.iscsi:diskiscsi
# iscsiadm -m discovery -t st -p 10.0.2.4
10.0.2.4:3260,1 iqn.2014-05.com.exaple.iscsi:diskiscsi
Descoberto as LUN’s disponíveis, vamos então mapear este volume:
* Note que quando pedimos para que seja mapeado o volume ISCSI, o próprio deamon do ISCSI utiliza os dois “caminhos”
# iscsiadm -m node -T iqn.2014-05.com.exaple.iscsi:diskiscsi -l
Logging in to [iface: default, target: iqn.2014-05.com.exaple.iscsi:diskiscsi, portal: 192.168.56.101,3260] (multiple)
Logging in to [iface: default, target: iqn.2014-05.com.exaple.iscsi:diskiscsi, portal: 10.0.2.4,3260] (multiple)
Login to [iface: default, target: iqn.2014-05.com.exaple.iscsi:diskiscsi, portal: 192.168.56.101,3260] successful.
Login to [iface: default, target: iqn.2014-05.com.exaple.iscsi:diskiscsi, portal: 10.0.2.4,3260] successful.
Vocês lembram que tínhamos apenas um disco disponível no host Cliente? Bom, agora temos os volumes exportados do storage:
# ls /dev/sd?
/dev/sda
/dev/sdb
/dev/sdc
Para que as configurações sejam persistentes, coloque o serviço na inicialização:
# chkconfig iscsid on
CONFIGURAÇÃO DO MULTIPATH
Agora vamos iniciar a configuração do multipath. Primeiramente, copie o modelo de arquivo de configuração da documentação para o “/etc”:
# cp /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf /etc
Vamos editar o arquivo. Feita configurações simples no arquivo (fique à vontade para explorar todos os recursos: alias, blacklist etc):
user_friendly_names no
getuid_callout “/lib/udev/scsi_id –replace-whitespace –whitelisted –device=/dev/%n”
}
Reiniciando o serviço do multipath e colocando o mesmo na inicialização:
# /etc/init.d/multipathd restart ; chkconfig multipathd on
Feito isso, podemos agora manusear o dispositivo. Crie uma partição com 2 GB, utilizando filesystem ext4:
# fdisk /dev/mapper/1IET_00010001
Se por algum motivo, após criar a partição não for reconhecido como o exemplo abaixo, execute os comandos:
# partprobe
E:
# multipath -r
O comando “multipath -r” é comum ser utilizado quando esta mesma LUN é entregue a mais de uma máquina em um cluster, por exemplo.
# mkfs -t ext4 /dev/mapper/1IET_00010001p1
TESTANDO OS SERVIÇOS
1. Monte a partição criada no /mnt:
# mount /dev/mapper/1IET_00010001p1 /mnt
2. Crie um arquivo dentro do /mnt:
# > /mnt/arq1
3. Desative na máquina cliente a interface da rede 10.x.x.x: ifdown, dhclient -r …
4. Tente criar outros arquivos:
# touch teste{1..100}
5. Volte à interface rede 10 e desative a rede 192.
6. Tente criar outro arquivo.
Todos os arquivos foram criados, mesmo com uma das interfaces baixadas.