Hyppää sisältöön

Docs CSC now features an automatic Finnish translation. Click here for more information.

Warning!

Puhti and Mahti will be decommissioned after Roihu becomes available. Users should clean up unnecessary files and move any required data by the end of August 2026. See the Roihu data preparation instructions for details.

Puhti scratch is very full: keep only active data there and move or delete everything else. No new Puhti scratch quota will be granted.

Datan hallinta Puhdin ja Mahdin scratch-levyillä

Tärkeä tehtävä kaikille Puhdin ja Mahdin käyttäjille on hallita sitä, mitä dataa sijaitsee projektien scratch-kansioissa. Ne on tarkoitettu vain väliaikaiseksi tallennustilaksi datalle, joka on aktiivisessa käytössä. Kaikki muu data tulisi poistaa tai tallentaa muihin paremmin soveltuviin tallennusjärjestelmiin. Käyttäjien ei oleteta käyttävän koko kiintiötään; enimmäiskiintiö on tarkoitettu vain lyhytaikaisiin käyttöpiikkeihin.

Huomaa myös, että:

  • Lustre-rinnakkaistiedostojärjestelmän suorituskyky alkaa heikentyä, kun levytilasta on käytössä noin 70 %, ja mitä täydemmiksi levyt tulevat, sitä hitaammaksi suorituskyky muuttuu. CSC on myöntänyt enemmän kiintiötä kuin levytilaa on käytettävissä, joten kaikkien käyttäjien ei ole edes mahdollista käyttää scratch-kansioitaan pidempiaikaiseen tallennukseen.
  • scratch-levyalueesta ei ole varmuuskopioita. Älä luota siihen kaiken tutkimusdatasi säilytyspaikkana.
  • Tiedostojen poistaminen voi vähentää projektisi Storage BU -kulutusta, koska ylimenevästä levytilan käytöstä yli 1 TiB:n veloitetaan.

Pyydämme ystävällisesti kaikkia käyttäjiä auttamaan levytilan käytön pitämisessä hallittavana ja suorituskyvyn kohtuullisena. Tee seuraavat toimet:

  • Poista tiedostot, joita ei enää tarvita projektisi scratch-kansiosta. Huomaa, että emme voi palauttaa vahingossa poistamiasi tiedostoja, joten tee nämä toimenpiteet huolellisesti!
  • Pakkaa tiedostot, jos se pienentää tiedostokokoa. ASCII-tekstitiedostot pakkautuvat yleensä erittäin hyvin. Testaa ensin yhdellä tiedostolla. Jos tiedostokoko pienenee 50 %, pakkaa kaikki vastaavat tiedostot. Katso täältä saatavilla olevat pakkaustyökalut.
  • Siirrä tiedostot, jotka eivät ole juuri nyt aktiivisessa käytössä mutta joiden täytyy olla myöhemmin projektin aikana saatavilla. Tyypillinen toimintamalli on siirtää tiedostot Altaaseen. Suosittelemme käyttämään a-tools-työkaluja pieniin ja keskisuuriin datansiirtoihin, erityisesti silloin kun sinulla on paljon pieniä tiedostoja. Nämä työkalut tekevät Allaksen käytöstä turvallisempaa ja voivat helpottaa datan hallintaa. Erittäin suuriin datansiirtoihin suosittelemme käyttämään rclonea. Datansiirron opastus löytyy sivulta Allas HPC -opas.
  • Arkistoi tiedostot, joiden tulee olla saatavilla pidempään kuin laskentaprojektien elinkaaren ajan. Vaihtoehtoja tähän voivat olla esimerkiksi organisaatiosi omat tallennusjärjestelmät tai IDA-turvasäilytys tutkimusdatalle.

Tunnista, missä dataasi on

Jos sinulla on suuri määrä tiedostoja, eri kansioissa olevan datamäärän analysointi voi olla aikaa vievää ja myös kuormittaa tiedostojärjestelmää. Suosituksemme työkaluista, joilla voi näyttää kansioissa olevan datamäärän:

  • Vältä käyttämästä find-valintoja kuten -size tai vastaavia
  • Vältä käyttämästä du
  • Käytä lue tai lfs find --lazy

CSC on kehittänyt likimääräisen työkalun nimeltä LUE (Lustre usage explorer) kansioissa olevan datan määrän raportointiin. Lue LUE:n dokumentaatio ennen sen käyttöä. lfs find --lazy sisältää joitakin reunatapauksia, joissa se voi olla yhtä huono kuin du tai epäonnistua hiljaisesti oikeiden kokotietojen hakemisessa. Suorita man lfs-find saadaksesi lisäohjeita ja tietoa sen rajoituksista.

