Hva er bøtter?
På Dapla er det Google Cloud Storage (GCS) som benyttes til å lagre data. Bøtter erstatter altså Linux-stammene vi har brukt i produksjonssonen.
I denne artikelen går vi gjennom noen av de viktigste forskjellene og hvordan man gjør vanlige operasjoner mot bøtter i GCS.
Bøtter vs filsystemer
I et Linux- eller Windows-filsystem er filer og mapper organisert i en hierarkisk struktur på et operativsystem (OS). I SSB har OS-ene vært installert på fysiske maskiner som vi vedlikeholder selv.
En bøtte i GCS er derimot en kjøpt tjeneste som lar brukeren lagre alle typer objekter i en container. Man trenger altså ikke å tenke på om filene ligger i et hierarki, hvilket operativsystem det kjører på, eller hvor mye diskplass som er tilgjengelig.
I motsetning til et vanlig filsystem er det ikke en hierarkisk mappestruktur i en bøtte. Det vil si at alt ligger et sted, men de kan ha lange navn med /
-tegn slik at det ligner på et klassisk filsystem. Bruker du /
i objekt-navnet så vil også Google Cloud Console vise det som mapper, men det er bare for å gjøre det enklere å forholde seg til. En praktisk konsekvens av dette er eksempelvis at man ikke trenger å opprette en mappe før man legger et fil/objekt i den. Det er bare en tekststreng som er en del av objekt-navnet.
Lokalt filsystem på Dapla lab?
På Dapla skal data lagres i bøtter, men når du åpner en tjeneste fra Dapla lab får du også et lokalt filsystem Figur 1. Det er også dette filsystemet du ser når du f.eks. bruker ls
-kommandoen i en terminal i JupyterLab, VSCode og RStudio.

Dette filsystemet er ment for å lagre kode midlertidig mens du jobber med dem. Det er ikke ment for å lagre data. Det er heller ikke ment som et permanent lagringssted for kode. Permanent lagring av kode skal gjøres på GitHub. Selv om filene du lagrer der fortsetter å eksistere før du sletter tjenesten bør kode du ønsker å bevare pushes til GitHub før du avslutter en sesjon i Jupyterlab.
Alt arbeid bør skje i området $HOME/work
. Alle filer utenfor dette området vil slettes når en tjeneste pauses.
Systemkommandoer mot bøtter
Man kan i likeht med vanlige filsystemer gjøre operasjoner mot bøtter fra Python og R utover det å lese og skrive data. Man kan lage mapper, slette og flytte filer. I forrige artikkel - jobbe med data finner du kodeeksempler for hvordan du kan både lese og skrive forskjellige filtyper fra bøtter og gjøre forskjellige systemkommandoer.
Bøttemontering med Cloud Storage FUSE
Med unntak av noen begrensninger kan man behandle bøttene som et vanlig filsystem når man jobber fra Dapla. Dette er fordi Dapla lab tjenestene i standardkatalogen er bøttemontert ved hjelp av Google Cloud sin tjeneste FUSE.
Bøttemonteringen er en abstraksjon over bøttene og har derfor noen begrensninger. For eksempel støttes ikke samtidighet, i tillegg til at noe metadata ikke blir bevart. Bøttemonteringen er forøvrig tregere enn et lokalt filsystem. Les mer om begrensningene i Gwoogle sin dokumentasjon om FUSE/bøttemontering.