Ceph Distributed File System¶
On december 12, 2021 by adminCeph is een gedistribueerd netwerkbestandssysteem, ontworpen om goede prestaties, betrouwbaarheid en schaalbaarheid te bieden.
Basiskenmerken zijn:
- POSIX-semantiek
- Naadloze schaalbaarheid van 1 tot vele duizenden nodes
- Hoge beschikbaarheid en betrouwbaarheid. Geen enkel punt van mislukking.
- N-weg replicatie van data over storage nodes
- Snel herstel van node storingen
- Automatische herbalancering van data bij node toevoeging/verwijdering
- Eenvoudige implementatie: de meeste FS-componenten zijn gebruikersruimte-daemons
Ook
- Flexibele snapshots (op elke directory)
- Recursieve boekhouding (geneste bestanden, directory’s, bytes)
In tegenstelling tot clusterbestandssystemen als GFS, OCFS2 en GPFS, die vertrouwen op symmetrische toegang door alle clients tot gedeelde blokapparaten, scheidt Ceph het gegevens- en metadatabeheer in onafhankelijke serverclusters, vergelijkbaar met Lustre. In tegenstelling tot Lustre, draaien de metadata en opslag nodes echter volledig als gebruikersruimte daemons. Bestandsgegevens worden gestriped over opslagnodes in grote brokken om de werklast te verdelen en hoge doorvoer te vergemakkelijken. Wanneer opslagnodes falen, worden de gegevens op een gedistribueerde manier gerepliceerd door de opslagnodes zelf (met minimale coördinatie van een clustermonitor), waardoor het systeem extreem efficiënt en schaalbaar is.
Metadataservers vormen effectief een grote, consistente, gedistribueerde in-memory cache boven de bestandsnaamruimte die extreem schaalbaar is, dynamisch metadata herverdeelt in reactie op veranderingen in de werklast, en willekeurige (nou ja, niet-Byzantijnse) node-fouten kan tolereren. De metadataserver hanteert een ietwat onconventionele benadering van metadatastorage om de prestaties voor veelvoorkomende werklasten aanzienlijk te verbeteren. In het bijzonder worden inodes met slechts een enkele link ingebed in indirectories, waardoor hele directories van dentries en inodes in de cache kunnen worden geladen met een enkele I/O operatie. De inhoud van extreem grote mappen kan worden gefragmenteerd en beheerd door onafhankelijke metadata servers, waardoor schaalbare gelijktijdige toegang mogelijk wordt.
Het systeem biedt automatische data rebalancing/migratie bij het schalen van een klein cluster van slechts een paar nodes naar vele honderden, zonder dat een beheerder de dataset in statische volumes hoeft te verdelen of het vervelende proces van data migreren tussen servers hoeft te doorlopen.Wanneer het bestandssysteem vol raakt, kunnen eenvoudig nieuwe nodes worden toegevoegd en zal alles “gewoon werken.”
Ceph bevat een flexibel snapshot-mechanisme waarmee een gebruiker een snapshot kan maken van elke subdirectory (en de daarin geneste inhoud) in het systeem. Het maken en verwijderen van snapshots is zo eenvoudig als ‘mkdir.snap/foo’ en ‘rmdir .snap/foo’.
Ceph biedt ook enkele recursieve accounting op directories voor geneste bestanden en bytes. Dat wil zeggen, een ‘getfattr -d foo’ op een directory in het systeem zal het totale aantal geneste reguliere bestanden en submappen onthullen, en een optelsom van alle geneste bestandsgroottes. Dit maakt de identificatie van grote schijfruimtegebruikers relatief snel, omdat er geen ‘du’ of vergelijkbare recursieve scan van het bestandssysteem nodig is.
Ten slotte maakt Ceph het ook mogelijk om quota’s in te stellen op elke map in het systeem.De quota kan het aantal bytes of het aantal bestanden beperken dat onder dat punt in de maphiërarchie is opgeslagen. Quota’s kunnen worden ingesteld met behulp van de uitgebreide attributen ‘ceph.quota.max_files’ en ‘ceph.quota.max_bytes’, bijvoorbeeld:
setfattr -n ceph.quota.max_bytes -v 100000000 /some/dirgetfattr -n ceph.quota.max_bytes /some/dir
Een beperking van de huidige implementatie van quota’s is dat deze afhankelijk is van de medewerking van de client die het bestandssysteem mounteert om schrijvers te stoppen wanneer een limiet is bereikt. Een gewijzigde of vijandige client kan niet worden verhinderd om zoveel gegevens te schrijven als hij nodig heeft.
Mount Options¶
ip=A.B.C.D Geef het IP en/of de poort op waarmee de client zich lokaal moet binden.Normaal is hier niet veel reden toe. Als het IP niet wordt opgegeven, wordt het IP-adres van de client bepaald door te kijken naar het adres waar de verbinding met de monitor vandaan komt. wsize=X Geef de maximale schrijfgrootte in bytes op. Standaard: 64 MB. rsize=X De maximale leesgrootte in bytes opgeven. Standaard: 64 MB. rasize=X De maximale voorleesgrootte in bytes opgeven. Standaard: 8 MB. mount_timeout=X Geef de time-out waarde op voor het koppelen (in seconden), in het geval van een niet reagerend Ceph bestandssysteem. De standaardwaarde is 60 seconden. caps_max=X Geef het maximale aantal caps op om vast te houden. Ongebruikte caps worden vrijgegeven wanneer het aantal caps de limiet overschrijdt. De standaardwaarde is 0 (geen limiet) rbytes Wanneer stat() wordt aangeroepen op een map, stel dan st_size in op ‘rbytes’, de som van de bestandsgroottes over alle bestanden die onder die map genest zijn. Dit is de standaardinstelling. norbytes Wanneer stat() wordt aangeroepen voor een map, wordt st_size ingesteld op het aantal items in die map. nocrc CRC32C-berekening uitschakelen voor het schrijven van gegevens. Indien ingesteld, moet de opslagknooppunt vertrouwen op TCP’s foutcorrectie om gegevenscorruptie in de gegevenstoevoer te detecteren. dcache Gebruik de inhoud van de dcache om negatieve lookups en readdir uit te voeren wanneer de cliënt de gehele inhoud van de map in zijn cache heeft. (Dit verandert niets aan de juistheid; de cliënt gebruikt de metagegevens in de cache alleen als een lease of mogelijkheid garandeert dat ze geldig zijn.) nodcache Gebruik de dcache niet zoals hierboven. Dit vermijdt een aanzienlijke hoeveelheid complexe code, offert prestaties op zonder de correctheid te beïnvloeden, en is nuttig voor het opsporen van bugs. noasyncreaddir Gebruik niet de dcache zoals hierboven voor readdir. noquotadf Rapporteer het totale gebruik van het bestandssysteem in statfs in plaats van de rootdirectory quota te gebruiken. nocopyfrom Gebruik niet de RADOS ‘copy-from’ operatie om objectkopieën op afstand uit te voeren. Momenteel wordt dit alleen gebruikt in copy_file_range, dat zal terugkeren naar de standaard VFS implementatie als deze optie wordt gebruikt. recover_session=<no|clean>Stel de auto-reconnect modus in voor het geval dat de client geblokkeerd is. De beschikbare modi zijn “no” en “clean”. De standaardinstelling is “no”.
- no: probeer nooit opnieuw verbinding te maken als de client ontdekt dat hij geblocklist is. Operaties zullen over het algemeen mislukken nadat ze geblocklist zijn.
- clean: client maakt automatisch opnieuw verbinding met het ceph cluster wanneer het detecteert dat het geblocklist is. Tijdens het herverbinden dropt de client vuile gegevens/metadata, maakt paginacaches en beschrijfbare bestandshandvatten ongeldig. Na het herverbinden worden bestandsloten oud omdat de MDS ze niet meer kan volgen. Als een inode muffe bestandsloten bevat, is lezen/schrijven op de inode niet toegestaan totdat de applicaties alle muffe bestandsloten vrijgeven.
Geef een antwoord