Weekend Prosjekt: Kom i gang med Tahoe-LAFS Storage Grids

Her er et aksiom for alle større organisasjon å huske: hvis du har data, så har du et datalagrings problem. Men mens de skytjeneste spillerne er glade for å konkurrere for din bedrift, kan du ikke trenger å kjøpe en løsning. En rekke av åpen kildekode-prosjekter tilbyr fleksible måter å bygge din egen distribuert, feiltolerant lagringsnettverk. Denne helgen, la oss ta en titt på en av de mest spennende tilbud: Tahoe LAFS

Tahoe er en " Minst Authority File System ". – den LAFS du ofte ser på konsert med sitt navn. Den LAFS design er en hyllest til sikkerheten verdens " prinsippet om minst privilegiet ": enkelt sagt, bruker Tahoe kryptografi og adgangskontroll for å beskytte tilgang til dine data. Spesielt verten OS på en Tahoe node aldri har lese eller skrive tilgang til noen av dataene det butikker:. Bare godkjente klienter kan samle og sette sammen de riktige biter fra over distribuerte noder, og dekryptere filene

Utover det, skjønt, Tahoe tilbyr peer-to-peer distribuert datalagring med justerbare nivåer av redundans. Du kan stille inn " grid " for ytelse, feiltoleranse, eller finne en balanse i mellom, og du kan bruke heterogene maskinvare- og tjenesteleverandører for å gjøre opp dine noder, og gir deg et ekstra lag med beskyttelse. Videre, selv om du kan bruke Tahoe-LAFS som en enkel distribuert filsystem, du kan også kjøre web og (S) FTP-tjenester direkte fra Tahoe rutenett.

Installasjon og testing

Det nyeste Tahoe utgivelsen er versjon 1.9.1, fra januar 2012. Prosjektet gir tarballs for nedlasting, men mange Linux-distribusjoner har nå pakken også, så sjekk med din pakkesystem først. Tahoe er skrevet i Python, og bruker Twisted rammeverket, samt et utvalg av hjelpe Python biblioteker (for kryptografi og andre funksjoner). Ingen er spesielt uvanlig, men hvis du installerer fra kilde, sørg for å dobbeltsjekke dine avhengigheter.

Når du har pakket ut kilde pakken, kjøre python ./setup.py bygge å generere Tahoe kommandolinjeverktøy , og deretter kjøre python ./setup.py test for å kjøre installasjons tilregnelighet sjekk suite. Jeg fant ut at Ubuntu pakken ikke klarte å installere python-mock
, men Tahoe feilmeldinger fanget at feil og tillot meg å installere riktig biblioteket uten noen ekstra problemer.

Nå som du har Tahoe verktøy bygget, du kan koble til offentlig test grid å få en følelse for hvordan lagringssystemet fungerer. Dette rutenettet blir vedlikeholdt av prosjektet, og er blant annet referert til som pubgrid
eller Test Grid
. Du kan eksperimentere med Tahoe klient apps på pubgrid – men fordi det er et teststed bare, dens oppetid er ikke garantert, og vedlikehold kan periodisk tørke og gjenoppbygge den.

Først kjører tahoe opprette-klient. Dette skaper en lokal klient beskyttet node på maskinen din (som betyr at den ikke tilbyr lagringsplass til nettet), som du vil koble til pubgrid ved å redigere konfigurasjonsfilen i ~ /.tahoe /tahoe.cfg. Åpne tahoe.cfg filen og redigere kallenavn = Hotell og introducer.furl =
linjer.

Kallenavnet er enhver moniker du velger for node. I løpet av denne testfasen, gjør navnet ingen forskjell, men ved distribusjon av et rutenett, kan nyttige navnene hjelpe deg å holde bedre orden på dine noder 'ytelse og oppetid. &Quot; innførings " er Tahoe lingo for manager node som overvåker et rutenett – holde styr på de deltakende noder i et publisere /abonnere " hub " mote. Den pubgrid nåværende " Furl " Adressen er pb: //Denne e-postadressen er beskyttet mot programmer som samler. Du må aktivere Javascript for å kunne se adressen: 50528 /innførings
– men sjekk Tahoe wiki før den settes inn i konfigurasjonsfilen, i tilfelle det har endret seg.

Lagre konfigurasjonsfilen, og deretter kjøre ./tahoe starter på kommandolinjen. Du er nå koblet! Som standard Tahoe tilbyr en web-basert grensesnitt som kjører på http://127.0.0.1:3456
... åpne denne adressen i nettleseren din, og du vil se både en statusside for pubgrid (inkludert rutenett IDer av nærliggende jevnaldrende), og kontrollene du trenger for å lage dine egne kataloger og laste opp testfiler.

fillagring og andre front Slutter

En del av Tahoe LAFS sikkerhetsmodell er at katalogene som eies av andre noder er ikke søkbare eller oppdages. Når du oppretter en katalog (på pubgrid eller på noen annen grid), er en unik pseudo identifikator som genereres at du må bokmerke eller rable ned et sted der du ikke vil glemme det. Prosjektet har skapt en felles offentlig katalog på pubgrid på dette lenge, uhåndterlig URI, som gir deg en idé om hash-funksjonen brukes.

Du kan legge til mapper eller filer i den delte offentlig katalog, eller opprette nye kataloger og laste opp filer til din egen. Men når du gjør det, er det opp til deg å holde orden på URIer Tahoe genererer. Du kan dele Tahoe filer med andre brukere ved å sende dem URI direkte. Merk også at når du laster opp en fil, har du muligheten til å sjekke en boks merket " foranderlig. &Quot; Dette er en annen sikkerhetsfunksjon: filer som er opprettet som uforanderlige
er skrivebeskyttet, og kan aldri bli endret

