Bilješke Teodora Ts'o o Linux kernelu, kodeksu ponašanja, ext4, btrfs i ZFS

Prijevod razmišljanja Theodora Ts’o (Theodore Ts’o), tvorca datotečnog sustava Ext4, o razvoju ext4, datotečnom sustavu BcacheFS, Linux jezgru, ZFS-u, kodeksu ponašanja i datotečnim sustavima u cjelini:

O razvoju ext4.

U svaki izdanje jezgre ext4 doprinosi više od poluduzine ljudi. Trenutno većinu svog vremena trošim na recenziranje koda, provođenje testova i poboljšanje testne aplikacije {kvm,gce,qemu,android}-xfstests. I jako se oslanjam na 2-3 druga programera koji rade u SUSE-u i IBM-u, koji mi pomažu s recenziranjem koda.

O BcacheFS

Iskreno, bcachefs nije potpuno samostalan projekt — na primjer, Kent je bio autor 72% zakrpa između izdanja jezgre 6.11 i 6.12, dok sam od 103 zakrpe za ext4 za isto razdoblje bio autor točno 0%. To je zato što čvrsto vjerujem da je programiranje timski sport, a moj posao kao tehničkog vođe je omogućiti članovima ext4 da daju sve od sebe za poboljšanje datotečnog sustava. Održavamo tjedne konferencije, a Derrick Wong, viši programer XFS-a i bivši održavatelj XFS-a, sudjeluje u tim konferencijama — a ja sam, poznato je, pomagao njemu u pitanjima testiranja XFS-a, dok je Derrick pomagao meni u raznim pitanjima testiranja ext4 i čak pregledao nekoliko zakrpa za ext4. Suradnja između nas je dobra.

Odluku o tome žele li povjeriti svoje podatke nekome tko je osamljeni talentirani programer, koji bi mogao biti talentiraniji od mene, ostavljam drugima, ali dat ću vam savjet — možete "prevariti", angažirajući tim da riješi problem. Nije nužno raditi to sam. Naravno, da biste to učinili, morate znati kako buditi najbolje u drugima i raditi zajedno. A ljubazno ponašanje jedni prema drugima na mailing listama neće škoditi.

O jezgru, CoC-u, mogućnostima i budućnosti ext4

Ext4 zaista dobiva neke nove funkcije, ali to su one koje su tvrtke spremne financirati, jer je isplativost razvoja funkcije smislena s obzirom na troškove i koristi. Na primjer, fscrypt i direktoriji bez obzira na velika/slova bile su funkcije korisne za Android i Chrome OS, a djelomično su ih financirale te skupine programera (Steam se također brinuo o preklapanju velikih/slova i potpori jednom od inžinjera). Želimo dodati podršku za neprekinuto zapisivanje (untorn), jer će to poboljšati performanse baza podataka na oblaku emuliranim blokovnim uređajima, gdje se može jamčiti 16k atomarnih zapisa, što će omogućiti uklanjanje dvostrukog međuspremanja u MySQL-u i PostgreSQL-u.

(Zapravo, Amazon i Google to mogu učiniti u vlastitim proizvodima baza podataka, donoseći pretpostavke o tome kako rade Amazon EBS i Google Persistent Disk, ali želimo to učiniti općenitijim načinom koji će biti održiviji na duži rok). To je manje privlačno od stvari poput reflinks, ali je isplativost investicije mnogo lakše opravdati, kako zbog nižih troškova (manje rada na razvoju, testiranju i kvalifikacijama za korporativno implementiranje), tako i zbog toga što je korist mnogo lakše kvantificirati. Stvari poput „mogu uštedjeti plaću XX stalnih inžinjera-programera tijekom pet godina“, mnogo je lakše raditi za takve vrste funkcija povećanja performansi.

Nasuprot tome, reflinks je zabavno, ali nisam mogao pronaći klijenta spremnog platiti troškove razvoja, niti tvrtku koja smatra da će njihovi klijenti kupovati više njihovog proizvoda ako dodaju reflinks u ext4. To može zvučati grozno korporativno, ali postoji priča o tome kako su inženjeri ZFS započeli projekt od nule, ne pitajući dopuštenje uprave i ne dobivajući prijedloge od prodajnog odjela, i predstavili Sunu ono što je zapravo bila ostvarena činjenica.

Zvuči dobro, ali kada se sjetimo da je Sun na kraju počela gubiti novac, sve dok nije bila prisiljena prodati se drugoj kompaniji, a inženjerska organizacija koja je podržavala ZFS više ne postoji. Otprilike u vrijeme kada je ZFS najavljen, sudjelovao sam u istraživanju cijele kompanije kako bismo utvrdili ima li smisla ulagati u funkcionalnosti datotečnog sustava za AIX i Linux — i došli smo do zaključka da nema, povrat ulaganja je mali, a nove funkcionalnosti datotečnog sustava neće dovesti do povećanja broja klijenata koji kupuju opremu, softver ili IBM sustave. Možda su za IBM došla teška vremena, ali još uvijek postoji, dok Sun više nema.

Otprilike u to vrijeme, predstavnici nekoliko Linux kompanija okupili su se kako bi smislili kako će Linux konkurirati ZFS-u. Na tom sastanku je predložena ideja da će btrfs biti dugoročno rješenje, dok će ext4 biti kratkoročno rješenje koje će omogućiti funkcionalnosti poput promjene veličine u stvarnom vremenu, 64-bitne brojeve blokova i druge značajke koje su postojale u tradicionalnim Legacy Unix OS, a koje nisu bile prisutne u ext3.

