Sådan opsættes iSCSI Server (Target) og Client (Initiator) på Debian 9


I datacenterverdenen er Storage Area Networks (SAN) med stor kapacitet blevet minimumstandarden. Da cloud-udbydere og virtualisering også fortsat har en enorm indvirkning på teknologiverden, er behovet for endnu mere SAN-lagerplads blevet tydeligt.

De fleste SAN-hardware består af en minimalistisk controller (eller et sæt controllere) og en stor samling af drev med høj kapacitet, der alle er konfigureret til at understøtte store mængder datatilgængelighed og integritet.

Mange af disse specialiserede produkter er fremstillet af store navneudbydere som Netapp, Dell Equalogic, HP Storageworks eller EMC og har tilknyttet prislapper, som kun de største virksomheder har råd til.

Realistisk set er disse enheder intet andet end store harddiskarrays med en controller, der giver plads på disse harddiske til netværksklienter. Der har eksisteret mange teknologier gennem årene, der leverer denne funktionalitet eller lignende funktionalitet til et betydeligt billigere prispunkt.

Debian GNU/Linux-distributionen leverer pakker, der gør det muligt for et Debian-system at tjene formålet med et SAN-lagerenhed på virksomhedsniveau til en brøkdel af prisen! Dette giver alle fra basale hjemmebrugere eller store datacentre mulighed for at opnå fordelene ved SAN-lagring uden at skulle bruge en formue på en leverandørs egen løsning.

Denne artikel vil se på, hvordan et Debian 9-system (Stretch) kan indstilles til at tjene diskplads ved hjælp af et system kendt som Internet Small Computer Systems Interface eller iSCSI for kort. iSCSI er en IP-baseret (Internet Protocol) standard til levering af blok (harddisk) til andre systemer. iSCSI fungerer i en klientservermodel, men bruger forskellige navne til at skelne klienten fra serveren.

I iSCSI-terminologi er den server, der serverer 'diskplads', kendt som et iSCSI 'Target', og systemet, der anmoder om/bruger diskplads, er kendt som iSCSI 'Initiator'. Så med andre ord anmoder en 'Initiator' om bloklagring fra et 'Target'.

Denne vejledning gennemgår en grundlæggende opsætning, der involverer en simpel iSCSI-server (mål) og klient (initiator), der begge kører Debian 9 (Stretch).

Debian iSCSI Target: 192.168.56.101/24
Storage: Contains two extra hard drives to be used as the storage in the iSCSI setup
Debian iSCSI Initiator: 192.168.56.102/24

Netværket kan ses som nedenfor:

Debian iSCSI-målkonfiguration

I iSCSI-verdenen betragtes målet som værten, der indeholder de lagerenheder, der skal bruges af initiatoren.

I denne artikel bruges serveren med IP på 192.168.56.101 som målet. Alle konfigurationer udføres på den vært for dette afsnit.

Det første trin er installationen af de nødvendige pakker, der gør det muligt for Debian-systemet at tjene iSCSI-mål. Denne softwarepakke er kendt som Target Framework (TGT).

