iSCSI: O que é e para que serve

Por: Fernando Lanner Cardoso

Procuramos aqui responder duas das perguntas mais frequentes que ouvimos de quem está considerando iniciar utilizando a tecnologia iSCSI. Muito mais do que abordar os aspectos mais importantes desta tecnologia, a intenção aqui foi tão somente procurar explicar o que é o iSCSI e porque ele pode ser uma opção muito interessante. Acreditamos que após ler este artigo, aqueles que nunca consideraram utilizar o iSCSI em seus ambientes, passarão a considerar a idéia mais seriamente.

O que é

iSCSI nada mais é do que SCSI sobre uma rede IP.

Assim sendo, vamos iniciar com SCSI (Small Computer System Interface). Veja que ainda não estamos falando de iSCSI. SCSI é um conjunto de padrões que inclui o protocolo, o conjunto de comandos e especificações acerca das propriedades físicas de dispositivos que levam o seu nome. Dispositivos como, por exemplo, placas controladoras, discos, unidades de fita, entre outros, que levam o nome SCSI. Uma controladora SCSI ao requisitar que o conteúdo de um bloco em um disco SCSI seja lido, envia um comando SCSI para este disco. O disco SCSI por sua vez interpreta este comando e inicia o processo de leitura e transmissão do que está armazenado neste bloco. Estas interações podem ser bem mais abrangentes. Por exemplo, a requisição de leitura pode informar também sobre as chances deste bloco ter que ser acessado novamente. Auxiliando assim o dispositivo SCSI na gerência de seu cache. Se o dispositivo SCSI for uma unidade de fita, o comando SCSI pode estar requisitando um rewind da media. Citando um último exemplo, em uma tape library, inclusive a movimentação do braço que posiciona as mídias é controlada através de comandos SCSI.

O SCSI define que temos basicamente dois tipos de dispositivos, com funções complementares: Initiators e Targets. Respectivamente, os que iniciam e os que servem uma transação SCSI. Por exemplo, uma placa controladora de discos SCSI e os discos SCSI.

O protocolo SCSI, que foi desenvolvido como parte do padrão SCSI, já tem alguns anos é também utilizado em conjunto com outras tecnologias. Por exemplo, a arquitetura Fibre Channel utiliza comandos SCSI.

Chegamos então finalmente ao iSCSI. Internet-SCSI. Que leva esse nome justamente por utilizar uma rede IP como meio para enviar comandos SCSI. Assim como o Fibre Channel que utiliza o SCSI, o iSCSI também o utiliza mas em um rede IP. No iSCSI, uma aplicação envia uma requisição, o Windows gera o comando SCSI, o qual é então encapsulado em um pacote IP. Que é então transmitido normalmente pela rede Ethernet. Este pacote é recebido pelo iSCSI Target, o comando SCSI é extraído e interpretado pelo dispositivo SCSI.

Fechando esta sessão, vale ainda lembrar que o lado Initiator pode tanto ser uma NIC, o mais comumente encontrado, como também uma controladora iSCSI. Que faz as vezes do Initiator e apresenta o(s) dispositivo(s) do Target para o Sistema Operacional.

Para que serve

Iniciando com o entendimento geral acerca das vantagens alcançadas com a implementação do iSCSI: possibilita que aplicações, como SQL Server e Exchange, acessem “raw storage blocks” em sistemas remotos. Permitindo que um disco iSCSI, por exemplo, apareça para o Sistema Operacional como um disco local. Ainda, ao utilizar iSCSI ao invés de Fibre Channel, por exemplo, utiliza-se o conhecimento de redes IP já existente dentro das empresas. A adoção do iSCSI ainda facilita a expansão das capacidades de armazenamento sem impacto na produção e com maior flexibilidade.

Não é incomum ouvirmos a pergunta: “Qual o motivo da existência do iSCSI se uma vez que tenha uma rede IP posso acessar qualquer compartilhamento através dessa rede IP via um file share comum?”

O acesso a uma unidade de discos externa pode ser feito em nível de arquivo (file level) ou em nível de bloco (block level)

O acesso em nível de arquivo é o mais comum. Justamente o causador da dúvida acima. A fim de acessar um share remoto, a partir de uma máquina fazendo as vezes do cliente, você informa a UNC deste share. Por exemplo, \\servidor\share01. Chamamos este tipo de acesso de file level access. Acesso em nível de arquivo. Uma das diferenças fundamentais neste caso em relação ao block level, é que o file system está do lado do dispositivo que está servindo arquivos. Assim como o protocolo para compartilhamento deste file system (CIFs, FTP, NFS), também é executado do lado do file server.

O acesso via iSCSI é do tipo que chamamos block level. Acesso em nível de bloco. Quando utilizando o iSCSI para acesso à discos o que temos basicamente é um iSCSI Target (storage) servindo um iSCSI Initiator (host). Em nível de bloco. Os termos Target e Initiator aqui são herdados do protocolo SCSI. Em termos práticos, o que acontece neste caso é exatamente o que acontece quando você apresenta um disco SCSI para o Windows. O disco é identificado pelo Windows e apresentado como um disco novo dentro do Disk Management. Para o Sistema Operacional é transparente. Para ele trata-se efetivamente de um novo disco local sendo apresentado. Ao contrário de no file level, no block level o File System está sendo gerenciado pelo host. Somente pacotes SCSI trafegam entre host e storage. Não mais arquivos e compartilhamentos. Sem mais overhead de file system.

Por último, mas não menos importante, a utilização do iSCSI traz consigo os benefícios de uma SAN. Pode-se ter um Failover Cluster utilizando um storage iSCSI para armazenar os dados que os clientes acessam. Por exemplo, clientes SQL ou Exchange acessando dados em um storage iSCSI acessível por todos os nós de um cluster. Você pode ainda, por exemplo, ter uma solução Hyper-V em cluster. Com as Máquinas Virtuais armazenadas no storage iSCSI. Possibilidades que só passam a existir a partir do momento em que se tem um shared storage, compartilhado entre mais de um host.

Considerações finais

O iSCSI muitas vezes é a porta de entrada para soluções de alta disponibilidade. O custo reduzido quando comparado à outras arquiteturas bem como a familiaridade com redes ethernet são fatores que contribuíram para tal. Em um próximo artigo, vamos abordar a configuração básica de um iSCSI Initiator. Conforme os feedbacks vamos eventualmente abordar iSCSI Targets, configurações em cluster, Hyper-V, CSV, etc.

 

Referências