Na tom sastanku zamoljen sam da odredim što će biti potrebno za izradu potpuno novog datotečnog sustava. Istražio sam koliko je truda bilo potrebno za izradu takvih datotečnih sustava kao što su GPFS i JFS od IBM-a, advfs od Digital, i procijenio koliko je Sunu bilo potrebno za izradu ZFS-a i dovođenje ovog datotečnog sustava do potpuno proizvodnog stanja. Odgovor koji sam dobio bio je otprilike 100 čovjek-godina, s jednom niskom procjenom od 50 čovjek-godina i visokom procjenom od 200 čovjek-godina (ali to se odnosilo na GPFS, koji je bio klaster datotečni sustav i stoga mnogo složeniji).

O tome sam izvijestio na sastanku, a jedan stariji inženjer iz Intela rekao je: 'Ne, nemojte o tome razgovarati s rukovodstvom, jer oni nikada neće odobriti projekt! Recite im da će btrfs biti spreman za 18 mjeseci.' Ostavljao sam ljudima da sami odluče kada će btrfs doseći status 'spremnosti za korporativnu upotrebu', posebno za one nove privlačne proširene funkcije koje su trebale konkurirati ZFS-u, ali ne mislim da je rasprava o tome da to nije bilo kroz 18 mjeseci upitna.

Čak i prije nego što se Sun raspala, mnoge tvrtke koje su poslale svoje predstavnike na sastanak odbile su sudjelovanje inženjera u radu na btrfs-u, što, naravno, nije pomoglo. No, vjerojatno je to bilo povezano s time da su tvrtke racionalne organizacije koje donose vlastite odluke o isplativosti ulaganja, a financiranje novog datotečnog sustava nije imalo isti smisao kao obavijestiti ljude da Linux ima odgovor na ZFS.

Gledajući unatrag, može se reći da, iako su ZFS imale te zaista sjajne značajke, one nisu bile dovoljne da većinu korisnika natjeraju da odaberu Solaris umjesto da kupe mnogo jeftinije x86 platforme i instaliraju Linux. A do trenutka kada je Sun odlučio isprobati strategiju OpenSolaris i Solaris x86, već je bilo prekasno. Mrežni učinci su bili ogromni, a strategija x86 nije davala odgovor na pitanje kako je jedna tvrtka, Sun, mogla plaćati plaćice svim supertalentiranim inženjerima koji su radili na Solaris-u. Kupnja x86 poslužitelja za 5000 dolara ne donosi veliku isplativost u usporedbi s serverom SunFire E10k Sparc za 100000 dolara, što je Sun nazivao "točkom" u "dot Com".

Suština je da inženjering u stvarnom svijetu predstavlja kompromis, a poslovne stvarnosti su dio tog kompromisa. Ne ispričavam se što preferiram jesti hranu i što želim zarađivati dovoljno novca kako bih se jednog dana mogao povući. A to, zauzvrat, znači da moram dobro razumjeti kako donosim koristi poslodavcu, barem 10 puta veće od svoje plaće. Ako to uspijem učiniti dok radim s otvorenim izvorom i pomažem drugim tvrtkama da zarađuju novac, tako da budu spremne doprinijeti ext4, pa, to je dio izazova i razlog zašto volim raditi s otvorenim izvorom.

A vraćajući se na Kodeks ponašanja, reći ću da su gotovo svi održavatelji glavnih datotečnih sustava podržali Kodeks ne zbog nekih slabih liberalnih razmišljanja. To je zato što nam treba svaki inženjer spreman dati svoj doprinos našem projektu, a većina nas je vidjela ljude koji su odbijali raditi u Linuxu i prelazili na druge operacijske sustave (znam jednu osobu koja je prešla na Windows i bila je vrijedna članica tima za razvoj Linux jezgre u IBM Linux Technology Center) ili su radili na internim projektima, ali ne na onima koji su zahtijevali interakciju s LKML-om, zbog toksičnog okruženja nekolicine ljudi na mailing listi.

U nekim slučajevima, zabrinutosti su bile neopravdane; na primjer, Linus je vikao na starijeg programera koji je doista trebao znati bolje i s kojim se Linus već većinom slučajeva susretao osobno, i imali su već uspostavljene odnose. Problem je u tome što novaci to nisu znali i bojali su se — "što ako me Linus ponizi javno kao što je to učinio sa Stevom", ne shvaćajući da se to u praksi neće dogoditi. Zato imamo CoC; to nije za nas, starije inženjere, nego za podršku mlađim inženjerima u našim timovima, koje želimo obučiti da nas zamijene kad dođe vrijeme za odlazak u mirovinu, ili nas pregazi autobus, ili na neki drugi način napustimo ovaj svijet.

Ne zaboravite na 50-100 ljudi-godina rada na stvaranju datotečnog sustava spremnog za korištenje u korporativnom okruženju. Trebamo sve inženjere koje možemo privući, a mnogi od nas rade dodatni posao u slobodno vrijeme jer nam nije svejedno. Izgradnja visoko kvalitetnog datotečnog sustava je timski rad, i trebamo svakog talentiranog inženjera kojeg možemo dobiti. Čak i ako je jedan inženjer super 10x programer, ako na kraju odvrati hrpu drugih inženjera koji mogu raditi na testiranju, optimizaciji performansi itd., to jednostavno nije vrijedno dopuštanja nekom da bude gad.

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster