Andra intervjun med Eduard Shishkin, utvecklare av Reiser4 FS

Den andra intervjun med Eduard Shishkin, utvecklare av filsystemet Reiser4, har publicerats.

Till att börja med, pÄminn lÀsarna om var och vem du arbetar för.

Jag arbetar som huvudlagringsarkitekt pÄ Huawei Technologies, German Research Center. PÄ virtualiseringsavdelningen arbetar jag med olika aspekter av datalagring. Mina aktiviteter Àr inte relaterade till ett specifikt operativsystem.

Förbinder du dig för nÀrvarande till huvudkÀrngrenen?

Mycket sĂ€llan, och bara om min arbetsgivare krĂ€ver det. Förra gĂ„ngen var för ungefĂ€r tre Ă„r sedan skickade jag patchar för att öka genomströmningen för lagring som delas pĂ„ vĂ€rdar med hjĂ€lp av 9p-protokollet (ett annat namn för den hĂ€r verksamheten Ă€r VirtFS). En viktig anmĂ€rkning mĂ„ste göras hĂ€r: Ă€ven om jag har arbetat med Linux lĂ€nge, har jag aldrig varit ett fan av det, det vill sĂ€ga jag "andas jĂ€mnt", som med allt annat. I synnerhet om jag mĂ€rker en brist kan jag pĂ„peka den högst en gĂ„ng. Och sĂ„ att du sedan kan följa nĂ„gon och övertala dem – det hĂ€r kommer inte att hĂ€nda.

Jag minns förra gÄngen, för tio Är sedan, du var ganska kritisk till kÀrnans utvecklingsstil. Ur din (eller kanske företagets) synvinkel, har nÄgot förÀndrats, har samhÀllet blivit mer lyhört eller inte? Om inte, vem tror du Àr skyldig?

Jag har aldrig sett nÄgra förÀndringar till det bÀttre. Gemenskapens huvudproblem Àr att ersÀtta vetenskap med politisk teknologi, personliga relationer, majoritetsopinioner, populism, rÄd frÄn "inre röster", ruttna kompromisser, allt annat Àn vetenskap. Datavetenskap, vad man Àn kan sÀga, Àr först och frÀmst en exakt vetenskap. Och om nÄgon börjar proklamera sitt eget vÀrde för 2x2, annorlunda Àn 4, under "Linux way"-flaggan, eller under nÄgon annan flagga, Àr det osannolikt att detta kommer att orsaka nÄgot annat Àn skada.

Alla problem beror i första hand pÄ inkompetens och bristande utbildning hos de som fattar beslut. Om en chef Àr inkompetent kan han inte fatta ett objektivt, adekvat beslut. Om han ocksÄ Àr okultiv, kan han inte hitta en kompetent specialist som kommer att ge honom rÀtt rÄd. Med stor sannolikhet kommer valet att falla pÄ en bedragare som sÀger "till synes korrekta saker." En korrupt miljö utvecklas alltid kring inkompetenta ensamma ledare. Historien kÀnner dessutom inga undantag i detta avseende, och samhÀllet Àr den tydligaste bekrÀftelsen pÄ detta.

Hur bedömer du framstegen i Btrfs utveckling? Blev denna FS av med barnsjukdomar? Hur positionerar du det för dig sjÀlv - som en FS "för hemmet" eller för företagsbruk ocksÄ?

Jag blev inte av med det. Allt som jag nÀmnde för 11 Är sedan Àr fortfarande relevant idag. Ett av problemen med Btrfs som gör den olÀmplig för allvarliga behov Àr problemet med ledigt utrymme. Jag pratar inte ens om det faktum att anvÀndaren uppmanas att springa till butiken för en ny disk i situationer dÀr nÄgon annan FS skulle visa mycket ledigt utrymme pÄ partitionen. OförmÄgan att genomföra en operation pÄ en logisk volym pÄ grund av brist pÄ ledigt utrymme Àr inte heller det vÀrsta. Det vÀrsta Àr att en oprivilegierad anvÀndare nÀstan alltid kan, kringgÄ eventuella diskkvoter, beröva alla ledigt utrymme pÄ ganska kort tid.

Det ser ut sÄ hÀr (testat för LinuxkÀrna 5.12). Ett script lanseras pÄ ett nyinstallerat system, som i en slinga skapar filer med vissa namn i hemkatalogen, skriver data till dem med vissa förskjutningar och sedan raderar dessa filer. Efter en minuts körning av det hÀr skriptet hÀnder inget ovanligt. Efter fem minuter ökar andelen upptaget utrymme pÄ partitionen nÄgot. Efter tvÄ till tre timmar nÄr den 50 % (med ett initialt vÀrde pÄ 15 %). Och efter fem eller sex timmars arbete kraschar skriptet med felet "det finns inget ledigt utrymme pÄ partitionen." Efter detta kan du inte lÀngre skriva ens en 4K-fil till din partition.

En intressant situation uppstÄr: det slutade med att du inte skrev nÄgot till partitionen, och allt ledigt utrymme (cirka 85%) försvann nÄgonstans. Analys av en sektion som Àr föremÄl för en sÄdan attack kommer att avslöja mÄnga trÀdnoder som bara innehÄller ett objekt (ett objekt utrustat med en nyckel), flera byte i storlek. Det vill sÀga innehÄllet som tidigare upptog 15% av diskutrymmet visade sig vara jÀmnt "smetat" över hela partitionen sÄ att det inte finns nÄgonstans att skriva en ny fil, eftersom dess nyckel Àr större Àn alla befintliga, och den fria blocken pÄ partitionen har tagit slut.

Dessutom sker allt detta redan pÄ den grundlÀggande Btrfs-konfigurationen (utan nÄgra ögonblicksbilder, undervolymer, etc.), och det spelar ingen roll hur du bestÀmmer dig för att lagra filkroppar i den FS (som "fragment" i ett trÀd eller som omfattningar av oformaterade block) - slutresultatet blir detsamma.

Du kommer inte att kunna utsÀtta andra uppströms filsystem för en sÄdan attack (oavsett vad de sÀger till dig). Jag förklarade orsaken till problemet för lÀnge sedan: detta Àr en fullstÀndig perversion av B-tree-konceptet i Btrfs, vilket gör det möjligt för det att spontant eller avsiktligt degenerera. I synnerhet under vissa belastningar kommer ditt filsystem kontinuerligt att "falla isÀr" under drift pÄ egen hand, utan hjÀlp utifrÄn. Det Àr tydligt att alla typer av "tryckande" bakgrundsprocesser kommer att rÀdda dagen bara pÄ enskilda skrivbord.

PÄ kollektiva servrar kommer en angripare alltid att kunna "komma före" dem. Systemadministratören kommer inte ens att kunna avgöra vem som exakt mobbade honom. Det snabbaste sÀttet att fixa detta problem i Btrfs Àr att ÄterstÀlla strukturen hos ett vanligt B-trÀd, d.v.s. designa om skivformatet och skriva om betydande delar av Btrfs-koden. Detta kommer att ta 8-10 Är, inklusive felsökning, förutsatt att utvecklarna strikt följt de ursprungliga artiklarna om relevanta algoritmer och datastrukturer och inte spelade spelet "trasig telefon", som Àr vanligt (och uppmuntras) i "Linux" sÀtt".

HÀr behöver vi ocksÄ lÀgga till den tid som krÀvs för att utvecklare ska förstÄ allt detta. Det Àr hÀr det blir svÄrare. 10 Är rÀckte i alla fall inte för att de skulle förstÄ. Tja, tills dess kan du inte hoppas pÄ ett mirakel. Det kommer inte att hÀnda i form av ett monteringsalternativ "som du och jag inte visste om", eller i form av en lapp som "bara Àr en affÀrsfrÄga" att förbereda. För varje sÄdan hastig "fix" kommer jag att presentera ett nytt scenario av degeneration. B-trÀd Àr ett av mina favoritÀmnen, och jag mÄste sÀga att dessa strukturer inte tolererar friheter med sig sjÀlva!