Note

Riippumatta siitä, mitä työkalua käytät, sinun ei koskaan pidä yrittää listata tai käsitellä kaikkia projektisi tai scratch-kansiosi tiedostoja yhdellä komennolla. Sen sijaan komentojen tulisi kohdistua tiettyihin alihakemistoihin, joissa on rajallinen määrä tiedostoja ja dataa. Käytetyn datan kokonaismäärä on saatavilla komennolla csc-workspaces.

Tiedostojen automaattinen poisto

On olemassa käytäntö, jonka mukaan poistetaan tiedostot, jotka ovat vanhempia kuin 180 päivää (scratch-kiintiö alle 5 TiB) tai 90 päivää (scratch-kiintiö 5 TiB tai enemmän) scratch-alueelta (ei projappl-alueelta), jotta levyllä säilyy vain aktiivisesti käytetty data (tällä hetkellä käytössä vain Puhdissa).

Seuraavassa siivouksessa poistettavat tiedostot listataan niin sanottuihin "purge list" -tiedostoihin. Nämä on jaettu projekteittain, ja ne löytyvät Lustresta jostakin alla olevista sijainneista. Vain projektiryhmien jäsenet voivat käyttää projektihakemistoja. Jos projektisi on juuri luotu, sillä ei ehkä vielä ole omaa alihakemistoa purge_lists-hakemistossa, jolloin se ei osallistu automaattiseen siivoukseen.

  • /scratch/purge_lists/<PROJECT NAME>/path_summary.txt
  • /fmi/scratch/purge_lists/<PROJECT NAME>/path_summary.txt (vain Puhdissa, FMI-projekteille)

Jos path_summary.txt-tiedostoa ei ole olemassa, projektissasi ei ollut yhtään tiedostoa, joka vastaisi siivouskriteerejä, eikä siitä siis poisteta mitään. Osoittaakseen, että tiedosto puuttuu tarkoituksella, CSC sijoittaa projektisi purge_lists-alihakemistoon tiedoston nimeltä nothing-to-remove-for-your-project, joten tarkista myös tämän tiedoston olemassaolo.

Osana automaattista siivousprosessia tiedostojen nimet muuttuvat. Ennen siivouksen alkamista jokaisella siivoukseen kuuluvalla projektilla on tiedosto nimeltä path_summary.txt. Erityistapauksissa, joissa projekti on vapautettu tulevasta siivouksesta tai tarvitsee enemmän aikaa tiedostojen siirtämiseen, ylläpitäjät nimeävät tiedoston uudelleen joksikin muuksi, yleensä path_summary.txt-later-delete. Kun projekti on käsitelty automaattisessa siivouksessa, tiedosto nimetään uudelleen muotoon path_summary.txt-stashed. Nämä tiedostot ovat edelleen projektien luettavissa, joten listaan voi viitata myös siivouksen jälkeen. Edellisen kierroksen tiedostot arkistoidaan, kun seuraava siivouskierros on alkamassa. Voit tarkistaa, onko projektisi purge list päivitetty hiljattain, tarkistamalla sen viimeisimmän muokkauspäivän. Alla olevassa esimerkissä tiedosto on muutaman kuukauden vanha, joten se on selvästi edelliseltä siivouskierrokselta:

$ stat -c %y /scratch/purge_lists/project_2001659/path_summary.txt-stashed
2023-05-23 00:35:28.000000000 +0300
$ date +%F
2023-08-04

Toinen tiedosto, joka sijoitetaan jokaisen projektin purge_lists-hakemistoon, on total_size.txt. Tämä tiedosto sisältää valmiiksi lasketun kokoarvion path_summary.txt-tiedostojen lukujen perusteella. Tämä tiedosto on olemassa jokaiselle projektille, ja se luodaan automaattisesti, kun purge listit generoidaan. Tiedosto voi näyttää tältä:

$ cat /scratch/purge_lists/project_2001659/total_size.txt
Total size: 798343125192 bytes = 743.515 GiB = 0.726 TiB