Det andet element, der bruges til denne vejledning, er værktøjerne til logisk volumenadministration (LVM), da logiske volumener (LV'er) vil blive brugt som lagringsbaggrund for iSCSI-målet.

Begge pakker kan installeres med følgende kommandoer.

# apt-get update
# apt-get install tgt lvm2

Når pakkerne er installeret, bruges LVM til at forberede harddiskene på målet til brug som en iSCSI LUN. Den første kommando bruges til at forberede diskene til inkludering i en LVM-opsætning. Sørg for at ændre kommandoen efter behov til forskellige scenarier!

# lsblk (Only used to confirm disks to be used in the LVM setup)
# pvcreate /dev/sd{b,c}

Når diskene er forberedt med ovenstående kommando 'pvcreate', er det tid til at oprette en volumengruppe ud af disse bestemte diske. Volumengruppen er påkrævet for at oprette de logiske volumener, der fungerer som iSCSI-lager senere.

For at oprette en volumengruppe er kommandoen ‘vgcreate’ nødvendig.

# vgcreate tecmint_iscsi /dev/sd{b,c}
# vgs  (Only needed to confirm the creation of the volume group)

Bemærk i output ovenfor, at systemet reagerer på, at Volume Group blev oprettet, men det er altid en god ide at dobbelttjekke som set ovenfor med kommandoen ‘vgs’. Kapaciteten for denne volumengruppe er kun 9,99 GB. Selv om dette er en særlig lille volumengruppe, ville processen være den samme for diske med større kapacitet!

Det næste trin er oprettelsen af den logiske lydstyrke, der fungerer som disken til iSCSI-klienten (initiator). I dette eksempel vil hele volumengruppen blive brugt, men det er ikke nødvendigt.

Den logiske lydstyrke oprettes ved hjælp af kommandoen 'lvcreate'.

# lvcreate -l 100%FREE tecmint_lun1 tecmint_iscsi
# lvs  (Simply used to confirm the creation of the logical volume)

Ovennævnte 'lvcreate' kommando kan være lidt forvirrende ved første øjekast, men nedbrydningen er som sådan:

  • lvcreate - Kommando, der bruges til at oprette den logiske lydstyrke.
  • -l 100% GRATIS - Opret den logiske lydstyrke ved hjælp af hele volumengruppens ledige plads.
  • -n tecmint_lun1 - Navnet på den logiske volumen, der skal oprettes.
  • tecmint_iscsi - Navnet på volumengruppen, der skal oprettes den logiske lydstyrke inden for.

Når den logiske lydstyrke er oprettet, er det tid til at oprette det aktuelle LUN (logisk enhedsnummer). LUN vil være den lagerenhed, som initiativtager vil oprette forbindelse til og bruge senere.

Oprettelse af en LUN er meget enkel og kræver kun få trin. Det første trin er oprettelsen af konfigurationsfilen. Denne fil vil være i mappen '/etc/tgt/conf.d', og til denne artikel vil den blive kaldt 'TecMint_iscsi.conf'.

Brug en teksteditor til at oprette denne fil.

# nano /etc/tgt/conf.d/TecMint_iscsi.conf

Inden for denne fil vil alle nødvendige konfigurationsoplysninger til denne LUN blive konfigureret. Der er mange muligheder, der kan placeres i denne fil, men indtil videre konfigureres en grundlæggende LUN med gensidig Challenge Handshake Authentication Protocol (CHAP).

LUN's definition vil eksistere mellem to 'mål' udsagn. For flere parametre, der kan findes i målsætningen, skal du gennemse den manuelle side for filen 'target.conf' ved at udstede 'man 5 targets.conf'.

<target iqn.2018-02.linux-console.net:lun1>
     # Provided device as an iSCSI target
     backing-store /dev/mapper/tecmint_iscsi-tecmint_lun1
     initiator-address 192.168.56.102
    incominguser tecmint-iscsi-user password
     outgoinguser debian-iscsi-target secretpass
</target>

Der foregår meget ovenfor. En hurtig forklaring kan være nyttigt for de fleste.

  • Den første linje begynder den bestemte iSCSI LUN-konfiguration. I dette tilfælde mærkes LUN 'iqn.2018-02.linux-console.net:lun1'. “Iqn” -delen angiver, at dette vil være et iSCSI-kvalificeret navn. '2018-02' er en vilkårligt valgt datokombination. ‘linux-console.net’ er det domæne, som denne særlige LUN hører til. Endelig bruges 'lun1' som navnet på dette specifikke mål.
  • Den anden linje ovenfor illustrerer en kommentar. Kommentarer kan findes i målkonfigurationsfilerne og skal forud for et '#' symbol.
  • Den tredje linje er, hvor den faktiske lagerplads, der vil blive brugt af initiativtager, findes. I dette tilfælde vil opbevaringsbagsiden være den logiske lydstyrke, der blev oprettet tidligere i vejledningen.
  • Den fjerde linje er den IP-adresse, der forventes af initiativtager. Selvom dette ikke er et påkrævet konfigurationselement, kan det hjælpe med at øge sikkerheden.
  • Den femte linje er det indgående brugernavn/adgangskode. Ligesom initiatoradressen ovenfor er denne parameter heller ikke påkrævet, men kan hjælpe med at sikre LUN. Da denne vejledning også dækker iSCSI-gensidig CHAP, er denne parameter påkrævet. Denne linje angiver det brugernavn og den adgangskode, som målet forventer af initiativtageren for at oprette forbindelse til denne LUN.
  • Den sjette linje er det brugernavn/adgangskode, som målet vil give initiativtageren for at muliggøre gensidig CHAP-godkendelse. Normalt er denne parameter ikke påkrævet, men denne artikel dækker gensidig CHAP-godkendelse, så denne parameter er påkrævet.
  • Den sidste linje er den afsluttende erklæring for måldefinitionen. Vær opmærksom på den afsluttende skråstreg foran søgeordsmålet!

Når de relevante konfigurationer til LUN er blevet skrevet ud, skal du gemme ændringerne og afslutte teksteditoren. Hvis du bruger nano, skal du trykke på ctrl+o for at gemme og derefter trykke på ctrl+x for at afslutte nano.

Når konfigurationsfilen er oprettet, skal tgt-tjenesten genstartes, så tgt er opmærksom på de nye mål og den tilknyttede konfiguration.

Dette kan gøres med en af følgende kommandoer og er afhængig af det init-system, der er i brug.

# service tgt restart  (For sysv init systems)
# systemctl restart tgt  (For systemd init systems)

Når tgt er genstartet, er det vigtigt at kontrollere, at iSCSI-målet gøres tilgængeligt i henhold til den oprettede konfigurationsfil.

Dette kan opnås med kommandoen 'tgtadm'.

# tgtadm --mode target --op show   (This will show all targets)

Dette afslutter konfigurationen af målet. Det næste afsnit fungerer gennem konfiguratoren af initiatoren.

Debian iSCSI Initiator-konfiguration

Det næste trin i brugen af det tidligere konfigurerede iSCSI-mål er konfigurationen af iSCSI-initiatoren.

En anden XenServer/ESXi eller andre distributioner som Red Hat, Debian eller Ubuntu.

Det første trin i denne proces for denne Debian-initiativtager er installationen af de korrekte pakker til iSCSI.

# apt-get update
# apt-get install open-iscsi

Når apt er færdig med konfigurationen af open-iscsi-pakkerne, kan iSCSI-initiatorkonfigurationen begynde. Det første trin vil være at kommunikere med målet for at få den indledende konfigurationsinformation til målet forberedt.

# iscsiadm -m discovery -t st -p 192.168.56.101

Når denne kommando kører, svarer den tilbage med navnet på den lun, der er konfigureret tidligere for denne særlige vært. Ovenstående kommando genererer også to filer til de nyligt opdagede LUN-oplysninger.

Nu skal filen oprettet til denne node have CHAP-oplysningerne konfigureret for at dette iSCSI-mål faktisk skal være tilgængeligt af initiativtager.

Teknisk set kan denne information konfigureres for hele systemet som helhed, men i tilfælde af at en vært opretter forbindelse til forskellige LUN'er med forskellige legitimationsoplysninger, kan placering af disse legitimationsoplysninger i den specifikke node-konfigurationsfil afhjælpe eventuelle problemer.

Knudekonfigurationsfilen findes i kataloget ‘/ etc/iscsi/nodes /’ og vil have en mappe pr. LUN tilgængelig. I tilfælde af denne artikel (bemærk, at stier vil ændre sig, hvis navne/IP-adresser ændres).

# /etc/iscsi/nodes/iqn.2018-02.linux-console.net\:lun1/192.168.56.101\,3260\,1/default

For at arbejde med denne fil kan enhver teksteditor bruges.

# nano /etc/iscsi/nodes/iqn.2018-02.linux-console.net\:lun1/192.168.56.101\,3260\,1/default

Inden for denne fil vil der være flere allerede konfigurerede indstillinger for det respektive mål, der blev bestemt under kommandoen 'iscsiadm', der blev kørt tidligere.

Da dette specifikke Debian-mål/initiatoropsætning bruger gensidig CHAP, skal der ændres nogle flere muligheder og føjes til denne fil og derefter et login til det udførte iSCSI-mål.

Ændringerne i denne fil er:

node.session.auth.authmethod = CHAP                    #Enable CHAP Authentication
node.session.auth.username = tecmint-iscsi-user        #Target to Initiator authentication
node.session.auth.password = password                  #Target to Initiator authentication
node.session.auth.username_in = debian-iscsi-target    #Initiator to Target authentication
node.session.auth.password_in = secretpass             #Initiator to Target authentication

Ovenstående muligheder giver dette mål mulighed for at autentificere sig til initiatoren såvel som tillade initiativtager at autentificere sig til målet.

Der er en anden mulighed i denne fil, der muligvis skal ændres afhængigt af administratorens præferencer, og det er parameteren 'node.startup'.

Hvis du følger denne vejledning, vil indstillingen 'node.startup' blive indstillet til 'manuel' på dette tidspunkt. Dette er muligvis ikke ønsket. Hvis administratoren ønsker at have tilsluttet iSCSI-målet, når systemet starter, skal du ændre 'manuel' til 'automatisk' som sådan:

node.startup = automatic

Når ovenstående ændringer er foretaget, skal du gemme filen og afslutte. På dette tidspunkt skal open-iscsi-initiatortjenesten genstartes for at kunne læse disse nye ændringer og oprette forbindelse til iSCSI-målet.

Dette kan opnås med en af følgende kommandoer afhængigt af det init-system, der er i brug.

# service open-iscsi restart   (For sysv init systems)
# systemctl restart open-iscsi (For systemd init systems)

Bemærk i det grønne felt ovenfor, at iSCSI-initiativtageren var i stand til at logge ind på målet. For yderligere at bekræfte, at iSCSI-målet faktisk er tilgængeligt for initiativtageren, kan vi kontrollere systemet for ekstra diskdrev, der er tilgængelige ved hjælp af kommandoen ‘lsblk’ og kontrollere output for ekstra drev.

# lsblk

Den anden kommando, der kan bruges på initiativtageren til at bekræfte en forbindelse til målet, er 'iscsiadm' som sådan:

# iscsiadm -m session

Det sidste sted at bekræfte en forbindelse ville være på selve målet ved hjælp af kommandoen ‘tgtadm’ til at liste alle iSCSI-forbindelser.

# tgtadm --mode conn --op show --tid 1

Fra dette punkt kan den nytilsluttede iSCSI-enhed bruges svarende til enhver normalt tilsluttet disk! Partitionering, oprettelse af filsystem, montering og/eller vedvarende montering kan alle håndteres normalt.

En stor forsigtighed at være opmærksom på med iSCSI-enheder er, hvis iSCSI-målet indeholder vigtige filsystemer, der er nødvendige, når initiatoren starter, skal du sørge for at bruge '_netdev' -posten i '/ etc/fstab' -filen for at sikre, at iSCSI enhed tilsluttes, før systemet fortsætter med at starte!