Ceph Distributed File System¶
On december 12, 2021 by adminCeph er et distribueret netværksfilsystem, der er designet til at give god ydelse, pålidelighed og skalerbarhed.
De grundlæggende funktioner omfatter:
- POSIX-semantik
- Sømløs skalering fra 1 til mange tusinde knudepunkter
- Høj tilgængelighed og pålidelighed. Intet enkelt fejlpunkt.
- N-vejsreplikation af data på tværs af lagerknuder
- Snav genopretning efter knudefejl
- Automatisk rebalancering af data ved tilføjelse/fjernelse af knuder
- Nemt at implementere:
Dertil kommer,
- Fleksible snapshots (på en hvilken som helst mappe)
- Rekursivt regnskab (indlejrede filer, mapper, bytes)
I modsætning til klyngefilsystemer som GFS, OCFS2 og GPFS, der er afhængige af symmetrisk adgang for alle klienter til delte blokanordninger, adskiller Cephseparerer data- og metadatahåndtering i uafhængige serverklumper, i lighed med Lustre. I modsætning til Lustre kører metadata- og lagernoderne dog udelukkende som brugerrums-dæmoner. Fildata stripes på tværs af lagringsnoderne i store stykker for at fordele arbejdsbyrden og muliggøre høj gennemstrømning. Når lagringsnoderne fejler, bliver dataene gen-replikeret på en distribueret måde af lagringsnoderne selv (med en minimal koordinering fra en klyngemonitor), hvilket gør systemet ekstremt effektivt og skalerbart.
Metadataservere danner effektivt en stor, konsistent, distribueret in-memory cache over filnavneområdet, som er ekstremt skalerbart, dynamisk omfordeler metadata som reaktion på ændringer i arbejdsbyrden og kan tolerere vilkårlige (altså ikke-Byzantine) knudefejl. Metadataserveren anvender en noget ukonventionel tilgang til lagring af metadata for at forbedre ydeevnen betydeligt for almindelige arbejdsbelastninger. Især er inodes med kun et enkelt link indlejrede indirekte kataloger, hvilket gør det muligt at indlæse hele kataloger med dentries og inodes i cachen med en enkelt I/O-operation. Indholdet af ekstremt store kataloger kan fragmenteres og forvaltes af uafhængige metadataservere, hvilket giver mulighed for skalerbar samtidig adgang.
Systemet tilbyder automatisk datafbalancering/migrering ved skalering fra en lille klynge med blot et par knuder til mange hundrede, uden at en administrator behøver at udskille datasættet i statiske volumener eller gennemgå den kedelige proces med at migrere data mellem servere.Når filsystemet er ved at være fuldt, kan der nemt tilføjes nye noder, og tingene vil “bare fungere”.
Ceph indeholder en fleksibel snapshot-mekanisme, der gør det muligt for en bruger at oprette et snapshot af enhver undermappe (og dens indlejrede indhold) i systemet. Oprettelse og sletning af snapshot er så simpelt som “mkdir.snap/foo” og “rmdir .snap/foo”.
Ceph tilbyder også en vis rekursiv bogføring på mapper for indlejrede filer og bytes. Det vil sige, at en ‘getfattr -d foo’ på en hvilken som helst mappe i systemet vil afsløre det samlede antal indlejrede almindelige filer og undermapper og en summering af alle indlejrede filstørrelser. Dette gør identifikationen af store forbrugere af diskplads relativt hurtig, da der ikke kræves nogen “du” eller lignende rekursiv scanning af filsystemet.
Finally, Ceph tillader også, at der kan sættes kvoter på enhver mappe i systemet.Koten kan begrænse antallet af bytes eller antallet af filer, der er gemt under det pågældende punkt i mappehierarkiet. Kvoter kan sættes ved hjælp af de udvidede attributter “ceph.quota.max_files” og “ceph.quota.max_bytes”, f.eks.:
setfattr -n ceph.quota.max_bytes -v 100000000 /some/dirgetfattr -n ceph.quota.max_bytes /some/dir
En begrænsning i den nuværende kvoteimplementering er, at den er afhængig af, at klienten, der monterer filsystemet, samarbejder med at stoppe skriverne, når en grænse er nået. En modificeret eller fjendtlig klient kan ikke forhindres i at skrive så mange data, som den har brug for.
Mount Options¶
ip=A.B.C.D Angiv den IP og/eller port, som klienten skal binde sig til lokalt.Der er normalt ikke meget grund til at gøre dette. Hvis IP’en ikke er angivet, bestemmes klientens IP-adresse ved at se på den adresse, som forbindelsen til monitoren stammer fra. wsize=X Angiv den maksimale skrivestørrelse i bytes. Standard: 64 MB. rsize=X Angiv den maksimale læsestørrelse i bytes. Standard: 64 MB. rasize=X Angiv den maksimale readahead-størrelse i bytes. Standard: 8 MB. mount_timeout=X Angiv timeout-værdien for mount (i sekunder) i tilfælde af et Ceph-filsystem, der ikke reagerer. Standardværdien er 60 sekunder. caps_max=X Angiv det maksimale antal caps, der skal holdes. Ubrugte caps frigives, når antallet af caps overskrider grænsen. Standardværdien er 0 (ingen grænse) rbytes Når stat() kaldes på en mappe, skal st_size sættes til “rbytes”, dvs. summen af filstørrelser over alle filer, der er indlejret under den pågældende mappe. Dette er standardindstillingen. norbytes Når stat() kaldes på en mappe, sættes st_size til antallet af poster i den pågældende mappe. nocrc Deaktiver CRC32C-beregning for data, der skrives. Hvis den er indstillet, må lagerknuden stole på TCP’s fejlkorrektion for at opdage datakorruption i datapayload. dcache Brug dcache-indholdet til at udføre negative opslag og addir, når klienten har hele mappeindholdet i sin cache. (Dette ændrer ikke korrektheden; klienten bruger kun metadata fra cachen, når et lejemål eller en kapacitet sikrer, at de er gyldige.) nodcache Brug ikke dcache som ovenfor. Dette undgår en betydelig mængde kompleks kode, hvilket går ud over ydeevnen uden at påvirke korrektheden, og det er nyttigt til at spore fejl. noasyncreaddir Brug ikke dcache som ovenfor til readdir. noquotadf Rapporter det samlede forbrug af filsystemet i statfs i stedet for at bruge rootdirectory-kvoten. nocopyfrom Brug ikke RADOS-operationen “copy-from” til at udføre fjernkopiering af objekter. I øjeblikket bruges den kun i copy_file_range, som vil vende tilbage til standard VFS-implementeringen, hvis denne indstilling bruges. recover_session=<no|clean>Sæt automatisk genforbindelsestilstand i tilfælde, hvor klienten er blokeret på listen. Detilgængelige tilstande er “no” og “clean”. Standardindstillingen er “no”.
- no: forsøger aldrig at genoprette forbindelsen, når klienten opdager, at den er blevet bloklistet. Operationer vil generelt mislykkes efter at være blevet bloklistet.
- clean: klienten genoptager automatisk forbindelsen til ceph-klyngen, når den opdager, at den er blevet bloklistet. Under genforbindelsen dropper klienten beskidte data/metadata, ugyldiggør sidecaches og skrivbare filhåndtag.Efter genforbindelsen bliver fillåse forældede, fordi MDS mister sporet af dem. Hvis en inode indeholder forældede fillåse, er det ikke tilladt at læse/skrive på inoden, før programmerne frigiver alle forældede fillåse.
Skriv et svar