Hur placerar jag Btrfs för mig sjÀlv? Som nÄgot som absolut inte kan kallas ett filsystem, Àn mindre anvÀndas. Eftersom FS per definition Àr ett OS-undersystem som ansvarar för effektiv hantering av "diskutrymmes"-resursen, vilket vi inte ser i fallet med Btrfs. Tja, förestÀll dig att du kom till butiken för att köpa en klocka för att inte komma för sent till jobbet, och istÀllet för en klocka sÄlde de dig en elektrisk grill med timer i max 30 minuter. SÄ situationen med Btrfs Àr Ànnu vÀrre.

NÀr jag tittar igenom e-postlistor stöter jag ofta pÄ pÄstÄendet att effektiv hantering av diskutrymme inte lÀngre Àr relevant pÄ grund av de billiga enheterna. Detta Àr fullstÀndigt nonsens. Utan en effektiv diskutrymmeshanterare kommer operativsystemet att bli sÄrbart och oanvÀndbart. Oavsett kapaciteten pÄ diskarna pÄ din maskin.

Jag skulle vilja be om en kommentar om upphörandet av Btrfs-stöd i RHEL.

Det finns inget speciellt att kommentera hÀr, allt Àr vÀldigt tydligt. De hade det ocksÄ som en "teknikförhandstitt". SÄ jag gick inte igenom denna mycket "förhandsvisning". LÄt inte denna etikett hÀnga för evigt! Men de kan inte lansera en felaktig bydesign-produkt med fullt stöd. RHEL Àr ett företag, det vill sÀga föreskrivna varu-pengarrelationer. Red Hat kan inte mobba anvÀndare som de gör pÄ Btrfs e-postlista. FörestÀll dig bara situationen: en klient som betalade sina surt förvÀrvade pengar för disken och Àven du för support, vill förstÄ var hans diskutrymme tog vÀgen efter att han inte skrivit ner nÄgot. Vad kommer du att svara honom pÄ detta?

Ytterligare. Bland Red Hats kunder finns vÀlkÀnda storbanker och börser. FörestÀll dig vad som skulle hÀnda om de utsattes för DoS-attacker baserat pÄ den nÀmnda sÄrbarheten i Btrfs. Vem tror du Àr ansvarig för detta? Till de som Àr pÄ vÀg att peka finger pÄ raden i GPL-licensen, dÀr det stÄr skrivet att författaren inte Àr ansvarig för nÄgonting, kommer jag genast att sÀga: "gömma bort det!" Red Hat kommer att svara, och pÄ ett sÄdant sÀtt att det inte verkar tillrÀckligt! Men jag vet att Red Hat inte stÄr inför den hÀr typen av problem, med tanke pÄ deras sÀrskilt starka team av QA-ingenjörer som jag hade möjlighet att arbeta nÀra under min tid.

Varför fortsÀtter vissa företag att stödja Btrfs i sina företagsprodukter?

Observera att prefixet "företag" i produktnamnet inte betyder mycket. Enterprise Àr ett mÄtt pÄ ansvar som Àr inbÀddat i avtalsförhÄllandet med kunden. Jag kÀnner bara till ett företag baserat pÄ GNU/Linux - RHEL. Allt annat, ur min synvinkel, presenteras bara som ett företag, men Àr inte ett. Och slutligen, om det finns en efterfrÄgan pÄ nÄgot, kommer det alltid att finnas ett utbud (i vÄrt fall Àr detta det nÀmnda "stödet"). Det finns efterfrÄgan pÄ absolut allt, inkl. och oanvÀndbar programvara. Hur en sÄdan efterfrÄgan bildas och vem som driver den Àr ett annat Àmne.

SÄ jag skulle inte dra nÄgra slutsatser efter att Facebook ryktas ha distribuerat Btrfs pÄ sina servrar. Dessutom skulle jag rekommendera att noggrant hÄlla adresserna till dessa servrar hemliga av ovanstÄende skÀl.

Varför har sĂ„ mycket anstrĂ€ngning lagts pĂ„ att rensa upp XFS-koden pĂ„ sistone? Till en början Ă€r det hĂ€r ett filsystem frĂ„n tredje part, och ext4 har varit stabilt under lĂ„ng tid och har kontinuitet frĂ„n tidigare lika stabila versioner. Vilket intresse har Red Hat för XFS? Är det vettigt att aktivt utveckla tvĂ„ filsystem som har liknande syfte - ext4 och XFS?

Jag minns inte vad som motiverade detta. Det Àr mycket möjligt att initiativet kom frÄn Red Hat-kunder. Jag minns att forskning av det hÀr slaget utfördes: pÄ vissa filsystem uppströms skapades ett gigantiskt antal objekt pÄ avancerade enheter av den nya generationen. Enligt resultaten betedde sig XFS bÀttre Àn ext4. SÄ de började marknadsföra det som det mest lovande. Jag skulle i alla fall inte leta efter nÄgot sensationellt hÀr.

För mig Ă€r det som att de har ersatt en syl med tvĂ„l. Det Ă€r ingen idĂ© att utveckla ext4 och XFS. BĂ„de parallellt och nĂ„gon av dem att vĂ€lja mellan. Inget gott kommer att komma av detta. Även i naturen finns det ofta situationer nĂ€r det finns mycket potential för tillvĂ€xt, men det finns inget utrymme att vĂ€xa. I det hĂ€r fallet uppstĂ„r olika bisarrt fula nya tillvĂ€xter, som alla pekar pĂ„ ("Åh, titta, vad du inte kommer att se i det hĂ€r livet!").

Tror du att frÄgan om lagerövertrÀdelse har lösts (i negativ bemÀrkelse) med tillkomsten av krypteringsfunktioner i ext4, F2FS (för att inte tala om RAID i Btrfs)?

Generellt sett Àr införandet av alla nivÄer och att fatta beslut om att de inte krÀnks, vanligtvis en frÄga om policy, och jag Ätar mig inte att kommentera nÄgonting hÀr. De objektiva aspekterna av lagerövertrÀdelse Àr av lite intresse för nÄgon, men vi kan övervÀga nÄgra av dem med exemplet pÄ övertrÀdelse "frÄn ovan", nÀmligen implementeringen i FS av funktionalitet som redan finns pÄ blocklagret. En sÄdan "krÀnkning" Àr motiverad med endast sÀllsynta undantag. För varje sÄdant fall mÄste du först bevisa tvÄ saker: att det verkligen behövs, och att utformningen av systemet inte kommer att skadas av att göra det.

Till exempel Àr spegling, som traditionellt har varit en aktivitet för blocklagret, vettigt att implementera pÄ filsystemnivÄ. Av olika anledningar. Till exempel intrÀffar "tyst" datakorruption (bitröta) pÄ hÄrddiskar. Detta Àr nÀr enheten fungerar korrekt, men blockdatan ovÀntat skadas under pÄverkan av ett hÄrt gammakvantum som emitteras av en avlÀgsen kvasar, etc. Det vÀrsta Àr om det hÀr blocket visar sig vara ett FS-systemblock (superblock, bitmappsblock, lagringstrÀdsnod, etc.), eftersom detta sÀkerligen kommer att leda till kÀrnpanik.

