XenServer ja storage repository

Storage Repository on XenServerin varanto virtuaalikoneiden VDI (Virtual Disk Image) -levyille. Virtuaalikoneet (VM) tunnistavat VDI:t fyysisinä levyinä. SR voidaan toteuttaa millä tahansa monista tallennustekniikoista. Esimerkiksi XenServerin paikallinen levy, iSCSI tai FC LUN, NFS, NetApp. SR:t voivat olla jaettuja tai dedikoituja. Tämä dokumentti keskittyy iSCSI LUN-tekniikkaan. Levyjärjestelmän blokki-tallennuslaitteet esitetään XenServer-palvelimelle iSCSI LUN-tyyppisenä, ja näistä luodaan Storage Repository XenServer voi luoda useita virtuaalikoneita yhdelle SR:lle. Virtuaalikoneiden määrä riippuu IOPS (Input Output Per Second) tarpeesta ja työkuormasta. Kun useampi virtuaalikone jakaa saman SR:n, ne jakavat myös SR:n I/O-jonon. Tämä tulee ottaa huomioon ympäristöä rakentaessa.

Xen Multipath

Oletuksena Xen DM-Multipathing käyttää Round-robin algoritmia. Tässä käytetään FreeNASin asetuksia. Koska käytämme bogus FQDN:a, lisätään jokaiselle xenserverille /etc/hosts -tiedostoon tiedot palvelimista. Jokaisella palvelimella on neljä verkkoliitäntää, joista kaksi on dedikoitu SAN-verkolle, yksi verkkoliikenteelle ja yksi hallintaverkolle. SAN-verkot ovat 172.29.2.0 ja 172.29.3.0. Hallintaverkko on 172.29.159.0 ja virtuaalikoneiden verkkoliikenteelle on asetettu 172.29.160.0-verkko.

# vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.29.159.131   xenserver1 xenserver1.foo.bar
172.29.159.132   xenserver2 xenserver2.foo.bar
172.29.159.133   xenserver3 xenserver3.foo.bar


XenServerin iSCSI Storage repositories käyttää Open-iSCSI initiator –ohjelmistoa kommunikointiin levyjärjestelmän kanssa. iSCSI repositoryt käyttävät luontivaiheessa kaiken LUNin tilan, eikä tätä voida kasvattaa jälkikäteen. Jotta XenServer pääsee käsiksi iSCSI target/LUNeihin, XenServer tarvitsee iSCSI initiator IQN-tunnuksen. Tämä satunnainen iSCSI IQN-tunnus luodaan XenServerin asennusvaiheessa ja tämän vaihtaminen vastaamaan ympäristön nimeämiskäytäntöä on suositeltavaa. Muutetaan xenserver1-3 palvelimien iqn-osoitteet.

# xe host-list
uuid ( RO)                : 42ccc4d8-633b-48fe-b379-f833335b70ec
          name-label ( RW): xenserver1
    name-description ( RW): Default install

# xe host-param-set uuid=42ccc4d8-633b-48fe-b379-f833335b70ec other-config:iscsi_iqn=iqn.2017-07.bar.foo:xenserver1


Multipath voidaan toteuttaa kahdella eri tavalla. Multipath kahdella aliverkolla tai multipath yhdellä aliverkolla. Kahden aliverkon toteutuksessa iSCSI targetit (Levyjärjestelmässä Control Portit) ovat erillisissä aliverkoissa. Kun halutaan HA (High Availability) -ratkaisu, tämä tapa on suositus. Yhden aliverkon toteutuksessa Control Portit ovat samassa aliverkossa ja polkujen varmistamiseen käytetään NIC bondingia.

1. Listataan verkkoliitännät. Palvelin verkkoliitännät eth2 ja eth4 ovat liitetty SAN-kytkimeen, joten haetaan näiden uuid:t.

# xe host-list
uuid ( RO)                : d0c69d5a-27cd-48fb-ba35-574416b9b0a7
          name-label ( RW): xenserver1
    name-description ( RW): Default install


# xe pif-list host-uuid=d0c69d5a-27cd-48fb-ba35-574416b9b0a7 |egrep -B 1 '(eth2|eth4)'
uuid ( RO)                  : 48683c8f-f150-2147-2658-49c1c3dab013
                device ( RO): eth4
 --
uuid ( RO)                  : 43469469-f621-48ad-d48f-e0264a4a2278
                device ( RO): eth2

