Taky zvazuji napsat vlastni "meta/cache/tieredFS" (ale treba to uz existuje), protoze bcache mi nevyhovuje (nelze pridat na existujici device, kdyz detekuje stream velkeho souboru tak se necachuje, a je to spis neriditelnej blackbox).
Moje predstava je:
- Jeden NVMe proxy/cache filesystem device (dale SSD)
- Vicero klasickych diskovych poli (dale HDD), muzou byt jak lokalni tak remote
Do SSD se nakopiruje:
- cela adresarova struktura HDD (vsech poli, jako union) - inody + lookup tabulky
- soubory urciteho adresare (aktualni projekt na kterem se dela)
- male soubory (do volne kapacity)
System (at uz lokalni, nebo pres nfs/smb) pracuje tedy primarne s tim SSD - ucel je urychlit prohledavani disku a operaci s malyma souborama. A taky to, aby se pole HDD zbytecne neodparkovalo kazdou chvili, pripadne aby ho slo i zcela zastavit. Podpora vicero lower cest je nutna - chci mit globalni SSD cache, pro vsechna HDD pole (je lepsi mit vicero nezavislych svazku, rekneme po 6-8 discich, nez treba trvat na tom, ze system bude funkcni jen kdyz bude online vsech "sto" disku).
Vsechny zapisy pujdou jdou jenom do SSD (i kdyby se jednalo o nn GB novych videozaznamu, radove uvazuji o 4T SSD s 1T free space, 3T cached, z 50T hdd poli), a mimo pracovni dobu / v noci se provede flush na HDD pole, a eject z flashe nepotrebnych veci (at uz starych, nebo velikych).. on ten eject muze byt udelan i kdyz dojde volne misto.
Chci, aby ta cache vrstva pouzivala klasicky filesystem (ext4) a treba skrze extended attributy delala ty "cross-device hardlinks", s tim ze overlay se zmenama, nebo nacachovane casti souboru budou reprezentovany jako sparse file (samozrejme musi ke kazdemu bloku byt pak jeste modified flag). Zmeny v adresarove strukture se daj reprezentovat v ramci SSD drzenim dvou vetvi - jedna co dela jen cache 1:1 k hdd strane (per hdd), a druhou, ktera je viditelna k uzivateli. Pripadne snapshoty se daj resit pak skrze vicero techto uzivatelskych casti.
Ohledne zaloh.. pri zapisu do nizsi vrstvy lze generovat log zmen, ktery by sel prenest a drzet v zaloznim stroji, dokud tam bude misto, ty inkrementy se nemusi aplikovat a dovoli rollback kdyby se smazalo neco co nemelo.
Najde se treba nejaky student co by tohle chtel resit? :-)