Observera att speglarna som erbjuds av blocklagret (sÄ kallad RAID 1) inte kommer att rÀdda dig frÄn detta problem. NÄvÀl, verkligen: nÄgon borde kontrollera kontrollsummorna och lÀsa repliken i hÀndelse av misslyckande? Dessutom Àr det vettigt att spegla inte bara allt, utan bara metadata. Vissa viktiga data (till exempel körbara filer för kritiska applikationer) kan lagras som metadata. I det hÀr fallet fÄr de samma sÀkerhetsgarantier. Det Àr vettigt att anförtro skyddet av ÄterstÄende data till andra delsystem (kanske till och med anvÀndarapplikationer) - vi har tillhandahÄllit alla nödvÀndiga villkor för detta.

SÄdana "ekonomiska" speglar har rÀtt att existera, och de kan bara organiseras effektivt pÄ filsystemsnivÄ. Annars Àr lagövertrÀdelser att belamra ett delsystem med duplicerad kod för vissa mikroskopiska fördelar. Ett slÄende exempel pÄ detta Àr implementeringen av RAID-5 med FS. SÄdana lösningar (egen RAID / LVM i filsystemet) dödar det senare i arkitektoniska termer. Det bör ocksÄ noteras hÀr att lagerövertrÀdelser "sÀtts i drift" av olika typer av marknadsföringsbedragare. I avsaknad av nÄgra idéer lÀggs funktionalitet som lÀnge har implementerats pÄ angrÀnsande nivÄer till undersystemen, detta presenteras som en ny extremt anvÀndbar funktion och drivs aktivt.

Reiser4 anklagades för att ha brutit mot nivÄerna "underifrÄn". Baserat pÄ att filsystemet inte Àr monolitiskt, som alla andra, utan modulÀrt, gjordes ett ogrundat antagande att det gör vad nivÄn ovan (VFS) ska göra.

Är det möjligt att tala om döden av ReiserFS v3.6 och till exempel JFS? Den senaste tiden har de nĂ€stan inte fĂ„tt nĂ„gon uppmĂ€rksamhet i kĂ€rnan. Är de förĂ„ldrade?

HĂ€r mĂ„ste vi definiera vad en mjukvaruprodukts död betyder. Å ena sidan anvĂ€nds de framgĂ„ngsrikt (det Ă€r trots allt vad de skapades för), vilket betyder att de lever. Å andra sidan kan jag inte tala för JFS (jag vet inte sĂ„ mycket), men ReiserFS (v3) Ă€r vĂ€ldigt svĂ„r att anpassa till nya trender (testat i praktiken). Detta innebĂ€r att utvecklare i framtiden inte kommer att uppmĂ€rksamma det, utan till de som Ă€r lĂ€ttare att anpassa. FrĂ„n denna sida visar det sig att den tyvĂ€rr Ă€r död i arkitektoniskt hĂ€nseende. Jag skulle inte alls manipulera begreppet "moraliskt förĂ„ldrat". Det gĂ€ller till exempel bra för en garderob, men inte för mjukvaruprodukter. Det finns ett begrepp om underlĂ€gsenhet och överlĂ€gsenhet i nĂ„got. Jag kan absolut sĂ€ga att ReserFS v3 nu Ă€r sĂ€mre Ă€n Reiser4 i allt, men i vissa typer av arbetsbelastning Ă€r den överlĂ€gsen alla andra uppströms FS:er.

KÀnner du till utvecklingen av FS Tux3 och HAMMER/HAMMER2 (FS för DragonFly BSD)?

Ja, vi vet. I Tux3 var jag en gÄng intresserad av tekniken för deras ögonblicksbilder (de sÄ kallade "versionspekarna"), men i Reiser4 kommer vi med största sannolikhet att gÄ en annan vÀg. Jag har lÀnge funderat pÄ att stödja ögonblicksbilder och har Ànnu inte bestÀmt mig för hur jag ska implementera dem för enkla Reiser4-volymer. Faktum Àr att den nymodiga "lata" referensrÀknartekniken som föreslagits av Ohad Rodeh bara fungerar för B-trÀd. Vi har dem inte. För de datastrukturer som anvÀnds i Reiesr4 Àr "lata" rÀknare inte definierade - för att introducera dem Àr det nödvÀndigt att lösa vissa algoritmiska problem, som ingen har tagit pÄ sig Ànnu.

Enligt HAMMER: Jag lĂ€ste en artikel frĂ„n skaparen. Inte intresserad. Återigen, B-trĂ€d. Denna datastruktur Ă€r hopplöst förĂ„ldrad. Vi övergav det under förra seklet.

Hur bedömer du den vÀxande efterfrÄgan pÄ nÀtverkskluster-FS:er som CephFS/GlusterFS/etc? InnebÀr detta krav en förÀndring av utvecklarnas prioriteringar mot nÀtverks-FS och otillrÀcklig uppmÀrksamhet pÄ lokal FS?

Ja, en sĂ„dan förĂ€ndring av prioriteringarna har skett. Utvecklingen av lokala filsystem har stagnerat. TyvĂ€rr, att göra nĂ„got betydande för lokala volymer Ă€r nu ganska svĂ„rt och inte alla kan göra det. Ingen vill satsa pĂ„ sin utveckling. Det Ă€r ungefĂ€r detsamma som att be en kommersiell organisation att anslĂ„ pengar till matematisk forskning – utan nĂ„gon entusiasm kommer de att frĂ„ga dig hur du kan tjĂ€na pengar pĂ„ ett nytt teorem. Nu Ă€r en lokal FS nĂ„got som magiskt framstĂ„r som "utanför lĂ„dan" och "bör alltid fungera", och om det inte fungerar, orsakar det oadresserat gnĂ€ll som: "Ja, vad tĂ€nker de!"

DÀrav bristen pÄ uppmÀrksamhet till lokala FS, Àven om det fortfarande finns mycket arbete pÄ det omrÄdet. Och ja, alla har vÀnt sig till distribuerad lagring, som bygger pÄ redan befintliga lokala filsystem. Det Àr vÀldigt pÄ modet nu. Frasen "Big Data" orsakar en adrenalinkick för mÄnga, associerar den med konferenser, workshops, höga löner etc.

Hur rimligt Àr det i princip att implementera nÀtverksfilsystemet i kÀrnutrymme snarare Àn i anvÀndarutrymme?

Ett mycket rimligt tillvÀgagÄngssÀtt som Ànnu inte har implementerats nÄgonstans. I allmÀnhet Àr frÄgan om i vilket utrymme ett nÀtverksfilsystem ska implementeras ett "tveeggat svÀrd." Tja, lÄt oss titta pÄ ett exempel. Klienten registrerade data pÄ en fjÀrrmaskin. De föll in i hennes sidcache i form av smutsiga sidor. Detta Àr jobbet för ett "tunn gateway" nÀtverksfilsystem i kÀrnutrymme. DÄ kommer operativsystemet förr eller senare att be dig att skriva dessa sidor till disken för att frigöra dem. DÄ kommer IO-vidarebefordran (sÀndande) nÀtverks FS-modulen in i bilden. Det bestÀmmer vilken servermaskin (servernod) dessa sidor ska gÄ till.

Sedan tar nÀtverksstacken över (och som vi vet Àr den implementerad i kÀrnutrymmet). DÀrefter tar servernoden emot det paketet med data eller metadata och instruerar backend-lagringsmodulen (d.v.s. den lokala FS som arbetar i kÀrnutrymmet) att spela in allt det hÀr. SÄ vi har reducerat frÄgan till var modulerna "sÀndande" och "mottagande" ska fungera. Om nÄgon av dessa moduler körs i anvÀndarutrymmet kommer detta oundvikligen att leda till kontextbyte (pÄ grund av behovet av att anvÀnda kÀrntjÀnster). Antalet sÄdana switchar beror pÄ implementeringsdetaljerna.