Näiden tietojen avulla voit arvioida, kuinka paljon aikaa datan varmuuskopiointi muualle saattaa vaatia, jos haluat säilyttää kaiken purge listillä olevan datan Puhdin scratch-tiedostojärjestelmän ulkopuolella. Tiedostojärjestelmätyökalut, joita CSC käyttää poistettavien tiedostojen listan tuottamiseen, luovat tiedostoja, jotka ovat melko laveita ja vaikealukuisia. Käyttämällä seuraavassa osiossa kuvattua LCleaner-työkalua käyttäjät voivat saada olennaiset tiedot käyttäjäystävällisemmässä muodossa.

LCleanerin ja selainkäyttöliittymän käyttö automaattisesti poistettavien tiedostojen tarkistamiseen

LCleaner on CSC:n kehittämä työkalu, jonka tarkoitus on auttaa sinua selvittämään, mitä tiedostoja projektissasi on kohdistettu automaattiseen poistoon.

Suorita kirjautumissolmuilla lcleaner --help, niin näet, mitä valintoja LCleaner tukee.

lcleanerin lisäksi Puhdin selainkäyttöliittymä tarjoaa graafisen työkalun "File Deletion Explorer (beta)" purge listien tarkasteluun. Tämä työkalu löytyy selainkäyttöliittymän "Tools"-pudotusvalikosta. Se voi visualisoida purge listin sisällön puukarttana, näyttää tiedostojen kokojakauman ja tehdä tiedostonimien pääteanalyysiä. Voit myös suodattaa tiedostoja tiedostopolun ja nimen perusteella sekä tulostaa suodatetut listat tekstitiedostoiksi myöhempiä komentorivitoimia varten.

LCleaner-esimerkkejä

Tarkista, onko projektillasi path_summary.txt-tiedosto

Ensimmäinen tarkistettava asia on, onko projektillasi todella path_summary.txt-tiedosto. Kaikilla projekteilla ei automaattisesti ole sellaista, vaan vain niillä, joilla on jotain siivottavaa.

# Check if your project has a path_summary.txt file
my_project="project_2001659" # Replace with your own project name
ls "/scratch/purge_lists/${my_project:?}/"
# Or if you are in an FMI project on Puhti:
ls "/fmi/scratch/purge_lists/${my_project:?}/"

Jos näet hakemistossa path_summary.txt-tiedoston, jatka lukemista selvittääksesi, mitä tiedostoja listalla on. Jos taas löydät tiedoston nimeltä nothing-to-remove-for-your-project, projektissasi ei ole mitään, mikä poistettaisiin automaattisesti.

Jos haluat nopean, kopioi-ja-liitä-valmiin ratkaisun, käytä alla olevaa pientä skriptiä:

# Check all of the projects you belong to in one go:

for g in $(/usr/bin/groups) ; do
  if [ -d "/scratch/$g" -a ! -L "/scratch/$g" ]; then
    dir="/scratch/purge_lists/$g" ;
  elif [ -d "/fmi/scratch/$g" ]; then
    dir="/fmi/scratch/purge_lists/$g";
  else
    continue;
  fi ;
  echo -n "- Project '$g': ";
  if [ ! -d "${dir:?}" ]; then
    echo "doesn't have a purge_lists subdirectory. No files will be removed.";
    continue;
  fi ;
  if [ -f "${dir:?}/path_summary.txt" ]; then
    echo "has files that will be removed." ;
  elif [ -f "${dir:?}/nothing-to-remove-for-your-project" ]; then
    echo "is not included in the automatic cleaning.";
  else
    echo "is unclear, based on this script. Check with Service desk what to do.";
  fi ;
done

Listaa tiedostosi

Saadaksesi yksinkertaisen listan kaikista purge listilläsi olevista tiedostopoluista, anna vain path_summary.txt-tiedoston polku argumenttina:

# List all files in your purge list:
lcleaner "/scratch/purge_lists/${my_project:?}/path_summary.txt"

Jos path_summary.txt-tiedostosi on suuri (yli 100 MB), työkalun suorittaminen voi kestää jonkin aikaa. Voit säästää aikaa ja resursseja tallentamalla tuloksen tulostiedostoon:

# List all files in your purge list into an output file in your home folder:
lcleaner --out-file ~/purge_list "/scratch/purge_lists/${my_project:?}/path_summary.txt"

# Alternatively, you can redirect the standard output with the bash shell:
lcleaner "/scratch/purge_lists/${my_project:?}/path_summary.txt" > ~/purge_list

# Check the output with less, or your preferred text editor
less ~/purge_list

