Heidi Savolainen
Ceph-klusteri
Tradenomi Tietojenkäsittely Syksy 2021
Tiivistelmä
Tekijä(t): Savolainen Heidi Työn nimi: Ceph-klusteri
Tutkintonimike: Tradenomi (AMK), tietojenkäsittely
Asiasanat: Open source, tiedostojärjestelmä, tietokoneklusteri, taustaprosessit, Object Storage
Opinnäytyö on tehty toimeksiantona KAMKin Datacenter-laboratorioon. DC-laboratorio tarvitsi uuden levyjärjestelmän, jonka pohjana käytetään Cephiä. Ceph on open source -vaihtoehto Object Storage- tyyliselle tallennustilalle. Object Storage on hajautettu tietokanta, missä tiedon osaset on jaettu ympäri levyjärjestelmää vikasietoisuuden varmistamiseksi.
Työssä käydään läpi Cephin teoriapohjaa sekä asennetaan fyysinen Ceph-levyjärjestelmä. Teoriaosuudessa kerrotaan yleisesti eri tiedostojärjestelmistä ja tiedostojärjestelmien historiasta sekä kerrotaan hieman tietokoneklustereista. Tiedostojärjestelmiä verrataan Cephiin ja Cephin käyttämään Object Storage tiedostojärjestelmätyyppiin. Teoriaosuudessa käydään myös läpi Cephin toimintaan liittyvät taustaprosessit ja niiden kartoitus Ceph-ympäristöön CRUSH-algoritmillä.
Käytännönosuudessa asennettiin Ceph-levyjärjestelmä DC-laboratorion konesaliin. Levyjärjestelmässä käytettiin neljää noodia, josta joikaisella on 7 teratavua tallennustilaa. Käyttöjärjestelmänä noodeissa on käytetty Linuxin Ubuntu-distribuutiota. Ceph on asennettu Ubuntuun Dockerin konttien avulla.
Levyjärjestelmään konfiguroitiin NFS sekä iSCSI portit lähiverkkokäyttöä varten. Asennuksen aikana Ceph päivitettiin kerran.
Käytännönosuus saatiin valmiiksi aikataulussa muutaman kuukauden sisällä. Ceph-levyjärjestelmä on DC- laboratorion oppilaiden kurssikäytössä. Ympäristön hallinta tehdään lähiverkosta löytyvällä graafisella dashboardilla. Ympäristön päivityksen tarpeessa joko laboratorion henkilökunta tai oppilaat päivittävät sen uudempaan versioon.
Abstract
Author(s): Savolainen Heidi
Title of the Publication: Ceph Cluster
Degree Title: Bachelor of Business Administration
Keywords: Open source, filesystem, computer cluster, daemon, Object Storage
This thesis was made as an assignment for the Datacenter laboratory in Kajaani University of Applied Sci- ences. The DC Laboratory needed a new disk system that used Ceph. Ceph is an open source option for Object Storage styled storage space. Object Storage is a distributed database where the system saves data throughout the infrastructure for fault tolerance.
This thesis explains the theory behind Ceph and the installation process of a Ceph system. The theoretical part describes some history and evolution of different filesystems and explains what a computer cluster is.
Filesystems are then compared to Ceph and the Object Storage filesystem. This part also explains the dif- ferent daemons Ceph uses to function and how they are mapped in the environment with the CRUSH algo- rithm.
In the practical part of this thesis Ceph cluster is installed in the DC-laboratory’s datacenter. The cluster uses four nodes with each of them having 7 terabytes of storage space. The operating system used is the Ubuntu distribution of Linux. Ceph is installed on Ubuntu with the help of Docker containers. NFS and iSCSI- ports are configured into the disk system to access the data through a local network. During the installation Ceph was updated once.
The practical part was finished within the given schedule of a few months. The Ceph cluster is used in coursework by the students of the DC laboratory. The management of the environment is done through a graphical dashboard in the local network. If the environment needs updating the DC-laboratory staff or students will upgrade it to a newer version in the future.
Sisällys
1 Johdanto ... 1
2 Yleistä tietojärjestelmistä ... 2
2.1 Journaloivat tiedostojärjestelmät ... 3
2.2 Linuxin eri tiedostojärjestelmät ... 3
2.3 Ceph vs muut tiedostojärjestelmät ... 4
3 Mikä on Ceph ... 5
3.1 Tietokoneklusterit ... 5
3.2 Ceph daemonit eli taustaprosessit... 6
3.3 Ceph-infrastruktuurin kartoitus ... 7
4 Tietokoneklusterin asentaminen ... 8
4.1 Asennuksen suunnittelu ... 8
4.2 Cephin asentaminen ... 9
4.3 Verkkolevyjärjestelmä ... 9
4.4 iSCSI-porttien configurointi ... 11
4.5 Ympäristön hallinta ... 11
4.6 Ceph-ympäristön resetointi ... 13
5 Pohdinta ja johtopäätökset ... 14
Lähteet ... 15 Liitteet
Symboliluettelo
Object Storage koostuu OSD:ista, eli Object Storage Deviceista ja on tiedon tallennustapa, joka hallitsee tietoa objekteina. Objekti sisältää tiedon, metadataa ja globaalin tunnisteen. Object Storagen avulla voi tallentaa suuren määrän jäsentämätöntä tietoa.
NFS eli Network File System on verkkolevyjärjestelmä, jonka avulla käyttäjät voivat käyttää tiedostoja verkon kautta.
RADOS eli Reliable Autonomic Distributed Object Storage on avoimen lähdekoodin Object Stor- age palvelu, joka on osana Cephiä.
CRUSH eli Controller Replication Under Scalable Hashing on hash-pohjainen algoritmi datan tallennus- ja hakemispaikan laskemiseen, joka tallentaa tiedon tasaisesti Object Storagessa.
Pakettivarasto eli repository on ohjelmistopakettien tallennusvarasto. Linuxin ohjelmistopäivitykset haetaan pakettivarastoista.
1 Johdanto
Tiedonmäärän ja tiedostokokojen kasvaessa laitteiston on pysyttävä vaatimusten perässä.
Normaalikäyttäjän tietokoneella käytettävät tiedostojärjestelmät eivät ole optimisoituja isomman skaalan tiedontallennukseen. Suuren datamäärän tallennukseen halutaan vikasietoinen isompi tallennustila, esimerkiksi tietokanta tai Object Storage. Opinnäytetyössä tutustutaan Cephiin, joka on open source Object Storage -vaihtoehto. Cephiä verrataan myös jokapäiväisessä käytössä olevien pöytäkoneiden käyttöjärjestelmiin.
Opinnäytetyö on tehty toimeksiantona KAMKin datacenter-laboratorioon. DC-laboratorio tarvitsi uuden levyjärjestelmän opiskolijoiden käyttöön NFS:ksi tietylle kurssille. Olin valmis lähtemään mukaan asennusprojektiin ja päädyinkin tekemään asennuksesta opinnäytetyön. Tiesin Cephistä ennen opinnäytteen aloittamista, sillä olen ollut ennenkin tekemisissä Cephin kanssa Openstack- ympäristössä, jolloin en saanut levyjärjestelmää toimivaksi. Levyjärjestelmän haluttiin toimivan Ceph-nimisellä open source Object Storage -vaihtoehdolla. Työ on tehty yhteistyössä laboratorion työntekijöiden kanssa. Aikatauluna oli saada projekti valmiiksi parin kuukauden sisällä ennen opiskelijoiden kurssin alkamista keväällä 2021.
Opinnäytetyössä on teoria- ja käytännönosuus. Teoriaosuudessa kerrotaan tiedostojärjestelmien kehittymisestä ja verrataan niitä Cephiin. Teoriaosuudessa kerrotaan myös Cephin arkkitehtuurista sekä sen taustaprosesseista ja niiden toiminnasta. Käytännönosuudessa asennetaan ja otetaan käyttöön Ceph-levyjärjestelmä KAMKin DC-laboratorion konesaliin.
Ceph-levyjärjestelmä on osana DC-laboratorion konesalia ja lähiverkkoympäristöä. Ympäristöön tarvittiin vikasietoinen tallennustila, joka on tehtävissä levyjärjestelmällä. Object Storage on levyjärjestelmä tallentaa tiedon ympäristöön sattumanvaraisesti pienempinä paloina, jolloin saadaan turvallisempi ja vikasietoisempi tapa tallennukseen.
2 2 Yleistä tietojärjestelmistä
Tiedon tallennukseen käytetään nykyään kahdenlaista karkeasti määriteltyä tallennustyyppiä, joko tietokantoja tai tiedostojärjestelmiä. Tietokannat ovat kaiken tietäviä: datan tyyppi ja suhteet ovat tarkasti tiedossa. Tietokannat eivät kuitenkaan käy kaikenlaiseen käyttöön, sillä ne ovat hankalia hallittavia ja asennettavia peruskäyttäjille. Tietokantojen sijaan voidaan käyttää tiedostojärjestelmiä, jolloin on parempi kontrolli itse dataan eikä vain sen tallennukseen.
Tiedostojärjestelmät ovat tietokantojen ja raa’an muistin välinen kevyt ratkaisu.
Tiedostojärjestelmiin kehitetty muutamia tietokantatyyppisiä piirteitä, kuten tiedostonhaku ja journalointi. Hierarkinen hakemistorakenne on ollut tiedostojärjestelmien keskipisteisenä ominaisuuksena pitkään.
Tyypillinen massamustion koko vuonna 1992 oli 300 megatavuun ja vuonna 2009 koko kasvoi 300 gigatavuun. Tiedostojen koko on myös kasvanut, muttei samassa mittakaavassa, kuin tiedostojen määrä massamuisteissa. Tiedostojen määrän kasvaessa, myös paremman hallinnan tarve kasvaa.
[1.]
Vanhemmissa tiedostojärjestelmissä pahin ongelma on tiedostojen korruptoituminen.
Käyttöjärjestelmät olivat myös sidoksissa tallennusmediaan, kun nykyiset tietojärjestelmät eivät enää kommunikoi suoraan laitteiston kanssa, vaan välissä on laiteajuri ja massamuistin laiteohjain.
Uusimmissa tietojärjestelmiin on tehty ominaisuus nimeltä journalointi. Journalointi tallentaa levylle tehtävät muutokset ennen niiden suorittamista eli vikatilanteen tapahtuessa tiedostojärjestelmä ei ota muutoksia huomioon, ennen niiden tapahtumista kokonaisuudessaan.
Jäjrestelmä suorittaa kokonaiset muutokset levylle, jolloin levy säilyy ehjänä myös vikatilanteessa, jonka vuoksi pahin tapaus vikatilanteen aikana on muutosten menetys. Kaikista vikasietoisin datantallennustapa on fyysinen journalointi, jolloin sekä metatieto että datan kirjoitus tapahtuu ensin journaliin, minkä jälkeen se tallennetaan levylle. [2.]
2.1 Journaloivat tiedostojärjestelmät
Journaloivia tiedostojärjestelmiä ovat muun muassa NTFS, HFS+, APFS, ext3, ext4. Kappaleessa hieman historiaa journaloivista tiedostojärjestelmistä. FAT (File allocation table) on vuonna 1977 Microsoftin kehittämä tiedostojärjestelmä, joka ei aluksi tukenut hakemistoja. Hakemistojen tuen puuttumisen vuoksi tiedostojen nimille on varattu kahdeksan merkkiä varsinaiselle nimelle ja kolme päätteelle, jotka ovat pisteellä erotettu. Data ja kirjanpito tallennettiin reaaliajassa, joten vikatilanteessa tapahtui tiedostojen korruptoituminen.
Vuonna 1981 käytetyillä MS_DOS- ja PC-DOS-järjestelmillä käytettiin kehittyneenpää FAT12- tiedostojärjestelmää ja vuonna 1988 siirryttiin fat16b:een. Vuonna 1996 Windows 95:lle tuli käyttöön FAT32. Modernit käyttöjärjestelmät osaavat vieläkin lukea FAT32:a, joten se on yhteensopivuudeltaan toimintavarmin. FAT32 maksimikoko on kuitenkin vain neljän gigatavun tiedostoille. FAT32:a käytetään mm. kameroissa ja älytelevisioissa. Suorituskyvyn, hallittavuuden ja turvallisuuden kannalta FAT32 ei pärjää uudemmille tiedostojärjestelmille.
ExFAT kehitettiin vuonna 2006 ja sen suurin kehityksen syy oli neljän gigatavun tiedostokoon korottaminen. ExFAT suunniteltiin käytettäväksi flash-muistin kanssa. Nimestään huolimatta exFAT:llä ei ole paljoa teknisiä samankaltaisuuksia muihin FAT-tiedostojärjestelmiin.
NTFS kehitettiin vuonna 1993 ja se on käytössä yleisesti nykyisillä työpöytäkoneissa. Parannuksia verrattuna FAT32:n ovat osiokoon skaalautuminen eksatavuluokkaan saakka, pitkät tiedostonimet, pakkaus, journalointi, käyttöoikeuksien hallinta, salaus, käyttäjäkohtaiset levytilat ja osioiden koon muutokset. NTFS:stä kehitetty tiedostojärjestelmä ReFS (resident file system), jonka saa vain windows-palvelimiin, sillä ReFS on tarkoitettu massiiviseen ammattimaiseen datatallennukseen, eikä kuluttajien koneisiin. [2.]
2.2 Linuxin eri tiedostojärjestelmät
Linuxin open source-luonteen vuoksi, Linuxin ydin on suunniteltu tukemaan useita eri tiedostojärjestelmiä. Linux käyttää virtuaalista tiedostojärjestelmää, eli vfs:ää, joka kääntää kääntää käyttöjärjestelmän käskyt tiedostojärjestelmän käskyjen käyttämään muotoon.
Linuxiin alettiin kehittämään ext-tiedostojärjestelmää vuonna 1992, josta on kehitetty ext2, ext 3 ja ext 4. Käytetyin tiedostojärjestelmä Linuxilla on ext4, joka edeltäjänsä ext3:n tavoin tukee
4 journalointia. Ext4 ei tuo muutoksia ext:3n nähden, mutta siinä on parannuksia tiedostojärjestelmän ominaisuuksiin ja suorituskykyyn. Xfs on toinen yleinen Linuxilla käytetty tiedostojärjestelmä, jota muun muassa Red Hat Linux käyttää. Zfx on suunniteltu kuin Windowsin refs, eli sitä ei suositella jokapäiväiseen käyttöön, vaan ammattimaiseen datan tallennukseen. [2.]
2.3 Ceph vs muut tiedostojärjestelmät
Ceph on hieman erilainen muihin tietojärjestelmiin liittyen, sillä se on object storage. Object storageissa on usea eri OSD eli object storage device, jotka tallentavat tiedostot ympäristöön.
OSD on suunniteltu toimimaan automaattisesti hyödyntäen OSD:n itseensä rakennettua tietoa, laitteistoissa on sisäänrakennettu toiminto ympäristön resursseja varten, kuten laitteissa jäljellä olevan vapaan tallennuskapasiteetin. OSD:eissa sijaitseva tieto on saatavilla kaikissa järjestelmissä, joilla on lupa päästä siellä oleviin tiedostoihin. Object storagen arkkitehtuuriin liit- tyy object manager, OSD intelligence ja file manager. [3.]
Object storageissa on vaakasuora skaalautuvuus. Vaakasuora skaalautuvuus tarkoittaa fyysisten koneiden lisäämistä ympäristöön koneiden resurssejen lisäämisen sijasta [4]. OSD:n turvallisuuteen liittyy autentikointi, lupa tiedostoon pääsyyn, datan eheys sekä datan yksityisyys.
Autentikointi tapahtuu OSD:n kuljetustason kautta. Autentikointi toimii OSD-managerin antamilla luvilla, jotka päätepisteet näyttävät takaisin OSD:lle. OSD tarkastaa tiedostoihin pääsyn luvan, datan eheyden ja datan yksityisyyden. Datan eheys ja yksityisyys saavutetaan salauksen kautta.
[3.]
3 Mikä on Ceph
Ceph on open source object storage ja tiedostojärjestelmä. Open source tarkoittaa ilmaista ohjelmaa, jota käyttäjä saa muokata vapaasti, tehdä ohjelmasta koptioita ja jakaa ohjelman kopioita. Ohjelman lähdekoodi on myös ilmainen ja kaikilla on sen saamiseen ja muokkaukseen oikeudet. Open source ohjelmaa saa myös muokata ja parantaa vapaasti. [5.] Ceph on suunniteltu vikasietoiseksi isossa mittakaavassa, eikä se ole haavoittuvainen yksittäisien komponenttien vioille eli kaikki on kahdennettu. Suuret viat ovat normi, eivätkä poikkeus [6].
Cephin prototyyppi perustuu Sage A. Weilin väitöskirjaan, joka on tehty vuonna 2007. Väitöskirjan ideana oli parantaa tiedostojärjestelmän skaalautuvuutta, suorituskykyä ja luotettavuutta palvelimien tarpeeseen object storagella. Ceph toimii CRUSH-algoritmillä. Algoritmi kartoittaa objektien sijainnit ympäristössä. Algoritmi on tehty tasoittamaan työmäärä ympäristössä olevien noodien kesken. [7, s. 1-2.]
Ceph on suunniteltu yrityksille, akateemisille laitoksille, organisaatoille ja ohjelmistokehittäjille [8]. Cephiä käytetty esimerkiksi Kentuckyn yliopistossa suurteholaskennan virtualisointiin, Yhdysvaltain ilmastovoimissa kriittiseen lentodatan tallennukseen ja Minnesotan supertietokoneinstituutissa tutkijoiden tallennustarpeen saavuttamiseen [9].
RADOS, eli Reliable Autonomic Distributed Object Store, on tehty osana Cephiä. RADOS systeemiin kuuluu useta eri OSD:eitä, eli Object Storage Device, sekä pieni määrä monitoreita, jotka hallitsevat OSD:ta. Jokainen OSD sisältää oman hardwaren, mutta monitorit ovat oma prosessinsa koneissa. RADOS käyttää tiedon hajauttamispolitiikkaa, joka lähes sattumanvaraisesti siirtää objektit eri laitteille. Uuden storagen lisäyksessä osa nykyisestä tiedoista siirretään uuteen laitteeseen, jolloin kaikki laitteet ovat tasapuolisesti kuormitettuja. [10.]
3.1 Tietokoneklusterit
Klusteri on ryhmä tietokoneita, jotka toimivat kokonaisuutena. Yhtä konetta klusterissa kutsutaan noodiksi, jotka ovat verkotettu yhteen lähiverkon avulla. Klusterissa kaikki koneet toimivat saman tehtävän parissa, esimerkiksi tietokantana. Klusteri voi olla yksinkertainen kahden noodin systeemi tai supertietokone klusteriarkkitehtuurilla.
6 Klustereita käytetään korkean suorituskyvyn tietojenkäsittelyyn ja korkeaan saatavuuteen.
Usealla noodilla pyritään vikasietoisuuteen eli yhden noodin kaaduttua koko järjestelmä ei kaadu.
Klusterilla on yhteen koneeseen verrattuna isompi tallennuskapasiteetti, nopeampi prosessointikyky, laajempi määrä resursseja sekä parempi datan eheys. [11.]
3.2 Ceph daemonit eli taustaprosessit
Ceph toimii eri taustaprosesseilla, kuten klusterin monitoreiden ja OSD:iden avulla. Klusterin monitorit ylläpitävät pääkopiota Cephin klusterikartasta. Varastointiklusterit hakevat klusterikartan Cephin monitoreista[12]. Klusterin hallinta toimii monitoreiden kautta. Object storage, eli OSD-noodien rikkoutuessa tai niiden lisäämisessä, monitorit pitävät yllä toimivan klusterikartan. [6.]
Poolit ovat loogisia osioita datan tallennukseen. Poolit asettavat objekteihin pääsyn, sijoitusryhmien määrän ja CRUSH-säännöt. Peering, prosessi, jossa kaikki OSD:t tallentavat sijoitusryhmien tilan kaikista objekteista ja niiden metadatasta tässä sijoitusryhmässä. Ceph OSD taustaprosessit tarkastavat OSD:n tilan ja raportoivat sen monitoreille. Ceph OSD-taustaprosessit ovat tietoisia kaikista klusterissa sijaitsevista OSD-taustaprosesseista, jolloin ne voivat olla vuorovaikutuksessa keskenään. [12.]
Cephissä on toiminto tiedon varmentamiseen (data scrubbing), joka löytää OSD:n bugeja tai tiedostojärjestelmä virheitä, jotka johtuvat yleensä laitteiston virheistä. Tiedon varmistamisesta käytetään sijoitusryhmissä, jokaista sijoitusryhmää varten generoidaan katalogi jokaisesta objektista ja sen replikoista, jotta voidaan varmistaa, että objekteja ei puutu. Tiedon varmentaminen on tärkeä datan eheyden vuoksi [13.]
Metatietopalvelin hallitsee tiedostojen datan sijaintia ja sijoittamista tietoavaruudessa. Metadata servereiden ensisijainen soveltuvuus on älykäs metadata cache, sillä metadata sijaitsee Object Storagessa. Metatieto kirjoitetaan tiedostoon, joka siirretään loppujen lopuksi fyysiseen muistiin.
Metatieto sijaitsee object storagessa, mutta skaalautuvuuden tuettavuuden vuoksi, object storagen ja metadatan hallinta sijaitsee eri taustaprosesseissa. Metadata servereiden kartoittamista nimiavaruuteen käytetään dynaamista osiointia, jotta Ceph pystyy mukautumaan työmäärän vaihteluun. [6.]
Managers on päätepiste monitorointiin, joka monitoroi Cephin tämänhetkistä tilaa, kuten suorituskykyä ja järjestelmän kuormitusta. Ceph manager pitää yllä python-moduuleja, kuten web dashboardia ja REST APIa. [14.]
3.3 Ceph-infrastruktuurin kartoitus
Ceph clientit ja OSD Daemonit käyttävät CRUSH-algoritmiä objektien sijainnin löytämiseen.
CRUSH on lyhenne sanoista Controller Replication Under Scalable Hashing. CRUSH-kartat tuottavat parempaa datan hallinnoimista kuin vanhemmat tekniikat. CRUSHin skaalaus, jakaa työmäärän kaikille clienteille ja OSD deamoneille klusterissa. Cephin tallentaessa objektin, CRUSH laittaa kyseisen objektin sijoitusryhmiin. [12.] CRUSH kartoittaa hierarkian, joka kuvaa klusterin fyysisen topologian ja datan sijoituksen säännöt, joka kuvaa replikoiden paikan hierarkiassa.
Hierarkiaan kuuluu OSD:t, sekä muut fyysiset ryhmät ja ominaisuudet, muun muassa hostit ja palvelimet. [15.]
Ceph-päätepisteet kommunikoivat suoraan OSD:n kanssa CRUSH karttojen avulla, jolloin Ceph välttää yhtä epäonnistumispistettä ja suorituskyvyn pullonkauloja käyttämällä CRUSH-karttoja keskitettyjen objektien hakutaulukkojen sijasta. OSD:t käyttävät CRUSH-karttoja replikointiin, jälkitäyttöön ja palauttamiseen sekä saavat tarpeeksi tietoa klusterista resurssien tasapainoittamiseen ja dynaamiseen vioista toipumiseen. Ceph-infrastruktuurissa on objekteilla on kopioita, jotka CRUSH kartoittaa eri laitteille tiedonmenetyksen ja saatavuuden varmentamiseksi. [16.]
CRUSH jakaa ja tallentaa tiedon sattumanvaraisesti ympäristöön. CRUSH tarvitsee hierarkisen kuvauksen laitteistosta sekä tiedon replikoiden sijoituskäytänteistä. Sijoituksen vahvuudet ovat systeemi, joka löytää itsenäisesti jokaisen objektin sijainnin sekä tarvittava metadata on enimmäkseen staattista ja vaihtuu vain, jos laitteita lisätään tai poistetaan. [17.]
8 4 Tietokoneklusterin asentaminen
Fyysiset palvelimet ovat KAMKin DC-laboratoriossa olevassa konesalissa. Neljään eri noodiin lisättiin SSD-levyjä asennusta varten. Käyttöjärjestelmäksi asennettiin Ubuntu 20.04 server.
Ennen asennusta jokaiselle noodille asennettiin myös Docker. Linuxin host-tiedostoon on lisättävä jokaisen noodin IP-osoitteet ja hostnamet. Rootin SSH-kirjautuminen sallitaan sshd configista, jotta noodit voidaan lisätä Ceph-clusteriin.
Ceph on asennettu Dockerin päälle ylläpidon ja asennuksen helpottamiseksi. Jos jokin osa menee rikki, sen voi uudelleen asentaa nopeasti. Docker on konttiteknologiavaihtoehto. Kontit ovat paketoituja sovelluksia, kontin sisälle on siis pakattu kaikki sovelluksen toimintaan liittyvät tiedostot. Kontit eristävät sovelluksen ympäristöstä, jonka vuoksi kontit voidaan poistaa ja asentaa uudelleen tarpeen vaatiessa. [19.]
Jokaisen noodin aika korjataan komennolla sudo timedatectl set-timezone Europe/Helsinki, jolla varmistetaan aikojen olevan oikein onglemien kartoittamista varten, sekä varmistetaan että ympäristö ei mene sekaisin noodien aikaeroista. Ceph dashboard voi olla herkkä aikojen eroista, jo muutaman sekunnin aikaero noodeissa aiheutti virheilmoituksen, mutta Ceph korjasi ajan automaattisesti.
Ennen Cephin asentamisen aloittamista, varmistetaan, että Ubuntujen paketit ovat päivitetty ajan tassalle. Otetaan tiedosto logeista pois ajantallennus performanssin parantamiseksi komennolla:
/etc/fstab -> noatime
4.1 Asennuksen suunnittelu
Klusteri on tehty opetuskäyttöön KAMK:n tietojenkäsittelyn DC-puolen opiskelijoille. Klusteri koostuu neljästä noodista. Luokan vanhan levyjärjestelmä tilalle tarvittiin uusi järjestelmä.
Levyjärjestelmän tiedostojärjestelmän asennukseen valittiin Ceph. Asennus oli aloitettu Cephin versiolla 15.2.6 ja se päivitettiin myöhemmin versioon 15.2.7. Cephiin haluttiin toimiva nfs sekä iSCSI-portit. ISCSI- porttien avulla tuotantoympäristöä hallittiin koulun Vmware-ympäristöstä.
Testiympäristössä käyttöjärjestelmät on asennettu muistikortteihin, tuotantoympäristössä aluksi muistitikkuihin. Myöhemmin siirryttiin ssd-levyihin, sillä törmättiin onglemaan, jossa muistitikut
tekivät tiedostoista vain luettavia, jolloin niille ei voitu kirjoittaa tietoa ja koneella ei voitu tehdä mitään. Object storage devicet eli kovalevyt ovat 7 teran SSD-levyjä.
Testiympäristö asennettiin ensin. Sillä testattiin Cephin asennusta ja käyttöönottoa. Jos tuotantoympäristöön halutaan lisätä jotain tai muutoksia halutaan tehdä, ne testataan ensin testiympäristössä, jolloin tuotantoympäristön rikkoutuminen yhteensopivuusongelmien tai asennusvirheiden vuoksi minimoidaan.
4.2 Cephin asentaminen
Cephin asennuksessa lisättin Cephin oma pakettivarasto, sillä Ubuntun pakettivarasto tuleva versio on vanha. Asennus on tehty lähteen 18 mukaan.
Kaikille noodeille asennettiin ceph-common, iSCSI-porttien toiminnan vuoksi. Se asentaa suurimman osan tarvittavista paketeista porttien toimintaan. Ceph-klusterin bootstartin valmistuessa, Linux-terminaali antaa salasanan, jolla pääse sisälle Ceph dashboardiin selaimessa.
Tuotantoympäristöön suositellaan vähintään kolmea monitoria vikasietoisuuden vuoksi. Aluksi kaikki neljä noodia toimivat monitoreina, huomattiin kuitenkin, että parillinen määrä monitoreja on hyödytön, jolloin siirryttiin kolmen monitorin käyttöön. Esimerkiksi Ceph toimii vikasietoisesti, kun kolmesta monitorista kaksi on päällä ja viidestä monitorista vähintään kolme. Neljä monitoria toimii samalla periaatteella kuin kolme monitoria. Seitsemän tai sitä useamman monitorin käyttö on vain harvinaisissa tapauksissa tarpeellista. [20.]
OSD:t, eli object storage devicet lisätään monitorien lisäämisen jälkeen. OSD:tä ei voi lisätä ympäristöön, jos se ei ole tyhjä. OSD:n voi tyhjentää Cephin omalla zap–komennolla monitorin kautta, mutta jos Cephin komento ei toimi, pitää mennä noodille, missä OSD on ja tyhjentää se Linuxin omalla zap-komennolla.
4.3 Verkkolevyjärjestelmä
Ceph-klusteriin haluttiin toimiva nfs eli verkkolevyjärjestelmä. NFS:n teko aloitetaan komennolla
”sudo systemctl status ceph\*.service ceph\*.target”, jonka jälkeen tehdään Cephfs-voluumit
10 komennolla ceph fs volume create cephfs. NFS:n teko viimeistellään Cephfs-klustereiden tekemisellä noodeille ceph 1, ceph 2 ja ceph 3 komennolla ”ceph nfs cluster create cephfs 123 ceph1,ceph2,ceph3”.
Kuva 1. NFS:n teko
Cephin NFS ei toiminut ilman uudelleen käynnistystä, joten aluksi mietittiin, mikä service pitäisi uudelleenkäynnistää toimivuuteen. Tiettyä serviceä ei löydetty käynnistämällä jokainen service erilleen yksitellen, mutta toimivuus saatiin uudelleen käynnistämällä ceph.target, joka viittaa Cephin kaikkiin serviceihin. Cephin servicet saa restartattua komennolla sudo systemctl restart ceph.target.
4.4 iSCSI-porttien configurointi
Ceph iSCSI -portit ovat iSCSI-kohteita, sekä Ceph-päätepisteitä. Portti toimii “kääntäjänä” Rados Block Devicen käyttöliittymän ja iSCSI-standardin välillä. ISCSI-portit voivat olla asennettuina erillisille noodeille tai toimia Ceph-noodien eri daemoneiden kanssa. [21.] Jokainen noodi, jota käytetään iSCSI-porttina, tarvitsee ceph-commons-, ceph-iscsi-, sekä tcmu-runner-paketit.
ISCSI-gateway.cfg-tiedosto on kopioitava ensimmäiseltä koneelta kaikkiin portteina toimiviin noodeihin. Tiedostojen on oltava identtisiä. ISCSI-portit saa myös toimimaan kontteina komennolla ceph orch daemon add iscsi rbd admin admin [ceph1:n IP-osoite],[ceph2:n IP- osoite],[ceph3:n IP-osoite],[ceph4:n IP-osoite] ceph1,ceph2,ceph3,ceph4.
Ongelmana asennuksessa oli rbd-target-api, joka sattumanvaraisesti lakkasi toimimasta. Aluksi korjaus toteutettiin kyseisen apin uudelleenkäynnistäminen niin monta kertaa, kunnes se aloitti toiminnan. Pysyvämpi vaihtoehto löydettiin kuitenkin korvaamalla tiedosto lähteen 22 mukaan.
Kyseessä oli bugi, joka kaatoi rbd-target-apin virheellä TypeError, joka johtui Pythonista. [22.]
4.5 Ympäristön hallinta
Dashboard on graafinen käyttöliittymä, jonka löytää yhdestä Ceph-noodin IP-osoitteesta. Cephiä voi hallita dashboardilta komentorivin sijaan. Dashboard on lokaalilla verkolla sijaitseva verkkosivu. Dashboardilla sijaitsee myös Cephin tilaan liittyvät mittarit, josta voi muun muassa katsoa Cephin terveydentilan ja päällä olevat noodit.
12
Kuva 2. Ceph dashboard
Dashboardilta tehtiin opiskelijoille käyttäjä, jolla on rajatut oikeudet käyttämään iSCSI ja NFS.
Rajatut oikeudet haluttiin, jottei ympäristöä voida tuhota. Opiskelijakäytössä ei myöskään tarvita suurinta osaa hallinto-oikeuksista.
Asennuksien jälkeen huomattiin, että muistitikut eivät olleet hyvä valinta käyttöjärjestelmän asennukselle, jolloin ne vaihdettiin SSD-levyihin. Levyjen vaihto toteutettiin poistamalla OSD:t ja Ceph hostit yksitellen, jonka jälkeen SSD asennettiin bladeen ja siihen asennettiin Ubuntu server.
Ubuntun asentamisen jälkeen Ceph-commons-paketti asennettiin uudelleen ja noodi lisättiin takaisin Ceph-ympäristöön ympäristössä olevalta hostilta. Lisäyksen jälkeen OSD:t lisättiin vielä takaisin.
OSD:n poisto vie tunteja, jolloin yhden hostin poistamiseen tarvittiin lähes päivä. Poiston kestoon liittyy todennäköisesti OSD:ltä tiedostojen siirto ympäri tallennustilaa, jota ei poisteta. Ubuntun tai Cephin päivityksen tarpeessa, päivitykset tehdään yksitellen. Yksi noodi päivitetään, jonka jälkeen se käynnistetään uudelleen. Jos päivitys onnistui normaalisti, eikä virheilmoituksia näy, voidaan päivitys aloittaa toiselle noodille. Dashboard siirtyy noodista toiselle, kun noodin, jossa dashboard on laittaa kiinni. Dashboardin siirtyminen vaihtaa myös dashboardin osoitteen, jolloin joskus jouduttiin arpomaan, mille noodille se on siirtynyt.
4.6 Ceph-ympäristön resetointi
Rakennettu Ceph-ympäristö jouduttiin asentamaan muutaman kerran, sillä tapahtuneita virheitä ei saatu korjattua järkevässä ajassa. Ympäristön uudelleen asentaminen aloitetaan kaikkien Docker- ja Ceph-palvelujen pysäyttämisellä, jonka jälkeen Dockerin kontit poistetaan. Cephin kaikki servicet pysäytetään komennolla sudo systemctl stop ceph\*.service ceph\*.target ja Docker pysäytettiin komennolla sudo systemctl stop docker. Kansiosta /etc/systemd/system poistetaan kaikki Cephiin liittyvät tiedostot. Docker helpottaa uudelleenasennusta huomattavasti, sillä kontteja pystytään poistamaan ja uudelleen asentamaan nopeasti.
14 5 Pohdinta ja johtopäätökset
Opinnäytetyön tavoitteena oli tutustua Cephiin ja tietojärjestelmiin sekä tehdä fyysinen Ceph- asennus levyjärjestelmälle. Teorian ensimmäisessä osassa katsottiin tiedostojärjestelmiin sekä hieman niiden historiaan ja verrattiin pöytäkoneissa käytettäviä tiedostojärjestelmiä Cephiin.
Teorian toisessa osassa tutustuttiin Cephin arkkitehtuuriin sekä sen eri taustaprosesseihin.
Käytännön osiossa asennettiin Ceph-levyjärjestelmä opiskelijoille kurssikäyttöön.
Cephin toiminta koostuu eri daemoneista eli taustaprosesseista. Tärkeimmät taustaprosessit ovat Ceph-monitorit ja Ceph OSD:t. Monitoreiden avulla hallitaan Ceph-ympäristöä. OSD:t eli Object Storage Devicet toimivat ympäristön tallennuslaitteistona. OSD:ssä on toiminta datan varmennukseen ja eri OSD:n bugien löytämiseen laitteiston vikojen takia. OSD:ssä sisältävät poolit ovat loogisia osioita datan tallennukseen. CRUSH-kartat auttavat ympäristöä löytämään tallennetut objektit, jotka on sijoitettu ympäristöön sattumanvaraisesti.
Ceph asennettiin konttien avulla Linuxin Ubuntu-distribuution päälle. Kolmesta Cephin noodista tehtiin monitorit vikasietoisuuden vuoksi. Kaikilla noodeilla on 7 teratavun OSD:t. Cephiin tehtiin toimiva NFS ja viimeiseksi vielä konfiguroitiin iSCSI-portit. Asennusten ja konfigurointien jälkeen ympäristöön tehtiin käyttäjä, jonka avulla opiskelijat saavat tarvittavat oikeudet ympäristöön ilman, että käyttäjällä voi vahingossa sekoittaa levyjärjestelmää. Asennuksen yhteydessä Ceph päivitettiin kerran, mutta opinnäytetyöä kirjoittaessa, uusi päivitys Cephiin on saatavilla.
Isoimmat ongelmat asennuksessa tulivat, kun Ubuntu yritettiin ensin asentaa muistitikuille ja myöhemmin muistikorteille. Kuitenkin samojen virheiden tapahtuessa uudestaan päädyttiin SSD- levyille. Dockerin käytön ansiosta uudelleen asentaminen tapahtui kuitenkin nopeasti. Käytännön työ saatiin tehtyä aikataulussa, kuukauden sisällä. Asennusta vielä konfiguroitiin ja valvottiin Cephin toimintaa opiskelijoiden kurssin aikana. Ceph-levyjärjestelmän opiskelijakäyttöä jatketaan DC-laboratoriossa. DC-laboratorion henkilökunta tai sen opiskelijat korjaavat tai päivittävät levyjärjestelmää tarpeen mukaan.
Lähteet
1. Seltzer, M & Murphy, N. 2009. Hierarchical Filesystems are Dead 2. Vähimaa, A. 2021. Bitti poikki ja pinoon, Mikrobitti 3/2021 3. Ruwart, T. 2002, OSD: A Tutorial on Object Storage Device 4. Patil, R & R. K. Singh. 2013. Scaling in Cloud Computing 5. Perens, B. 1998. The Open Source Definition
6. Jones, M. 2010. Ceph: A Linux petabyte-scale distributed file system. Viitattu 19.11.2021.
https://developer.ibm.com/tutorials/l-ceph/
7. Sage A. Weil. 2007. Ceph: reliable, scalable and high-performance distributed storage 8. Ceph. 2021, Use cases. Viitattu 19.11.2021. https://ceph.io/en/discover/use-cases/
9. Ceph. 2021. Case studies. Viitattu 19.11.2021. https://ceph.io/en/discover/case-studies/
10. Weil, S & Leung, A & Brandt, S & Maltzahn, C. 2007. RADOS: A Scalable, Reliable Storage Ser- vice for Petabyte-scale Storage Clusters. Viitattu 19.11.2021. https://old.ceph.com/wp- content/uploads/2016/08/weil-rados-pdsw07.pdf
11. SUSE. 2021. Definition Computer Cluster. Viitattu 19.11.2021. https://www.suse.com/suse- defines/definition/computer-cluster/
12. Ceph. 2016. Architecture. Viitattu 19.11.2021. https://docs.ceph.com/en/latest/architecture/
13. Ceph. 2016. OSD config reference. Viitattu 17.8.2021. https://docs.ceph.com/en/latest/ra- dos/configuration/osd-config-ref/#scrubbing
14. Ceph. 2016. Intro to Ceph. Viitattu 17.8.2021. https://docs.ceph.com/en/latest/start/intro/
15. Ceph. 2016. CRUSH maps. Viitattu 17.8.2021. https://docs.ceph.com/en/latest/rados/opera- tions/crush-map/
16 16. Red Hat. 2021. Chapter 3: introduction to crush. Viitattu 19.11.2021. https://ac- cess.redhat.com/documentation/en-us/red_hat_ceph_storage/1.2.3/html/storage_strate- gies/introduction_to_crush
17. Weil, S & Brandt, S & Miller, E & Maltzahn, C. 2006. CRUSH: Controlled, Scalable. Decentralized
Placement of Replicated Data. Viitattu 19.11.2021.
https://users.soe.ucsc.edu/~sbrandt/papers/SC06.pdf
18. Soika, R. 2020. Ceph Octopus running on Debian Buster. Viitattu 19.11.2021.
https://ralph.blog.imixs.com/2020/04/14/ceph-octopus-running-on-debian-buster/
19. Docker. Use containers to Build. Share and Run your applications. Viitattu 19.11.2021.
https://www.docker.com/resources/what-container
20. Ceph. 2016. Adding/Removing monitors. Viitattu 19.11.2021.
https://docs.ceph.com/en/latest/rados/operations/add-or-rm-mons/
21. Ceph. 2016. Configuring the iSCSI target using the command line interface. Viitattu 19.11.2021. https://docs.ceph.com/en/latest/rbd/iscsi-target-cli/
22. Jacobsen, J. 2020. rbd-target-api crashes with python TypeError. Viitattu 19.11.2021.
https://bugs.launchpad.net/ubuntu/+source/ceph-iscsi/+bug/1883112