Om det finns mÄnga sÄdana switchar kommer lagringskapaciteten (I/O-prestanda) att minska. Om din backend-lagring bestÄr av lÄngsamma diskar, kommer du inte att mÀrka en betydande nedgÄng. Men om du har snabba diskar (SSD, NVRAM, etc.) blir kontextvÀxling redan en "flaskhals" och genom att spara pÄ kontextvÀxling kan prestandan ökas avsevÀrt. Det vanliga sÀttet att spara pengar Àr att flytta moduler till kÀrnutrymmet. Till exempel fann vi att flytta 9p-servern frÄn QEMU till kÀrnan pÄ vÀrddatorn leder till en trefaldig ökning av VirtFS-prestanda.

Detta Àr naturligtvis inte ett nÀtverk FS, men det Äterspeglar till fullo essensen av saker och ting. Nackdelen med denna optimering Àr portabilitetsproblem. För vissa kan det senare vara kritiskt. Till exempel har GlusterFS inga moduler i kÀrnan alls. Tack vare detta fungerar det nu pÄ mÄnga plattformar, inklusive NetBSD.

Vilka koncept kan lokala FS:er lÄna frÄn nÀtverksföretag och vice versa?

Nuförtiden har nÀtverks-FS som regel tillÀgg över lokala FS, sÄ jag förstÄr inte riktigt hur du kan lÄna nÄgot frÄn de senare. Tja, faktiskt, lÄt oss övervÀga ett företag med 4 anstÀllda, dÀr alla gör sin egen grej: en distribuerar, en annan skickar, den tredje tar emot, den fjÀrde butiker. Och frÄgan, vad kan företaget lÄna av sin anstÀlld som lagrar det, lÄter pÄ nÄgot sÀtt felaktig (det har redan haft vad det kunde ha lÄnat av honom under lÄng tid).

Men lokala FS:er har mycket att lÀra av nÀtverk. För det första bör du lÀra dig av dem hur man aggregerar logiska volymer pÄ en hög nivÄ. Nu den sk "avancerade" lokala filsystem samlar logiska volymer uteslutande med hjÀlp av "virtuell enhet"-teknik lÄnad frÄn LVM (samma infektiösa lagerövertrÀdelse som först implementerades i ZFS). Med andra ord, översÀttning av virtuella adresser (blocknummer) till riktiga och tillbaka sker pÄ en lÄg nivÄ (dvs efter att filsystemet har utfÀrdat en I/O-begÀran).

Observera att att lÀgga till och ta bort enheter till logiska volymer (inte speglar) anordnade pÄ blocklagret leder till problem som leverantörer av sÄdana "funktioner" Àr blygsamt tysta om. Jag pratar om fragmentering pÄ riktiga enheter, som kan nÄ monstruösa vÀrden, medan pÄ en virtuell enhet Àr allt bra. Men fÄ mÀnniskor Àr intresserade av virtuella enheter: alla Àr intresserade av vad som hÀnder pÄ dina riktiga enheter. Men ZFS-liknande FS (liksom alla FS i samband med LVM) fungerar bara med virtuella diskenheter (tilldela virtuella diskadresser bland lediga, defragmentera dessa virtuella enheter, etc.). Och de har ingen aning om vad som hÀnder pÄ riktiga enheter!

FörestÀll dig nu att du har noll fragmentering pÄ den virtuella enheten (det vill sÀga du har bara en gigantisk omfattning som bor dÀr), du lÀgger till en disk till din logiska volym och tar sedan bort en annan slumpmÀssig disk frÄn din logiska volym och balanserar sedan om. Och sÄ mÄnga gÄnger. Det Àr inte svÄrt att förestÀlla sig att pÄ den virtuella enheten kommer du fortfarande att leva i samma utstrÀckning, men pÄ riktiga enheter kommer du inte att se nÄgot bra.

Det vÀrsta Àr att du inte ens kan rÀtta till den hÀr situationen! Det enda du kan göra hÀr Àr att be filsystemet att defragmentera den virtuella enheten. Men hon kommer att berÀtta att allt Àr bra dÀr - det finns bara en omfattning, fragmenteringen Àr noll, och det kan inte bli bÀttre! SÄ logiska volymer arrangerade pÄ blocknivÄ Àr inte avsedda för upprepad tillÀgg/borttagning av enheter. PÄ ett bra sÀtt behöver du bara sÀtta ihop en logisk volym pÄ blocknivÄ en gÄng, ge den till filsystemet och sedan inte göra nÄgot annat med den.

Dessutom tillÄter kombinationen av oberoende FS+LVM-undersystem inte att ta hÀnsyn till de olika egenskaperna hos de enheter frÄn vilka logiska volymer aggregeras. Anta faktiskt att du har satt ihop en logisk volym frÄn hÄrddisken och solid-state-enheter. Men dÄ kommer det förra att krÀva defragmentering, och det senare inte. För den senare mÄste du utfÀrda begÀranden om att kassera, men för den förra, inte, etc. I denna kombination Àr det emellertid ganska svÄrt att visa sÄdan selektivitet.

Observera att efter att ha skapat din egen LVM pÄ filsystemet blir situationen inte mycket bÀttre. Dessutom, genom att göra detta sÀtter du faktiskt stopp för möjligheten att nÄgonsin förbÀttra det i framtiden. Det hÀr Àr vÀldigt dÄligt. Olika typer av enheter kan leva pÄ samma maskin. Och om filsystemet inte skiljer mellan dem, vem gör det dÄ?

Ett annat problem ligger och vÀntar pÄ den sk. "Write-Anywhere" filsystem (detta inkluderar Àven Reiser4, om du angav lÀmplig transaktionsmodell under monteringen). SÄdana filsystem mÄste tillhandahÄlla defragmenteringsverktyg som saknar motstycke i sin makt. Och volymhanteraren pÄ lÄg nivÄ hjÀlper inte hÀr, utan kommer bara i vÀgen. Faktum Àr att med en sÄdan hanterare kommer din FS att lagra en karta över fria block av endast en enhet - en virtuell. Följaktligen kan du bara defragmentera en virtuell enhet. Detta innebÀr att din defragmenterare kommer att fungera under lÄng, lÄng tid pÄ ett stort enda utrymme av virtuella adresser.

Och om du har mÄnga anvÀndare som gör slumpmÀssiga överskrivningar, kommer den anvÀndbara effekten av en sÄdan defragmenterare att reduceras till noll. Ditt system kommer oundvikligen att börja sakta ner, och du behöver bara lÀgga hÀnderna inför den nedslÄende diagnosen "trasig design". Flera defragmenterare som körs pÄ samma adressutrymme kommer bara att störa varandra. Det Àr en helt annan sak om du underhÄller din egen karta över gratisblock för varje riktig enhet. Detta kommer effektivt att parallellisera defragmenteringsprocessen.

Men detta kan bara göras om du har en logisk volymhanterare pÄ hög nivÄ. Lokala filsystem med sÄdana hanterare fanns inte tidigare (Ätminstone jag vet inte om dem). Endast nÀtverksfilsystem (till exempel GlusterFS) hade sÄdana hanterare. Ett annat mycket viktigt exempel Àr verktyget volymintegritetskontroll (fsck). Om du lagrar din egen oberoende karta över fria block för varje delvolym, kan proceduren för att kontrollera en logisk volym effektivt parallelliseras. Med andra ord, logiska volymer med chefer pÄ hög nivÄ skalar bÀttre.

Dessutom, med volymhanterare pÄ lÄg nivÄ kommer du inte att kunna organisera fullfjÀdrade ögonblicksbilder. Med LVM- och ZFS-liknande filsystem kan du bara ta lokala ögonblicksbilder, men inte globala ögonblicksbilder. Lokala ögonblicksbilder lÄter dig omedelbart ÄterstÀlla endast vanliga filoperationer. Och ingen dÀr kommer att ÄterstÀlla operationer med logiska volymer (lÀgga till/ta bort enheter). LÄt oss titta pÄ detta med ett exempel. Vid nÄgon tidpunkt, nÀr du har en logisk volym av tvÄ enheter A och B som innehÄller 100 filer, tar du en ögonblicksbild av system S och skapar sedan ytterligare hundra filer.

Efter det lĂ€gger du till enhet C till din volym och Ă„terstĂ€ller slutligen ditt system till ögonblicksbild S. FrĂ„ga: Hur mĂ„nga filer och enheter innehĂ„ller din logiska volym efter Ă„terstĂ€llning till S? Det kommer att finnas 100 filer, som du kanske har gissat, men det kommer att finnas 3 enheter - det hĂ€r Ă€r samma enheter A, B och C, Ă€ven om nĂ€r ögonblicksbilden skapades fanns det bara tvĂ„ enheter i systemet (A och B ). ÅtgĂ€rden för att lĂ€gga till enhet C gick inte tillbaka, och om du nu tar bort enhet C frĂ„n datorn kommer det att förstöra dina data, sĂ„ innan du raderar mĂ„ste du först utföra en dyr operation för att ta bort enheten frĂ„n den logiska ombalanseringsvolymen, vilket kommer att sprida all data frĂ„n enhet C till enheter A och B. Men om din FS stödde globala ögonblicksbilder skulle sĂ„dan ombalansering inte krĂ€vas, och efter en omedelbar Ă„terstĂ€llning till S kan du sĂ€kert ta bort enhet C frĂ„n datorn.

SÄ, globala ögonblicksbilder Àr bra eftersom de tillÄter dig att undvika den kostsamma borttagningen (tillÀgget) av en enhet frÄn en logisk volym (till en logisk volym) med en stor mÀngd data (naturligtvis, om du kommer ihÄg att "snapshot" ditt system vid rÀtt tillfÀlle). LÄt mig pÄminna dig om att skapa ögonblicksbilder och rulla tillbaka filsystemet till dem Àr omedelbara operationer. FrÄgan kan uppstÄ: hur Àr det ens möjligt att omedelbart rulla tillbaka en operation pÄ en logisk volym som tog dig tre dagar? Men det Àr möjligt! Förutsatt att ditt filsystem Àr korrekt utformat. Jag kom pÄ idén med sÄdana "3D-ögonblicksbilder" för tre Är sedan, och förra Äret patenterade jag den hÀr tekniken.

NÀsta sak som lokala FS:er bör lÀra sig av nÀtverks sÄdana Àr att lagra metadata pÄ separata enheter pÄ samma sÀtt som nÀtverks FS:er lagrar dem pÄ separata maskiner (de sÄ kallade metadataservrarna). Det finns applikationer som i första hand arbetar med metadata, och dessa applikationer kan accelereras kraftigt genom att placera metadata pÄ dyra högpresterande lagringsenheter. Med kombinationen FS+LVM kommer du inte att kunna visa sÄdan selektivitet: LVM vet inte vad som finns pÄ blocket som du skickade till det (data dÀr eller metadata).

Du kommer inte att fÄ mycket nytta av att implementera din egen lÄgnivÄ-LVM i FS jÀmfört med FS+LVM-kombinationen, men det du kan göra mycket bra Àr att röra ner FS sÄ att det senare blir omöjligt att arbeta med dess kod. ZFS och Btrfs, som rusade med virtuella enheter, Àr alla tydliga exempel pÄ hur lagerövertrÀdelser dödar systemet i arkitektoniska termer.SÄ varför Àr jag allt detta? Dessutom finns det inget behov av att installera din egen lÄgnivÄ-LVM i filsystemet. IstÀllet mÄste du aggregera enheter till logiska volymer pÄ en hög nivÄ, vilket vissa nÀtverksfilsystem gör med olika maskiner (lagringsnoder). Det Àr sant att de gör detta Àckligt pÄ grund av anvÀndningen av dÄliga algoritmer.

Exempel pÄ helt fruktansvÀrda algoritmer Àr DHT-översÀttaren i filsystemet GlusterFS och den sÄ kallade CRUSH-kartan i filsystemet Ceph. Ingen av de algoritmer som jag sÄg tillfredsstÀllde mig vad gÀller enkelhet och god skalbarhet. SÄ jag var tvungen att komma ihÄg algebra och hitta pÄ allt sjÀlv. 2015, medan jag experimenterade med buntar över hash-funktioner, kom jag pÄ och patenterade nÄgot som passar mig. Nu kan jag sÀga att försöket att omsÀtta allt detta i praktiken var framgÄngsrikt. Jag ser inga problem med skalbarhet i det nya tillvÀgagÄngssÀttet.

Ja, varje undervolym kommer att krĂ€va en separat struktur som ett superblock i minnet. Är det hĂ€r vĂ€ldigt skrĂ€mmande? I allmĂ€nhet vet jag inte vem som kommer att "koka havet" och skapa logiska volymer av hundratusentals eller fler enheter pĂ„ en lokal maskin. Om nĂ„gon kan förklara detta för mig Ă€r jag mycket tacksam. Under tiden Ă€r det hĂ€r marknadsföringssnack för mig.

Hur pÄverkade Àndringar i kÀrnblocksenhetsundersystemet (till exempel utseendet pÄ blk-mq) kraven för FS-implementering?

De hade ingen inverkan. Jag vet inte vad som skulle hÀnda pÄ blocklagret som skulle göra det nödvÀndigt att designa en ny FS. InteraktionsgrÀnssnittet för dessa delsystem Àr mycket dÄligt. FrÄn förarsidan bör FS bara pÄverkas av utseendet pÄ nya typer av enheter, till vilka blockskiktet kommer att justeras först, och sedan FS (för reiser4 innebÀr detta utseendet av nya plugins).

Betyder uppkomsten av nya typer av media (till exempel SMR eller SSD-enheternas allestÀdes nÀrvarande) i grunden nya utmaningar för filsystemdesign?

Ja. Och dessa Àr normala incitament för utvecklingen av FS. Utmaningar kan vara olika och helt ovÀntade. Till exempel har jag hört talas om enheter dÀr hastigheten pÄ en I/O-operation Àr starkt beroende av storleken pÄ en databit och dess offset. I Linux, dÀr storleken pÄ FS-blocket inte kan överstiga sidstorleken, kommer en sÄdan enhet inte att visa sina fulla funktioner som standard. Men om ditt filsystem Àr korrekt designat finns det en chans att fÄ ut mycket mer av det.

Hur mÄnga personer arbetar för nÀrvarande med Reiser4-koden förutom du?

Mindre Àn jag skulle vilja, men jag upplever inte heller akut brist pÄ resurser. Jag Àr mer Àn nöjd med utvecklingstakten för Reiser4. Jag tÀnker inte "köra hÀstar" - det hÀr Àr inte rÀtt omrÄde. HÀr, "om du kör tystare kommer du att fortsÀtta!" Ett modernt filsystem Àr det mest komplexa kÀrnundersystemet, vars felaktiga designbeslut kan Ängra efterföljande Är av mÀnskligt arbete.

Genom att erbjuda volontÀrer att genomföra nÄgot garanterar jag alltid att insatserna sÀkerligen leder till rÀtt resultat, vilket kan efterfrÄgas vid allvarliga behov. Som du förstÄr kan det inte finnas mÄnga sÄdana garantier pÄ en gÄng. Samtidigt kan jag inte stÄ ut med "figurer" som skamlöst frÀmjar "funktioner" i uppenbart oanvÀndbar programvara, lurar hundratals anvÀndare och utvecklare, och samtidigt sitter och ler vid kÀrntoppmöten.

Har nÄgot företag uttryckt sin vilja att stödja utvecklingen av Reiser4?

Ja, det fanns sÄdana förslag, inkl. och frÄn en stor leverantör. Men för detta var jag tvungen att flytta till ett annat land. TyvÀrr Àr jag inte lÀngre 30 Är gammal, jag kan inte bryta mig loss och gÄ dÀrifrÄn vid första signalen.

Vilka funktioner saknas för nÀrvarande i Reiser4?

Det finns ingen "Àndra storlek"-funktion för enkla volymer, liknande den som finns i ReiserFS(v3). Dessutom skulle filoperationer med DIRECT_IO-flaggan inte skada. DÀrefter skulle jag vilja kunna dela upp en volym i "semantiska delvolymer", som inte har en fast storlek, och som kan monteras som oberoende volymer. Dessa problem Àr bra för nybörjare som vill prova sig fram med den "riktiga varan".

Och slutligen skulle jag vilja ha nÀtverkslogiska volymer med enkel implementering och administration (moderna algoritmer tillÄter redan detta). Men vad Reiser4 definitivt aldrig kommer att ha Àr RAID-Z, scrubs, cacher för ledigt utrymme, 128-bitars variabler och annat marknadsföringssnack som uppstod mot bakgrund av en brist pÄ idéer bland utvecklarna av vissa filsystem.

Kan allt som kan behövas implementeras av plugins?

Om vi ​​bara talar om grĂ€nssnitt och plugins (moduler) som implementerar dem, dĂ„ inte allt. Men om du ocksĂ„ introducerar relationer pĂ„ dessa grĂ€nssnitt, sĂ„ kommer du bland annat att ha begreppen högre polymorfismer, som du redan klarar dig med. FörestĂ€ll dig att du hypotetiskt frös ett objektorienterat runtime-system, Ă€ndrade vĂ€rdet pĂ„ instruktionspekaren till att peka pĂ„ ett annat plugin som implementerar samma X-grĂ€nssnitt och sedan lĂ„ste upp systemet sĂ„ att det fortsĂ€tter att köras.

Om slutanvÀndaren inte mÀrker en sÄdan "substitution" sÄ sÀger vi att systemet har nollordningens polymorfism i X-grÀnssnittet (eller sÄ Àr systemet heterogent i X-grÀnssnittet, vilket Àr samma sak). Om du nu inte bara har en uppsÀttning grÀnssnitt, utan ocksÄ har relationer pÄ dem (grÀnssnittsgraf), kan du introducera polymorfismer av högre ordning, vilket kommer att karakterisera heterogeniteten i systemet redan i "grannskapet" av vilket grÀnssnitt som helst. Jag införde en sÄdan klassificering för lÀnge sedan, men tyvÀrr hÀnde det aldrig.

SÄ med hjÀlp av plugins och sÄdana högre polymorfismer kan du beskriva vilken kÀnd funktion som helst, samt "förutsÀga" de som aldrig ens har nÀmnts. Jag har inte kunnat bevisa detta strikt, men jag kÀnner inte heller till nÄgot motexempel Ànnu. I allmÀnhet pÄminde denna frÄga mig om Felix Kleins "Erlangen-program". En gÄng försökte han representera all geometri som en gren av algebra (specifikt gruppteori).

Nu till huvudfrÄgan - hur gÄr det med marknadsföringen av Reiser4 till huvudkÀrnan? Fanns det nÄgra publikationer om arkitekturen för detta filsystem som du pratade om i förra intervjun? Hur relevant Àr denna frÄga ur din synvinkel?

Generellt har vi bett om inkludering i huvudgrenen i tre Är. Reisers sista kommentar i den offentliga trÄden dÀr pull-begÀran gjordes förblev obesvarad. SÄ alla ytterligare frÄgor Àr inte för oss. Jag förstÄr personligen inte varför vi behöver "slÄ ihop" till ett specifikt operativsystem. PÄ Linux konvergerade inte ljuset som en kil. SÄ det finns ett separat arkiv dÀr det kommer att finnas flera filialportar för olika operativsystem. Den som behöver det kan klona motsvarande port och göra vad du vill med den (inom licensen förstÄs). Tja, om nÄgon inte behöver det, sÄ Àr det inte mitt problem. Vid det hÀr laget föreslÄr jag att man övervÀger frÄgan om "befordran till Linux-huvudkÀrnan" som avgjord.

Publikationer om FS-arkitektur Àr relevanta, men Àn sÄ lÀnge har jag bara hittat tid till mina nya resultat, som jag anser vara högre prioritet. En annan sak Àr att jag Àr matematiker, och i matematik Àr vilken publikation som helst en sammanfattning av teorem och deras bevis. Att publicera nÄgot dÀr utan bevis Àr ett tecken pÄ dÄlig smak. Om jag grundligt bevisar eller motbevisar nÄgot pÄstÄende om FS:s arkitektur, sÄ blir resultatet sÄdana pÄlar att det blir ganska svÄrt att ta sig igenom. Vem behöver det? Det Àr förmodligen dÀrför allt fortsÀtter att förbli i sin gamla form - kÀllkoden och kommentarer till den.

Vad Àr nytt i Reiser4 under de senaste Ären?

Den efterlÀngtade stabiliteten har Àntligen materialiserats. En av de sista som dök upp var en bugg som ledde till "oborttagbara" kataloger. SvÄrigheten var att den endast dök upp mot bakgrund av namnhashkollisioner och med en viss plats för katalogposter i en trÀdnod. Men jag kan fortfarande inte rekommendera Reiser4 för produktion: för detta mÄste du göra en del arbete med aktiv interaktion med produktionssystemadministratörer.

Vi lyckades Ă€ntligen implementera vĂ„r mĂ„ngĂ„riga idĂ© – olika transaktionsmodeller. Tidigare körde Reiser4 bara en hĂ„rdkodad Macdonald-Reiser-modell. Detta skapade designproblem. I synnerhet Ă€r ögonblicksbilder inte möjliga i en sĂ„dan transaktionsmodell - de kommer att skadas av en atomkomponent som kallas "OVERWRITE SET". Reiser4 stöder för nĂ€rvarande tre transaktionsmodeller. I en av dem (Write-Anywhere) innehĂ„ller den atomĂ€ra komponenten OVERWRITE SET endast systemsidor (bilder av skivbitmappar, etc.), som inte kan "fotograferas" (problemet med kyckling och Ă€gg).

SÄ bilderna kan nu realiseras pÄ bÀsta möjliga sÀtt. I en annan transaktionsmodell gÄr alla modifierade sidor endast till OVERWRITE SET (det vill sÀga det Àr i huvudsak ren journalisering). Denna modell Àr för dem som klagade pÄ den snabba fragmenteringen av Reiser4-partitioner. Nu i den hÀr modellen kommer din partition inte att fragmenteras snabbare Àn med ReiserFS (v3). Alla tre befintliga modeller, med vissa reservationer, garanterar operationens atomicitet, men modeller med förlust av atomicitet och bevarar endast sektionens integritet kan ocksÄ vara anvÀndbara. SÄdana modeller kan vara anvÀndbara för alla typer av applikationer (databaser, etc.), som redan har tagit pÄ sig nÄgra av dessa funktioner. Det Àr vÀldigt lÀtt att lÀgga till dessa modeller till Reiser4, men jag gjorde det inte, eftersom ingen frÄgade mig, och jag personligen behöver det inte.

Metadatakontrollsummor dök upp och jag kompletterade dem nyligen med "ekonomiska" speglar" (fortfarande instabilt material). Om kontrollsumman för nÄgot block misslyckas lÀser Reiser4 omedelbart motsvarande block frÄn replikenheten. Observera att ZFS och Btrfs inte kan göra detta: designen tillÄter det inte. DÀr mÄste du köra en speciell bakgrundsskanningsprocess som kallas "skrubba" och vÀnta pÄ att den kommer till det problematiska blocket. Programmerare kallar bildligt sÄdana hÀndelser "kryckor".

Och slutligen har heterogena logiska volymer dykt upp som erbjuder allt som ZFS, Btrfs, blocklager, sÄvÀl som FS+LVM-kombinationer i princip inte kan tillhandahÄlla - parallell skalning, O(1) diskadressallokator, transparent datamigrering mellan undervolymer. Den senare har ocksÄ ett anvÀndargrÀnssnitt. Nu kan du enkelt flytta den hetaste datan till den högst presterande enheten pÄ din volym.

Dessutom Àr det möjligt att snabbt spola alla smutsiga sidor till en sÄdan enhet, och dÀrigenom avsevÀrt snabba upp applikationer som ofta anropar fsync(2). Jag noterar att blocklagerfunktionaliteten, kallad bcache, inte ger sÄdan handlingsfrihet alls. Nya logiska volymer Àr baserade pÄ mina algoritmer (det finns motsvarande patent). Mjukvaran Àr redan ganska stabil, det Àr fullt möjligt att prova det, mÀta prestanda, etc. Det enda besvÀret Àr att du för nÀrvarande mÄste uppdatera volymkonfigurationen manuellt och lagra den nÄgonstans.

Hittills har jag kunnat implementera mina idéer med 10 procent, men jag har lyckats med det jag ansÄg som det svÄraste - att koppla ihop logiska volymer med en flashprocedur som utför alla uppskjutna ÄtgÀrder i reiser4. Allt detta Àr fortfarande i den experimentella "format41"-grenen.

Klarar Reiser4 xfstests?

Åtminstone gjorde det det för mig nĂ€r jag förberedde den senaste releasen.

Är det i princip möjligt att göra Reiser4 till ett nĂ€tverk (kluster) FS med hjĂ€lp av plugins?

Det Àr möjligt, och till och med nödvÀndigt! Om du skapar en nÀtverksfil baserad pÄ ett korrekt designat lokalt filsystem kommer resultatet att bli mycket imponerande! I moderna nÀtverks-FS:er Àr jag inte nöjd med nÀrvaron av en backend-lagringsnivÄ, som implementeras med vilken lokal FS som helst. Förekomsten av denna nivÄ Àr helt omotiverad. NÀtverket FS mÄste interagera direkt med blocklagret och inte be den lokala FS att skapa nÄgra andra servicefiler!

I allmÀnhet Àr uppdelning av filsystem i lokala och nÀtverk frÄn det onda. Det hÀrrörde frÄn ofullkomligheten i de algoritmer som anvÀndes för trettio Är sedan, och i stÀllet för vilka ingenting Ànnu har föreslagits. Detta Àr ocksÄ anledningen till uppkomsten av en massa onödiga programvarukomponenter (olika tjÀnster, etc.). PÄ ett bra sÀtt borde det bara finnas en FS i form av en kÀrnmodul och en uppsÀttning anvÀndarverktyg installerade pÄ varje maskin - en klusternod. Denna FS Àr bÄde lokal och nÀtverk. Och inget mer!

Om inget funkar med Reiser4 pĂ„ Linux sĂ„ skulle jag vilja erbjuda en FS för FreeBSD (citat frĂ„n en tidigare intervju: “...FreeBSD... har akademiska rötter... Och detta betyder att vi med stor sannolikhet kommer att hitta ett gemensamt sprĂ„k med utvecklarna”) ?

SÄ, som vi nyss fick reda pÄ, har allt redan fungerat perfekt med Linux: det finns en separat fungerande Reiser4-port för det i form av en huvudgren av vÄrt arkiv. Jag har inte glömt FreeBSD! Erbjudande! Jag Àr redo att arbeta nÀra dem som kÀnner till FreeBSDs inre. Förresten: det jag verkligen gillar med deras community Àr att besluten dÀr fattas av ett uppdaterat rÄd av oberoende experter, vilket inte har nÄgot att göra med regeringens bedrÀgeri av en permanent person.

Hur betygsÀtter du Linux-anvÀndargemenskapen idag? Har det blivit mer "pop"?

Med tanke pÄ arten av mitt arbete Àr det ganska svÄrt för mig att bedöma detta. Oftast kommer anvÀndare till mig med felrapporter och förfrÄgningar om att fixa avsnittet. AnvÀndare som anvÀndare. Vissa Àr mer kunniga, andra mindre. Alla behandlas likadant. Tja, om anvÀndaren ignorerar mina instruktioner, ursÀkta mig: Ignoreringsordern kommer att lÀggas in frÄn min sida ocksÄ.

Är det möjligt att förutse utvecklingen av filsystem för de kommande fem till tio Ă„ren? Vilka tror du Ă€r de största utmaningarna som FS-utvecklare kan stĂ€llas inför?

Ja, det Àr inte svÄrt att göra en sÄdan prognos. Det har inte skett nÄgon utveckling av filsystem i upstream pÄ lÀnge. Endast utseendet pÄ sÄdana skapas. Utvecklare av lokala filsystem stötte pÄ problem i samband med dÄlig design. En varning mÄste göras hÀr. Jag anser inte att den sÄ kallade "lagringen", "slickningen" och porteringen av kod Àr utveckling och utveckling. Och jag klassificerar inte missförstÄndet som kallas "Btrfs" som en utveckling av de skÀl som jag redan har förklarat.

Varje plÄster gör bara sina problem vÀrre. VÀl. och det finns alltid olika typer av "evangelister" för vilka "allt fungerar". I grund och botten Àr det skolbarn och studenter som hoppar över förelÀsningar. FörestÀll dig bara: det fungerar för honom, men professorn gör det inte. Vilken adrenalinkick det hÀr Àr! Ur min synvinkel orsakas den största skadan av "hantverkarna" som skyndade sig att entusiastiskt "skruva" de underbara egenskaperna hos Btrfs pÄ alla möjliga lager som systemd, docker, etc. - detta liknar redan metastaser.

LÄt oss nu försöka göra en prognos för fem till tio Är. Jag har redan kort listat vad vi kommer att göra i Reiser4. Den största utmaningen för lokala FS-utvecklare uppströms kommer att vara (ja, det har det redan blivit) oförmÄgan att göra ett anstÀndigt jobb för en lön. Utan nÄgra idéer inom datalagringsomrÄdet kommer de att fortsÀtta att försöka patcha dessa olyckliga VFS, XFS och ext4. Situationen med VFS ser sÀrskilt komisk ut mot denna bakgrund, som pÄminner om den frenetiska moderniseringen av en restaurang dÀr det inte finns nÄgra kockar och inga kockar förvÀntas.

Nu lÄser VFS-koden, utan nÄgra villkor, flera minnessidor samtidigt och uppmanar den underliggande FS att operera pÄ dem. Detta introducerades för att förbÀttra Ext4s prestanda vid raderingsoperationer, men som Àr lÀtt att förstÄ Àr sÄdan samtidig lÄsning helt oförenlig med avancerade transaktionsmodeller. Det vill sÀga, du kommer inte bara att kunna lÀgga till stöd för nÄgot smart filsystem i kÀrnan. Jag vet inte hur situationen Àr inom andra omrÄden av Linux, men nÀr det gÀller filsystem Àr det osannolikt att nÄgon utveckling hÀr Àr förenlig med den policy som Torvalds för i praktiken (akademiska projekt sparkas ut, och bedragare som har ingen aning om vad ett B-trÀd, oÀndliga krediter av förtroende utfÀrdas). DÀrför sattes en kurs mot lÄngsamt förfall. Naturligtvis kommer de att försöka med all sin kraft att framstÀlla det som "utveckling".