Jos haluat etsiä tietyn tiedoston tai hakemiston, voit käyttää siihen grep-komentoa. Voit etsiä suoraan path_summary.txt-tiedostosta, tai jos tallensit lcleaner-komennon tulosteen johonkin yllä olevien komentojen avulla, voit käyttää sitä tiedostoa.

# Search for directories to check if they are included in the purge list
my_project="project_2001659" # Replace with your own project name!
grep "/scratch/${my_project:?}/important-dir" "/scratch/purge_lists/${my_project:?}/path_summary.txt"
# Or search the purge_list if you saved it:
grep "/scratch/${my_project:?}/important-dir" ~/purge_list

# If there are no matches, grep will not print anything.

Etsi listan suurimmat tiedostot

LCleanerissä on valinta tiedostojen lajitteluun koon mukaan. Tämän valinnan nimi on --sort-by-size, ja se lajittelee aina laskevaan järjestykseen (eli suurimmat tiedostot ensin). Jos haluat nähdä tiedostojen koot niitä tulostettaessa, käytä --csv-valintaa. Oletuksena tulostetaan vain tiedostopolut. Voit myös rajata tulosteen sisältämään tietyn määrän tiedostoja parametrilla --limit N, missä N on haluamasi rivien määrä.

# Print the file paths to be purged in size order:
lcleaner --sort-by-size "/scratch/purge_lists/${my_project:?}/path_summary.txt"

# Print the 10 biggest files:
lcleaner --sort-by-size --limit 10 "/scratch/purge_lists/${my_project:?}/path_summary.txt"

# Print the 10 biggest files, and their sizes in bytes:
lcleaner --sort-by-size --limit 10 --csv "/scratch/purge_lists/${my_project:?}/path_summary.txt"

Poista purge listillä olevat tiedostosi

Kannustamme sinua poistamaan tiedostot, joita et tarvitse, sen sijaan että odottaisit automaattisen siivouksen tapahtumista. Jos haluat poistaa kaikki path_summary.txt-tiedostossa listatut tiedostot, voit suorittaa seuraavan komennon:

Warning-label

Tämän osion komennot poistavat tiedostosi! Varmista, että olet tarkistanut poistettavien tiedostojen listan huolellisesti! Varmista myös, että olet varmuuskopioinut tiedostot, jotka haluat säilyttää (klusterin ulkopuolelle), ennen komentojen suorittamista. Tämä toimenpide on peruuttamaton.

Note

Poistoprosessi voi kestää huomattavan kauan (useita tunteja tiedostojen määrästä riippuen), joten se kannattaa käynnistää screen- tai tmux-istunnossa, jotta voit katkaista SSH-istuntosi poistamisen jatkuessa taustalla.

# Start a screen session
screen
# Delete all of the files on your purge list:
# Replace the "/path/to/my/path_summary.txt" with the path to your project's path_summary.txt
lcleaner -0 /path/to/my/path_summary.txt | xargs -0 -n 50 rm -vf --
# Then you can press "Ctrl + a" and then "d" to disconnect from the screen and keep
# the deletion running in the background.
# Run "screen -r" to reattach your screen.
# Close the screen session by typing "exit" in the shell.

Jos haluat poistaa vain osan tiedostoista, esimerkiksi tietyn hakemiston sisältä, voit käyttää esimerkiksi seuraavanlaista komentoa:

# Delete only files on the list which are inside /scratch/$my_project/delete-this-dir/
screen lcleaner -0 /path/to/my/path_summary.txt | grep -zZ "/scratch/${my_project:?}/delete-this-dir/" | xargs -0 -n 50 rm -vf --
# Ctrl + a, d to detach from the screen.

LCleanerin tulostusmuodot

Jos haluat nähdä poistettavaksi tulevien tiedostojen koot, voit käyttää joko JSON- tai CSV-muotoa. Huomaa, että jos haluat käyttää useita tulostusmuotoja samanaikaisesti, sinun täytyy määrittää myös tulostiedoston polku. -0- tai --nullbyte-parametrien käyttö tulostaa tiedostopolut null-tavulla eroteltuina, mikä voi olla hyödyllistä tiedostopolkujen välilyönteihin liittyvien ongelmien välttämiseksi.

# Print your purge list as CSV output with file paths and sizes.
# Note that the CSV format also prints a header row.
lcleaner --csv "/scratch/purge_lists/${my_project:?}/path_summary.txt"