I standardoppsettet, din klient beskyttet node ikke bidrar noe lokal diskplass. til nettets felles svømmebasseng. At innstillingen er kontrollert i [lagring]
strofe av tahoe.cfg filen. Husk at objektene som er lagret på ditt bidrag til felles svømmebasseng er kryptert biter av filer fra hele rutenettet; du vil ikke være i stand til å inspisere innholdet. For en offentlig nett, er at noe verdt å tenke på, selv når du kjører et rutenett for din egen virksomhet eller prosjekt, er det mindre av en bekymring.

Hvis alt du trenger å gjøre butikken statisk innhold og være trygg på at den er godt replikeres off-site, så standardkonfigurasjon som brukes av pubgrid kan være alt du trenger. Selvfølgelig vil du ønsker å kjøre din egen lagringsplass noder, koblet gjennom din egen innførings – men vanilje fil og katalogstruktur som eksponeres gjennom web GUI vil være nok. Det finnes andre alternativer, men.

Tahoe inkluderer REST API i tandem til den menneskelige tilgjengelige web front-end. Dette lar deg bruke en Tahoe LAFS rutenett som lagringsmotoren til en webserver. API eksponerer standard GET, PUT, POST, og DELETE metoder, og støtter JSON og HTML utgang. API er tilpasset for å gjøre Tahoe lange, menneske uleselige URIer lettere å jobbe med, og gir verktøy for å lettere å jobbe med operasjoner (for eksempel søk) enn kan ta lenger på en distribuert rutenett enn de ville gjort på en statisk HTTP-server.

Det er også en FTP-aktig front-end, som støtter SSL-kryptert SFTP operasjoner, og en kommandolinjeklient nyttig for servermiljøer eller fjernnett administrasjon. Til slutt, en " dråpe opplasting " alternativet er tilgjengelig i den nyeste bygger, som lar Tahoe for å overvåke en opplasting katalog, og automatisk kopiere nye filer inn i nettet.

Kjører din egen Grid

pubgrid er absolutt en nyttig ressurs for å utforske hvordan Tahoe og dens ulike front-ender funksjon, men for noen reell nytte du trenger å distribuere din egen rutenettet. Utforme et rutenett er et spørsmål om planlegging for antall lagring noder du trenger, bestemme hvordan du stiller de kodingen parametere for hastighet og redundans, og konfigurere den spesielle noder som administrerer logging, metadata, og andre hjelpeverktøy.
< p> lagring koding parametere inkluderer shares.needed
, shares.total
, og shares.happy plakater (som alle er konfigurerbart i tahoe.cfg fil) . En fil lastet opp til nettet er delt inn i shares.needed
biter, for å bli distribuert over nodene. Tahoe vil gjenskape totalt shares.total
biter, så total
må være større enn eller-lik-til trengte
. Hvis de er like, er det ingen redundans.

Den tredje parameteren, shares.happy
definerer minimum antall noder biter av noen enkelte fil må spredt over. Innstilling denne verdien for lav ofre fordelene med redundans. Som standard er Tahoe designet for å være tolerant av noder hvis tilgjengeligheten kommer og går, ikke bare for å takle svikt, men for å gi rom for en virkelig distribuert design der enkelte noder kan kobles fra og ikke skade rutenettet som helhet. Det er mye å vurdere når du utformer grid parametre; en god innføring i de avveiningene ligger på prosjektets wiki

Du kan kjøre tjenester &ndash.; slik som (S) FTP og HTTP front-ender omtalt ovenfor – på enhver lagring node. Men du vil også trenge minst en spesiell node, innførings
node som kreves for kundene å foreta en innledende tilkobling til nettet. Introducers opprettholde en tilstand tabell holde styr på nodene i et rutenett; de ser for grunnleggende konfigurasjon i [node]
i tahoe.cfg
, men ignorerer alle andre direktiver.

For å starte din, opprette en egen katalog for det (si, .tahoe-my-innførings /
, endre inn i katalogen, og kjøre tahoe opprette-innførings. fulgt av tahoe starte .. Når lansert, skaper det nye innførings en fil med navnet innførings. furl
, dette holder " Furl ". adressen som du må lime inn i konfigurasjonsfilen på alle dine andre noder

Du kan også (valgfritt) skape hjelper, key-generator, og stats- sanker noder for rutenett, for å avlaste noen vanlige oppgaver på separate maskiner. En hjelper node bare bistår blings replikering prosessen, noe som kan være treg hvis mange dupliserte biter er nødvendig. Du kan utpeke en node som en hjelper ved å sette aktivert = true
under [hjelperen]
strofe i tahoe.cfg

Oppsettprosessen nøkkelgeneratorer og statistikk og samlere er beslektet med det for introducers. kjøre tahoe skape nøkkel -generator . eller tahoe opprette-stats-samlere. i en egen katalog, etterfulgt av tahoe starte .. statistikk samlere er ansvarlig for logging og vedlikeholde data på nettet, mens nøkkelgeneratorer bare fremskynde beregnings-kostbar prosess med å lage kryptografiske tokens. Det er heller ikke nødvendig, men ved hjelp av dem kan forbedre ytelsen

Sette opp en Tahoe LAFS rutenett for å tjene din bedrift eller prosjekt er ikke et skritt for å bli tatt lett &mdash.; du trenger for å vurdere vedlikeholdskravene samt hvordan de konkurrerende hastighet og sikkerhetsfunksjoner legge opp for din bruk tilfelle. Men prosessen er enkel nok til at du kan gjennomføre det i løpet av få dager, og selv kjøre multi-node eksperimenter, alle med et minimum av oppstyret.