Vidare kommer "vÄrdarna" av filsystem, som inser att du inte kan tjÀna mycket pÄ enbart "lagring", försöka sig pÄ en mer lönsam verksamhet. Dessa Àr som regel distribuerade filsystem och virtualisering. Kanske kommer de att porta den fashionabla ZFS nÄgon annanstans dÀr den inte finns Ànnu. Men det, som alla FS frÄn uppströms, liknar ett nyÄrstrÀd: om du kan hÀnga nÄgra andra smÄ saker pÄ toppen, kan du inte bli djupare. Jag erkÀnner att det Àr möjligt att bygga ett seriöst företagssystem baserat pÄ ZFS, men eftersom vi nu diskuterar framtiden kan jag tyvÀrr bara konstatera att ZFS Àr hopplöst i detta avseende: med sina virtuella enheter har killarna stÀngt av syret för sig sjÀlva och kommande generationer för vidare utveckling. ZFS Àr ett minne blott. Och ext4 och XFS Àr inte ens i förrgÄr.

Det Àr vÀrt att nÀmna separat om det sensationella konceptet "Linux filsystem för nÀsta generation". Detta Àr ett helt politiskt och marknadsföringsprojekt skapat för möjligheten, sÄ att sÀga, att "fÀsta framtiden för filsystem" i Linux bakom specifika karaktÀrer. Faktum Àr att Linux brukade vara "bara för skojs skull". Men nu Àr det i första hand en maskin för att tjÀna pengar. De Àr gjorda pÄ allt möjligt. Till exempel Àr det vÀldigt svÄrt att skapa en bra mjukvaruprodukt, men smarta "utvecklare" har lÀnge insett att det inte finns nÄgot behov av att anstrÀnga sig alls: du kan framgÄngsrikt sÀlja icke-existerande mjukvara som tillkÀnnagavs och marknadsfördes hos alla möjliga offentliga hÀndelser - huvudsaken Àr att presentationsbilderna ska innehÄlla fler "funktioner".

Filsystem Ă€r perfekta för detta, eftersom du sĂ€kert kan pruta i tio Ă„r pĂ„ resultatet. Tja, om nĂ„gon senare klagar över bristen pĂ„ just detta resultat, sĂ„ förstĂ„r han helt enkelt ingenting om filsystem! Detta pĂ„minner om en finansiell pyramid: i toppen finns Ă€ventyrarna som startade denna röra, och de fĂ„ som hade "tur": de "tog ut utdelningar", d.v.s. fĂ„tt pengar till utveckling, fĂ„tt ett vĂ€lbetalt jobb som chefer, ”visat upp” pĂ„ konferenser osv.

DÀrefter kommer de som har "otur": de kommer att rÀkna förluster, ta itu med konsekvenserna av att distribuera en oanvÀndbar mjukvaruprodukt i produktion, "osv. Det finns mÄnga fler av dem. Tja, vid basen av pyramiden finns en enorm massa utvecklare som "sÄgar" vÀrdelös kod. De Àr de största förlorarna, eftersom bortkastad tid inte kan ÄterlÀmnas. SÄdana pyramider Àr extremt fördelaktiga för Torvalds och hans medarbetare. Och ju fler av dessa pyramider, desto bÀttre för dem. För att mata sÄdana pyramider kan vad som helst tas in i kÀrnan. Offentligt sÀger man förstÄs motsatsen. Men jag dömer inte efter ord utan efter handlingar.

SÄ, "framtiden för filsystem i Linux" Àr Ànnu en mycket frÀmjad, men knappast anvÀndbar programvara. Efter Btrfs, med hög sannolikhet, kommer platsen för en sÄdan "framtid" att tas av Bcachefs, vilket Àr ytterligare ett försök att korsa Linux-blocklagret med ett filsystem (ett dÄligt exempel Àr smittsamt). Och vad Àr typiskt: det finns samma problem som i Btrfs. Jag misstÀnkte detta lÀnge, och sedan kunde jag pÄ nÄgot sÀtt inte motstÄ och tittade in i koden - det Àr sant!

Författarna till Bcachefs och Btrfs, nÀr de skapade sin FS, anvÀnde aktivt andras kÀllor och förstod lite om dem. Situationen pÄminner mycket om barnens spel "trasig telefon." Och jag kan ungefÀr förestÀlla mig hur den hÀr koden kommer att inkluderas i kÀrnan. Egentligen kommer ingen att se "rakarna" (alla kommer att trampa pÄ dem senare). Efter mÄnga kÀbblar om stilen pÄ koden, anklagelser om icke-existerande krÀnkningar, etc., kommer en slutsats att göras om författarens "lojalitet", hur vÀl han "interagerar" med andra utvecklare och hur framgÄngsrikt allt detta kan göras. sedan sÀljas till företag.

Slutresultatet kommer inte att intressera nÄgon. För tjugo Är sedan kanske jag hade varit intresserad, men nu stÀlls frÄgorna annorlunda: gÄr det att frÀmja detta sÄ att vissa personer kommer att anstÀllas inom de nÀrmaste tio Ären. Och tyvÀrr Àr det inte brukligt att undra över slutresultatet.

Generellt skulle jag starkt avrĂ„da frĂ„n att börja Ă„teruppfinna ditt filsystem frĂ„n början. För inte ens betydande finansiella investeringar kommer att rĂ€cka för att fĂ„ nĂ„got konkurrenskraftigt om tio Ă„r. Naturligtvis pratar jag om seriösa projekt, och inte om de som Ă€r avsedda att "skjutas" in i kĂ€rnan. SĂ„ ett mer effektivt sĂ€tt att uttrycka dig Ă€r att gĂ„ med i verkliga utvecklingar, som vi. Detta Ă€r naturligtvis inte lĂ€tt att göra – men sĂ„ Ă€r fallet med alla projekt pĂ„ hög nivĂ„.

Först mÄste du sjÀlvstÀndigt övervinna problemet som jag kommer att erbjuda. DÀrefter, övertygad om allvaret i dina avsikter, kommer jag att börja hjÀlpa till. Traditionellt anvÀnder vi bara vÄra egna utvecklingar. Undantagen Àr komprimeringsalgoritmer och vissa hashfunktioner. Vi skickar inte utvecklare för att resa till konferenser, och dÄ sitter vi inte och kombinerar andras idéer ("kanske vad som kommer att hÀnda"), som Àr brukligt i de flesta startups.

Vi utvecklar alla algoritmer sjÀlva. Jag Àr för nÀrvarande intresserad av de algebraiska och kombinatoriska aspekterna av datalagringsvetenskap. I synnerhet Àndliga fÀlt, asymptotik, bevis pÄ ojÀmlikheter. Det finns ocksÄ arbete för vanliga programmerare, men jag mÄste varna dig omedelbart: alla förslag om att "titta pÄ en annan FS och göra detsamma" ignoreras. Patchar som syftar till nÀrmare integration med Linux via VFS kommer ocksÄ dit.

SÄ vi har ingen rake, men vi har en förstÄelse för vart vi behöver röra oss, och vi Àr övertygade om att den hÀr riktningen Àr den rÀtta. Denna förstÄelse kom inte i form av manna frÄn himlen. LÄt mig pÄminna dig om att vi har 29 Ärs erfarenhet av utveckling bakom oss, tvÄ filsystem skrivna frÄn grunden. Och samma antal dataÄterstÀllningsverktyg. Och det hÀr Àr mycket!

KĂ€lla: opennet.ru

LĂ€gg en kommentar