Názor k článku FreeBSD řady 5 od pc - Asi nejenom inodu, ale i dalsich potencialne poztracenych...

  • Článek je starý, nové názory již nelze přidávat.
  • 30. 8. 2004 20:18

    pc (neregistrovaný)

    Asi nejenom inodu, ale i dalsich potencialne poztracenych polozek, jako jsou bloky.

    Takze v tom mountlem fs se provadeji nejake operace na zaklade toho jak vypada ten snapshot, procez je nutne predpokladat nejakou korelaci mezi nimi. Ale to je problem, protoze mezi tim je ten fs mountovany read-write. Autori zjevne veri, ze tuto korelaci znaji, protoze maji pod kontrolou implementaci FFS v jadre. (A veri, ze se vubec da nejaka korelace najit, coz nejakym zpusobem omezuje tu implementaci fs, aby k poruseni te korelace nedoslo.)

    Nu, a to mi prave prijde jako prasarna. Tradicni fsck pokud vim nepotrebuje znat nic jineho nez format dat na disku a implementace mu muze byt ukradena.

    Navic mi vubec neni jasne jak se da nejaka smysluplna korelace (mezi snapshotem a aktualnim stavem rw-mountleho filesystemu) bezpecne zajistit.

    Uvazujme nasledujici pripad. Byl smazan soubor a adresar ve kterem byl obsazen. tedy jadro smazalo polozku v nadrazenem adresari a chtelo oznacit inodu adresare i souboru jako smazanou, kdyz tu system spadl. Po restartu se vytvori snapshot a na nem se pusti fsck. Projde adresare a zjisti ze na tyto dve inody nevede zadny odkaz, tedy jsou ztracene a mely by se smazat.

    Mezitim nekdo otevre ten smazany adresar, najde ten smazany soubor (ktery prozatim vypada jako nesmazany) a smaze ho. Pak vytvori jiny soubor v nejakem nesmazanem adresari. V tomto okamziku se muze stat, ze jadro pouzije pro tento novy soubor tu smazanou inodu. A mame problem, protoze ted fsck tu inodu prohlasi za ztracenou a vesele smaze, cimz zpusobi jednak ztratu dat (smazal se soubor, ktery se smazat nemel), a dale nekonzistenci filesystemu - kdesi je polozka v adreari ukazujici na neexistujici soubor.

    Pokud se divite, jak je mozne otevrit ten smazany adresar a neco v nem delat, tak si prectete manualove stranky fhopen(2) a fchdir(2) nebo si zkuste predstavit ze na tom stroji bezi NFS server.

    Tolik k te bezpecne operaci. Mozna to maji ve FreeBSD osetreno, ale tim ze je nutno sledovat takoveto okrajove pripady se vse komplikuje, prestava to byt genialni a sklouzava to do prasaren.

    Navic si moc nedovedu predstavit jak by to vlastne melo byt osetreno.