Journalföringsblockenhet

JBD , eller journaling block device , är ett generiskt block device journaling lager i Linux-kärnan skrivet av Stephen Tweedie från Red Hat . JBD är filsystemoberoende. ext3 , ext4 och OCFS2 är kända för att använda JBD.

JBD finns i två versioner, JBD och JBD2. JBD skapades med ext3 1998. JBD2 splittrades från JBD 2006 med ext4, med målet att stödja ett 64-bitars (i motsats till 32-bitars bara i JBD) blocknummer. Som ett resultat ökas den maximala volymstorleken i ext4 till 1 EiB jämfört med 16 TiB i ext3 (förutsatt 4 KiB-block). JBD2 är bakåtkompatibel. OCFS2 från Linux 2.6.28 använder JBD2. Den gamla JBD togs bort med den dedikerade ext3-drivrutinen i Linux 4.3 (2015).

JBD-strukturer

Atomhandtag

Ett atomär handtag är i grunden en samling av alla lågnivåförändringar som sker under en enda högnivå atomär uppdatering av filsystemet. Atomhandtaget garanterar att uppdateringen på hög nivå antingen sker eller inte, eftersom de faktiska ändringarna i filsystemet rensas först efter att atomhandtaget har loggats i journalen.

Transaktion

För effektivitetens och prestandas skull grupperar JBD flera atomhandtag i en enda transaktion, som skrivs till journalen efter att en bestämd tid har gått eller det inte finns något ledigt utrymme kvar på journalen för att passa den.

Transaktionen har flera tillstånd:

  • Körs - det betyder att transaktionen fortfarande är aktiv och kan acceptera fler handtag
  • Låst - tar inte emot nya handtag, men de befintliga är fortfarande oavslutade
  • Spola - transaktionen är klar och skrivs till journalen
  • Commit - transaktionen skrivs till journalen och nu tillämpas ändringarna på filsystemet
  • Klar - transaktionen har skrivits till journalen och blockenheten. Den kan raderas från journalen.

Återhämtning

Baserat på transaktionstillstånden kan JBD bestämma vilka transaktioner som måste spelas upp (eller appliceras på nytt) till filsystemet.

Källor