Differences

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

Link to this comparison view

configurando_storage_server_debian_para_xen_server_6_pt_br [2017/09/05 12:18] (current)
Line 1: Line 1:
 +====== Configurando Storage Server Debian para Xen Server 6 ======
  
 +
 +E ai galera aqui eu vou abordar a instalação e configuração de um Storage Server Debian para utilizarmos no Xen Server este storage vai servir para armazenar as vms com isso podemos subir as VMs em outro servidor fora o que a VM foi instalada pois o storage vai ser compartilhado,​ vou abordar também a conexão do Xen no Storage Debian e em um compartilhamento NFS que será utilizado para armazenar as Isos de instalação dos SOs.
 +
 +O que vou utilizar no tutorial:
 +  * **Xen Server 6.0.2**
 +   * **Ip Xen:** 192.168.1.200
 +   * **Nome Xen:** xen01
 +   * **Domínio:​** douglasqsantos.com.br
 +   * **iqn Xen:** iqn.2012-09.br.com.douglasqsantos.xen01:​20120914
 +  * **Debian Squeeze**
 +   * **Ip Debian:** 192.168.1.31
 +   * **Nome Debian:** storage
 +   * **Domínio:​** douglasqsantos.com.br
 +   * **iqn Debian:** iqn.2012-09.br.com.douglasqsantos.storage:​storage
 +   * **Disco para Storage:** 200 GB ele vai ser: /dev/sdb
 +   * **Disco para NFS:** 20 GB ele vai ser: /​dev/​sdc ​
 +
 +Vamos começar montando o nosso Storage Server no Debian
 +
 +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.
 +
 +
 +====== Instalação do Storage Server ======
 +Agora vamos mandar atualizar os repositórios
 +<sxh bash>
 +aptitude update
 +</​sxh>​
 +
 +Agora vamos mandar instalar os pacotes necessários
 +<sxh bash>
 +aptitude install iscsitarget iscsitarget-source lvm2 -y
 +</​sxh>​
 +
 +Agora vamos acertar os módulos do kernel
 +<sxh bash>
 +m-a prepare && m-a update && m-a a-i iscsitarget
 +</​sxh>​
 +Agora precisamos configurar o nosso daemon que controla o serviço de armazenamento
 +
 +Vamos fazer um backup do arquivo de configuração
 +<sxh bash>
 +cp -Rfa /​etc/​iet/​ietd.conf{,​.bkp}
 +</​sxh>​
 +
 +Agora vamos deixar o arquivo como abaixo
 +<sxh bash>
 +vim /​etc/​iet/​ietd.conf
 +#Aqui vamos definir o iqn que vai aparecer para o Xen
 +Target iqn.2012-09.br.com.douglasqsantos.storage:​storage
 +#Aqui vamos definir a nossa Lun qual o local que ela vai ficar o tipo dela 
 +Lun 0 Path=/​dev/​xen/​storage,​Type=fileio
 +# Agora vamos criar um nome para a nossa LUN
 +Alias storage
 +</​sxh>​
 +
 +Agora precisamos criar configurar a LVM que o storage vai utilizar para a LUN
 +
 +Vamos criar o grupo de volumes chamado xen
 +<sxh bash>
 +vgcreate xen /dev/sdb /dev/sdc
 +</​sxh>​
 +
 +Agora vamos criar o volume lógico para o storage
 +<sxh bash>
 +lvcreate -n storage -L 199G xen
 +</​sxh>​
 +
 +Agora vamos criar o volume lógico para o nfs
 +<sxh bash>
 +lvcreate -n nfs -L 19G xen
 +</​sxh>​
 +
 +Agora vamos acertar o arquivo que controla a inicialização do daemon
 +<sxh bash>
 +sed -i '​s/​false/​true/​g' ​ /​etc/​default/​iscsitarget
 +</​sxh>​
 +
 +Agora precisamos iniciar o serviço
 +<sxh bash>
 +/​etc/​init.d/​iscsitarget start
 +</​sxh>​
 +
 +Agora vamos verificar o status do serviço
 +<sxh bash>
 +/​etc/​init.d/​iscsitarget status
 +iSCSI enterprise target is running.
 +</​sxh>​
 +
 +====== Configurando a ISCSI no Xen ======
 +
 +Agora precisamos acertar a configuração do cliente iscsi do Xen
 +
 +Vamos adicionar o serviço do open-iscsi na inicialização do Xen
 +<sxh bash>
 +chkconfig --add open-iscsi
 +</​sxh>​
 +
 +Agora vamos ativar ele
 +<sxh bash>
 +chkconfig open-iscsi on
 +</​sxh>​
 +
 +Agora precisamos criar uma iqn para o Xen
 +<sxh bash>
 +vi /​etc/​iscsi/​initiatorname.iscsi
 +InitiatorName=iqn.2012-09.br.com.douglasqsantos.xen01:​20120914
 +InitiatorAlias=xen01
 +</​sxh>​
 +
 +
 +Agora vamos reiniciar o serviço do open-iscsi
 +<sxh bash>
 +/​etc/​init.d/​open-iscsi restart
 +</​sxh>​
 +
 +Agora vamos listar o storage Debian
 +<sxh bash>
 +iscsiadm -m discovery -t st -p 192.168.1.31
 +192.168.1.31:​3260,​1 iqn.2012-09.br.com.douglasqsantos.storage:​storage
 +</​sxh>​
 +
 +Agora vamos mandar o xen listar as informações do storage para podemos mandar conectar
 +<sxh bash>
 +xe sr-probe type=lvmoiscsi device-config:​target=192.168.1.31
 +Error code: SR_BACKEND_FAILURE_96
 +Error parameters: , The request is missing or has an incorrect target IQN parameter, <?xml version="​1.0"​ ?>
 +<​iscsi-target-iqns>​
 +  <TGT>
 +    <​Index>​
 +      0
 +    </​Index>​
 +    <​IPAddress>​
 +      192.168.1.31
 +    </​IPAddress>​
 +    <​TargetIQN>​
 +      iqn.2012-09.br.com.douglasqsantos.storage:​storage
 +    </​TargetIQN>​
 +  </​TGT>​
 +  <TGT>
 +    <​Index>​
 +      1
 +    </​Index>​
 +    <​IPAddress>​
 +      192.168.1.31
 +    </​IPAddress>​
 +    <​TargetIQN>​
 +      *
 +    </​TargetIQN>​
 +  </​TGT>​
 +</​iscsi-target-iqns>​
 +</​sxh>​
 +
 +No comando acima conseguimos descobrir o targetIQN que vamos precisar para conectar no Storage agora vamos passar o comando novamente e mais o targetIQN
 +<sxh bash>
 +xe sr-probe type=lvmoiscsi device-config:​target=192.168.1.31 device-config:​targetIQN=iqn.2012-09.br.com.douglasqsantos.storage:​storage
 +Error code: SR_BACKEND_FAILURE_107
 +Error parameters: , The SCSIid parameter is missing or incorrect, <?xml version="​1.0"​ ?>
 +<​iscsi-target>​
 +  <LUN>
 +    <​vendor>​
 +      IET
 +    </​vendor>​
 +    <​serial>​
 +      d46d72048219398f6b2286c689617578
 +    </​serial>​
 +    <​LUNid>​
 +      0
 +    </​LUNid>​
 +    <​size>​
 +      106300440576
 +    </​size>​
 +    <​SCSIid>​
 +      14945540000000000d46d72048219398f6b2286c689617578
 +    </​SCSIid>​
 +  </​LUN>​
 +</​iscsi-target>​
 +</​sxh>​
 +
 +No comando acima já conseguimos mais o serial e o scisiid que vamos precisar para para conectar no storage
 +
 +Agora vamos passar o comando acima mais o SCSIid
 +<sxh bash>
 +xe sr-probe type=lvmoiscsi device-config:​target=192.168.1.31 device-config:​targetIQN=iqn.2012-09.br.com.douglasqsantos.storage:​storage \
 + ​device-config:​SCSIid=14945540000000000d46d72048219398f6b2286c689617578
 +<?xml version="​1.0"​ ?>
 +</​SRlist>​
 +</​sxh>​
 +
 +Como pode ser notado agora já temos todas as informações que precisamos para mandar conectar no storage não temos mais a mensagem de ERRO, agora vamos mandar conectar no storage, vamos definir o nome da identificação do mapeamento com o Storage como Storage Debian e vamos deixar ele compartilhado caso esteja utilizando um pool de servidores este storage vai poder ser utilizado por todos eles
 +<sxh bash>
 +xe sr-create type=lvmoiscsi device-config:​target=192.168.1.31 device-config:​targetIQN=iqn.2012-09.br.com.douglasqsantos.storage:​storage \
 + ​device-config:​SCSIid=14945540000000000d46d72048219398f6b2286c689617578 name-label="​Storage Debian"​ shared=true content-type=user
 +c1dd6dcd-2696-5ff8-5b1e-41acbd9a4945
 +</​sxh>​
 +
 +Como pode ser notado o comando acima não retornou erro somente a identificação do novo sr c1dd6dcd-2696-5ff8-5b1e-41acbd9a4945 vamos mandar listar ele
 +<sxh bash>
 +xe sr-list uuid=c1dd6dcd-2696-5ff8-5b1e-41acbd9a4945 ​
 +uuid ( RO)                : c1dd6dcd-2696-5ff8-5b1e-41acbd9a4945
 +          name-label ( RW): Storage Debian
 +    name-description ( RW): 
 +                host ( RO): <​shared>​
 +                type ( RO): lvmoiscsi
 +        content-type ( RO): user
 +</​sxh>​
 +
 +Agora vamos listar o pbd que foi criado para o nosso storage
 +<sxh bash>
 +xe pbd-list sr-uuid=c1dd6dcd-2696-5ff8-5b1e-41acbd9a4945 ​
 +uuid ( RO)                  : 647a373c-2e2e-4995-67eb-033a9bf8aed5
 +             ​host-uuid ( RO): cd3ec00e-57ff-415a-8391-803291d6e442
 +               ​sr-uuid ( RO): c1dd6dcd-2696-5ff8-5b1e-41acbd9a4945
 +         ​device-config (MRO): target: 192.168.1.31;​ targetIQN: iqn.2012-09.br.com.douglasqsantos.storage:​storage;​ SCSIid: 14945540000000000d46d72048219398f6b2286c689617578
 +    currently-attached ( RO): true
 +</​sxh>​
 +
 +Agora se precisarmos remover o dispositivo precisamos desconectar ele do Xen da seguinte forma
 +<sxh bash>
 +xe pbd-unplug uuid=647a373c-2e2e-4995-67eb-033a9bf8aed5
 +</​sxh>​
 +
 +Agora precisamos mandar destruir o pbd referente ao storage
 +<sxh bash>
 +xe pbd-destroy uuid=647a373c-2e2e-4995-67eb-033a9bf8aed5
 +</​sxh>​
 +
 +Agora por ultimo vamos mandar o Xen esquecer o SR
 +<sxh bash>
 +xe sr-forget uuid=c1dd6dcd-2696-5ff8-5b1e-41acbd9a4945
 +</​sxh>​
 +
 +====== Instalação do Servidor NFS no Debian ====== ​
 +
 +Agora vamos configurar o Servidor NFS no Debian para podermos mapear as isos de instalação
 +
 +<sxh bash>
 +aptitude install nfs-kernel-server nfs-common -y
 +</​sxh>​
 +
 +Agora vamos acertar os arquivos de controle do tcpwrappers
 +<sxh bash>
 +vim /​etc/​hosts.deny
 +portmap: ALL
 +lockd: ALL
 +mountd: ALL
 +rquotad: ALL
 +statd: ALL
 +</​sxh>​
 +
 +Agora vamos acertar quem vai poder acessar o nosso NFS
 +<sxh bash>
 +vim /​etc/​hosts.allow
 +portmap: 192.168.1.0/​24
 +lockd: 192.168.1.0/​24
 +rquotad: 192.168.1.0/​24
 +mountd: 192.168.1.0/​24
 +statd: 192.168.1.0/​24
 +</​sxh>​
 +
 +Agora vamos criar o sistema de arquivos para o nosso volume que criamos para o nfs
 +<sxh bash>
 +mkfs.ext4 /​dev/​xen/​nfs
 +</​sxh>​
 +
 +Agora vamos criar o diretório /srv/Isos
 +<sxh bash>
 +
 +mkdir -p /srv/Isos
 +</​sxh>​
 +
 +Agora vamos montar o volume nfs em /srv/Isos
 +<sxh bash>
 +
 +mount /​dev/​xen/​nfs /srv/Isos
 +</​sxh>​
 +
 +Agora vamos acertar a permissão do diretório Isos
 +<sxh bash>
 +
 +chmod 777 /srv/Isos
 +</​sxh>​
 +
 +Agora vamos adicionar uma linha no final do arquivo /​etc/​exports referente ao nosso ponto de montagem que será exportado via NFS
 +<sxh bash>
 +
 +vim /​etc/​exports
 +[...]
 +/​srv/​Isos ​  ​192.168.1.0/​24(rw,​no_root_squash,​sync,​no_subtree_check)
 +</​sxh>​
 +
 +Agora vamos reiniciar os serviços referentes ao NFS
 +<sxh bash>
 +
 +/​etc/​init.d/​portmap restart
 +/​etc/​init.d/​nfs-kernel-server restart
 +</​sxh>​
 +
 +Agora vamos mandar exportar os mapeamentos NFS
 +<sxh bash>
 +
 +exportfs
 +</​sxh>​
 +
 +Agora no Xen vamos listar o nfs
 +<sxh bash>
 +
 +showmount -e 192.168.1.31
 +Export list for 192.168.1.31:​
 +/srv/Isos 192.168.1.0/​24
 +</​sxh>​
 +
 +Como pode ser notado estamos conseguindo listar o que esta compartilhado via nfs agora vamos mandar conectar no NFS via Xen para que apareça um SR para podemos instalar as VMs
 +
 +====== Criando o SR via NFS ======
 +
 +Aqui vamos informar que o tipo do nosso SR é iso e o seu nome vai ser Isos NFS e também vamos deixar ele compartilhado
 +<sxh bash>
 +
 +xe sr-create host-uuid=cd3ec00e-57ff-415a-8391-803291d6e442 content-type=iso type=iso name-label="​Isos NFS" device-config:​location=192.168.1.31:/​srv/​Isos shared=true
 +8022addd-789f-0e73-bef1-b01320958b23
 +</​sxh>​
 +
 +Conseguimos criar o SR com sucesso vamos listar ele
 +<sxh bash>
 +
 +xe sr-list uuid=8022addd-789f-0e73-bef1-b01320958b23 ​
 +uuid ( RO)                : 8022addd-789f-0e73-bef1-b01320958b23
 +          name-label ( RW): Isos NFS
 +    name-description ( RW): 
 +                host ( RO): <​shared>​
 +                type ( RO): iso
 +        content-type ( RO): iso
 +</​sxh>​
 +
 +Caso não apareça as isos quando inserir no compartilhamento /srv/Isos podemos mandar dar um scan no SR da seguinte forma
 +<sxh bash>
 +
 +xe sr-scan uuid=8022addd-789f-0e73-bef1-b01320958b23
 +</​sxh>​
 +Com isso qualquer iso que seja inserida até o momento do scan vai aparecer para o Xen
 +
 +Agora caso queira utilizar um compartilhamento para NFS para armazenar os discos das VMS podemos criar ele da seguinte forma
 +<sxh bash>
 +xe sr-create host-uuid=cd3ec00e-57ff-415a-8391-803291d6e442 content-type=user name-label="​NFS SR" \
 +shared=true device-config:​server=192.168.1.31 device-config:​serverpath=/​srv/​Isos type=nfs
 +</​sxh>​
 +
 +Quando removemos um disco e esquecemos de deletar alguma coisa referente a ele no Xen, o Xen vai acusar que o dispositivo já existe então podemos fazer da seguinte forma, temos que mandar listar a LUN
 +<sxh bash>
 +xe sr-probe type=lvmoiscsi device-config:​target=192.168.1.31 device-config:​targetIQN=iqn.2012-09.lan.douglas.storage:​storage \
 +device-config:​SCSIid=14945540000000000d46d72048219398f6b2286c689617578
 +<?xml version="​1.0"​ ?>
 +<​SRlist>​
 +  <SR>
 +    <​UUID>​
 +      c1dd6dcd-2696-5ff8-5b1e-41acbd9a4945
 +    </​UUID>​
 +    <​Devlist>​
 +      /​dev/​disk/​by-id/​scsi-14945540000000000d46d72048219398f6b2286c689617578
 +    </​Devlist>​
 +  </SR>
 +</​SRlist>​
 +</​sxh>​
 +
 +Como não houve nenhum erro podemos mandar introduzir ela no Xen utilizando o UUID que o Xen já tem de referência deste SR
 +<sxh bash>
 +
 +xe sr-introduce uuid=c1dd6dcd-2696-5ff8-5b1e-41acbd9a4945 name-label="​SCSI"​ shared=true type=lvmoiscsi content-type=user
 +232571c3-40bd-a404-b035-eb508c4407be
 +</​sxh>​
 +
 +Agora precisamos criar o pbd deste SR que não existe
 +<sxh bash>
 +
 +xe pbd-create type=lvmoiscsi host-uuid=cd3ec00e-57ff-415a-8391-803291d6e442 sr-uuid=232571c3-40bd-a404-b035-eb508c4407be device-config:​target=192.168.1.31 \
 + ​device-config:​targetIQN=iqn.2012-09.br.com.douglasqsantos.storage:​storage device-config:​SCSIid=1494554000000000045773759ad9d8e4e493b01146011d931
 +93c21b2f-81bb-795a-9526-6b7806f63b4e
 +</​sxh>​
 +
 +Agora precisamos mandar plugar o pbd
 +<sxh bash>
 +
 +xe pbd-plug uuid=93c21b2f-81bb-795a-9526-6b7806f63b4e
 +</​sxh>​
 +
 +Agora já podemos listar o pbd
 +<sxh bash>
 +
 +xe pbd-list sr-uuid=232571c3-40bd-a404-b035-eb508c4407be
 +uuid ( RO)                  : 93c21b2f-81bb-795a-9526-6b7806f63b4e
 +             ​host-uuid ( RO): 2ddd30c3-1304-4eac-b3b8-48e392555211
 +               ​sr-uuid ( RO): 232571c3-40bd-a404-b035-eb508c4407be
 +         ​device-config (MRO): target: 192.168.1.31;​ targetIQN: iqn.2012-09.wiki.br.douglas.storage:​storage;​ SCSIid: 1494554000000000045773759ad9d8e4e493b01146011d931
 +    currently-attached ( RO): true
 +</​sxh>​
 +
 +Acima eu mostrei o método mais dificil de fazer isso na minha opinião eu acho melhor listar os pbds que tem alguma referência com o SR que está dando problema caso ele não exista, precisamos listar os SRs la vai estar o SR com problema é só olhar o parametro host ( RO): vai estar como <not in database>​ como o seguinte disco
 +<sxh bash>
 +
 +xe sr-list ​ uuid=c1dd6dcd-2696-5ff8-5b1e-41acbd9a4945
 +uuid ( RO)                : c1dd6dcd-2696-5ff8-5b1e-41acbd9a4945
 +          name-label ( RW): Storage Debian
 +    name-description ( RW): 
 +                host ( RO): <not in database>​
 +                type ( RO): lvmoiscsi
 +        content-type ( RO): user
 +</​sxh>​
 +
 +com isso é so mandar dar um forget nele da seguinte forma
 +<sxh bash>
 +
 +xe sr-forget uuid=c1dd6dcd-2696-5ff8-5b1e-41acbd9a4945
 +</​sxh>​
 +
 +Agora é so mandar criar o dispositivo novamente da seguinte forma
 +<sxh bash>
 +
 +xe sr-create type=lvmoiscsi device-config:​target=192.168.1.31 device-config:​targetIQN=iqn.2012-09.br.com.douglasqsantos.storage:​storage \
 + ​device-config:​SCSIid=14945540000000000d46d72048219398f6b2286c689617578 name-label="​Storage Debian"​ shared=true content-type=user
 +2f5ac16e-c4a9-7942-c387-f634d11b4c10
 +</​sxh>​
 +
 +Agora vamos listar o pbd do novo SR
 +<sxh bash>
 +
 +xe pbd-list sr-uuid=2f5ac16e-c4a9-7942-c387-f634d11b4c10 ​
 +uuid ( RO)                  : 3b2e86a4-9a57-92d8-0f8d-5859471fa786
 +             ​host-uuid ( RO): f0a5d4d4-2767-49ff-8da4-4eeccbe6cfef
 +               ​sr-uuid ( RO): 2f5ac16e-c4a9-7942-c387-f634d11b4c10
 +         ​device-config (MRO): target: 192.168.1.31;​ targetIQN: iqn.2012-09.br.com.douglasqsantos.storage:​storage;​ SCSIid: 14945540000000000d46d72048219398f6b2286c689617578
 +    currently-attached ( RO): true
 +</​sxh>​
 +
 +Agora vamos listar o SR
 +<sxh bash>
 +
 +xe sr-list uuid=2f5ac16e-c4a9-7942-c387-f634d11b4c10 ​
 +uuid ( RO)                : 2f5ac16e-c4a9-7942-c387-f634d11b4c10
 +          name-label ( RW): Storage Debian
 +    name-description ( RW): 
 +                host ( RO): <​shared>​
 +                type ( RO): lvmoiscsi
 +        content-type ( RO): user
 +</​sxh>​
 +
 +Para habilitar o multipath no Xen podemos fazer da seguinte forma
 +<sxh bash>
 +
 +xe host-param-set other-config:​multipathing=true uuid=cd3ec00e-57ff-415a-8391-803291d6e442
 +</​sxh>​
 +
 +Agora para listar os parâmetros do host podemos fazer da seguinte forma
 +<sxh bash>
 +
 +xe host-param-list uuid=cd3ec00e-57ff-415a-8391-803291d6e442
 +</​sxh>​
 +
 +====== Referências ======
 +  - http://​wiki.xen-br.org/​Xen-infra
 +  - http://​docs.vmd.citrix.com/​XenServer/​6.0.0/​1.0/​en_gb/​reference.html#​storage_chap
 +  - http://​iscsitarget.sourceforge.net/​