2. Asetetaan verkkokorteille IP-osoiteet, estetään tahallinen tiputus ja nimetään ne.

# xe pif-reconfigure-ip mode=static ip=172.29.2.131 netmask=255.255.255.0 \
gateway= uuid=43469469-f621-48ad-d48f-e0264a4a2278

# xe pif-param-set disallow-unplug=true uuid=43469469-f621-48ad-d48f-e0264a4a2278

# xe pif-param-set other-config:management_purpose=storage-1 uuid=43469469-f621-48ad-d48f-e0264a4a2278


# xe pif-reconfigure-ip mode=static ip=172.29.3.131 netmask=255.255.255.0 \
gateway= uuid=48683c8f-f150-2147-2658-49c1c3dab013

# xe pif-param-set disallow-unplug=true uuid=48683c8f-f150-2147-2658-49c1c3dab013

# xe pif-param-set other-config:management_purpose=storage-2 uuid=48683c8f-f150-2147-2658-49c1c3dab013


3. Estetään verkon automaattinen määritys uusille virtuaalikoneille.

# xe network-list |egrep -B 1 '(eth2|eth4)'
uuid ( RO)                  : 300f555e-332a-49d8-c9d8-7317730e2a16
			name-label ( RW): Pool-wide network associated with eth4
 --
uuid ( RO)                  : cbfd110a-ba0a-0865-c225-f27f1383d6f3
			name-label ( RW): Pool-wide network associated with eth2

# xe network-param-set other-config:automatic=false uuid=300f555e-332a-49d8-c9d8-7317730e2a16
# xe network-param-set other-config:automatic=false uuid=cbfd110a-ba0a-0865-c225-f27f1383d6f3

4. Otetaan multipath käyttöön ja suoritetaan samat toimenpiteet (Vaiheet 1-4) myös xenserver2- ja xenserver3 -palvelimille. uuid=host-uuid.

# xe host-param-set other-config:multipathing=true uuid=d0c69d5a-27cd-48fb-ba35-574416b9b0a7
# xe host-param-set other-config:multipathhandle=dmp uuid=d0c69d5a-27cd-48fb-ba35-574416b9b0a7


5. Xenserver1-palvelimalla storage repositoryn liittämistä varten tarvitaan SCSIid, joka saadaan sr-probe -komennon avulla.

xenserver1# xe sr-probe type=lvmoiscsi \
device-config:target=172.29.2.10 device-config:targetIQN=iqn.2017-07.bar.foo:xen
Error code: SR_BACKEND_FAILURE_107
Error parameters: , The SCSIid parameter is missing or incorrect,  <?xml version="1.0" ?>

<iscsi-target>
        <LUN>
                <vendor>FreeNAS</vendor>
                <LUNid>0</LUNid>
                <size>858993459200</size>
                <SCSIid>36589cfc0000007151aa56d2a04af84db</SCSIid>
        </LUN>
</iscsi-target>


6. Storage repositoryn luomiseen tarvitaan hostin uuid, levypalvelimen IP-osoite, target IQN ja SCSIid joka saatii aiemmin sr-probe -kommenolla. Tämä komento suoritetaan vain xenserver1-palvelimella.

xenserver1# xe sr-create host-uuid=d0c69d5a-27cd-48fb-ba35-574416b9b0a7 content-type=user \
name-label=iSCSI_SR shared=true \
device-config:target=172.29.2.10 device-config:targetIQN=iqn.2017-07.bar.foo:xen \
device-config:SCSIid=36589cfc0000007151aa56d2a04af84db \
type=lvmoiscsi


7. Skannataan toinen polku esiin kaikilla palvelimilla ja kirjaudutaan.

# iscsiadm -m discovery --type sendtargets --portal 172.29.2.10
172.29.2.10:3260,1 iqn.2017-07.bar.foo:xen
172.29.3.10:3260,2 iqn.2017-07.bar.foo:xen
# iscsiadm -m node -T iqn.2017-07.bar.foo:xen --login


Multipath -ll -komennolla näemme, että kumpikin polku on käytössä.

# multipath -ll
36589cfc0000007151aa56d2a04af84db dm-1 FreeNAS ,iSCSI Disk
size=900G features='0' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=1 status=active
| `- 11:0:0:1 sdb 8:16 active ready running
`-+- policy='service-time 0' prio=1 status=enabled
  `- 12:0:0:1 sdc 8:32 active ready running