# Print your purge list as JSON output with file paths and sizes:
lcleaner --json "/scratch/purge_lists/${my_project:?}/path_summary.txt"
# TIP: You can pipe the output into the jq program to prettify the output.
# The dot at the end is a mandatory argument to jq.
lcleaner --json "/scratch/purge_lists/${my_project:?}/path_summary.txt" | jq .

# Output both JSON and CSV into purge_list.json and purge_list.csv:
lcleaner --json --csv --out-file purge_list "/scratch/purge_lists/${my_project:?}/path_summary.txt"

# Output file paths separated by null bytes:
lcleaner -0 "/scratch/purge_lists/${my_project:?}/path_summary.txt"
# Usually you will want to pipe null-byte-separated output into "xargs -0" and do some
# further processing with it. For example like this:
lcleaner -0 --limit 3 "/scratch/purge_lists/${my_project:?}/path_summary.txt" \
  | xargs -0 -Ifilepath echo "I should run: rm -vf 'filepath'"

Tulosteesimerkkejä:

# Plain text:
[westersu@puhti-login11 ~]$ lcleaner path_summary.txt | head -3
/scratch/westersu/my-old-files/file1
/scratch/westersu/my-old-files/file2
/scratch/westersu/my-old-files/file3

# CSV:
[westersu@puhti-login11 ~]$ lcleaner --csv path_summary.txt | head -4
"path","size"
"/scratch/westersu/my-old-files/file1","1704"
"/scratch/westersu/my-old-files/file2","452"
"/scratch/westersu/my-old-files/file3","4951"

# JSON, piped into jq:
[westersu@puhti-login11 ~]$ lcleaner --json path_summary.txt | jq .
{
  "lustre_files": [
    {
      "size": 1704,
      "path": "/scratch/westersu/my-old-files/file1"
    },
    ...
  ]
}

# Null byte xargs:
[westersu@puhti-login11 ~]$ lcleaner -0 --limit 3 path_summary.txt \
>   | xargs -0 -Ifilepath echo "I should run: rm -vf 'filepath'"
I should run: rm -vf '/scratch/westersu/my-old-files/file1'
I should run: rm -vf '/scratch/westersu/my-old-files/file2'
I should run: rm -vf '/scratch/westersu/my-old-files/file3'

Huomioita LCleanerin käytöstä

Tässä osiossa kuvataan joitakin asioita, jotka voivat olla hyödyllisiä tietää LCleanerin toiminnasta tai siitä, miksi yllä olevat komentoesimerkit on rakennettu juuri kyseisellä tavalla.

  • Joskus lcleaner tulostaa virheitä riveistä, joita se ei pystynyt jäsentämään. Jos virheitä on, loppuun tulostetaan varoitus, joka kertoo, että virheitä oli vähintään yksi. Varoitukset ovat esimerkiksi muotoa: "We detected N errors during the execution. Please check the logs, for more information!" Virheet kertovat, millä rivinumerolla ongelmallinen teksti oli, joten voit mennä tarkistamaan sen käsin.
    • Vinkki: Jos haluat tulostaa vain tietyn rivin, esimerkiksi path_summary.txt-tiedoston rivin 123, voit käyttää tätä komentoa: sed -n 123p /path/to/path_summary.txt
  • Jos haluat tallentaa lcleaner-lokituksen, voit ohjata vakiovirran tiedostoon. Tästä voi olla hyötyä, jos kohtaat ongelmia ja haluat apua tilanteen vianmääritykseen.
    • lcleaner --log-level debug path_summary.txt 2> ~/lcleaner-debug-$(date +%s).log
  • -0-valinnan käyttö sekä lcleaner- että xargs-komennon kanssa tämän sivun esimerkkikomennoissa on suositeltavaa, jotta vältetään ongelmat tiedostonimissä olevien välilyöntien kanssa.
  • LCleanerissä on myös joitakin ylläpidollisia toimintoja, joita ei ole tarkoitettu tavallisille käyttäjille ja jotka joissakin tapauksissa eivät toimi ilman korotettuja oikeuksia. Kaikki, missä mainitaan --admin-mode-lippu, voidaan turvallisesti jättää huomiotta.

LCleanerin vianmääritys

Jos huomaat ohjelmavirheitä, ilmoita niistä CSC:n Service Deskille.

Suomenkielinen tekoälykäännös

Sisällössä voi esiintyä virheellistä tietoa tekoälykäännöksestä johtuen.

Klikkaa tästä antaaksesi palautetta