Operating Systems II Unit OS8: File System 8.3. NTFS Recovery Support Prof. Dr. Andreas Polze, Andreas Grapentin, Bernhard Rabe
Roadmap ¡for ¡Sec.on ¡8.4 ¡ ¡ • The ¡Evolu.on ¡of ¡File ¡Systems ¡ • Recoverable ¡File ¡System ¡ • Log ¡File ¡Service ¡Opera.on ¡ • NTFS ¡Recovery ¡Procedures ¡ • Fault-‑Tolerance ¡Support ¡ • Volume ¡Management ¡-‑ ¡ ¡ Striped ¡and ¡Spanned ¡Volumes ¡ 2 ¡
NTFS ¡Recovery ¡Support ¡ • Transac.on-‑based ¡logging ¡scheme ¡ • Fast, ¡even ¡for ¡large ¡disks ¡ • Recovery ¡is ¡limited ¡to ¡file ¡system ¡data ¡ – Use ¡transac.on ¡processing ¡like ¡SQL ¡server ¡for ¡user ¡data ¡ – Tradeoff: ¡performance ¡versus ¡fully ¡fault-‑tolerant ¡file ¡system ¡ • Design ¡op.ons ¡for ¡file ¡I/O ¡& ¡caching: ¡ – Careful ¡write : ¡VAX/VMS ¡fs, ¡other ¡proprietary ¡OS ¡fs ¡ – Lazy ¡write : ¡most ¡UNIX ¡fs, ¡OS/2 ¡HPFS ¡ ¡ 3 ¡
Careful ¡Write ¡File ¡Systems ¡ • OS ¡crash/power ¡loss ¡may ¡corrupt ¡file ¡system ¡ Careful ¡write ¡file ¡system ¡orders ¡write ¡opera.ons: ¡ • – System ¡crash ¡will ¡produce ¡predictable, ¡non-‑cri.cal ¡inconsistencies ¡ Update ¡to ¡disk ¡is ¡broken ¡in ¡sub ¡opera.ons: ¡ • – Sub ¡opera.ons ¡are ¡wriYen ¡serially ¡ – Alloca.ng ¡disk ¡space: ¡first ¡write ¡bits ¡in ¡bitmap ¡indica.ng ¡usage; ¡ then ¡allocate ¡space ¡on ¡disk ¡ I/O ¡requests ¡are ¡serialized: ¡ • – Alloca.on ¡of ¡disk ¡space ¡by ¡one ¡process ¡has ¡to ¡be ¡completed ¡before ¡another ¡ process ¡may ¡create ¡a ¡file ¡ – No ¡interleaving ¡sub ¡opera.ons ¡of ¡the ¡two ¡I/O ¡requests ¡ Crash: ¡volume ¡stays ¡usable; ¡no ¡need ¡to ¡run ¡repair ¡u.lity ¡ • 4 ¡
Lazy ¡Write ¡File ¡Systems ¡ • Careful ¡file ¡system ¡write ¡sacrifices ¡speed ¡for ¡safety ¡ • Lazy ¡write ¡improves ¡performance ¡by ¡write ¡back ¡caching ¡ – Modifica.ons ¡are ¡wriYen ¡to ¡the ¡cache; ¡ – Cache ¡flush ¡is ¡an ¡op.mized ¡background ¡ac.vity ¡ • Less ¡disk ¡writes; ¡buffer ¡can ¡be ¡modified ¡mul.ple ¡.mes ¡before ¡ being ¡wriYen ¡to ¡disk ¡ • File ¡system ¡can ¡return ¡to ¡caller ¡before ¡op. ¡is ¡completed ¡ • Inconsistent ¡intermediate ¡states ¡on ¡volume ¡are ¡ignored ¡ • Greater ¡risk ¡/ ¡user ¡inconvenience ¡if ¡system ¡fails ¡ 5 ¡
Recoverable ¡File ¡System ¡ (Journaling ¡File ¡System) ¡ • Safety ¡of ¡careful ¡write ¡fs ¡/ ¡performance ¡of ¡lazy ¡write ¡fs ¡ • Log ¡file ¡+ ¡fast ¡recovery ¡procedure ¡ – Log ¡file ¡imposes ¡some ¡overhead ¡ – Op.miza.on ¡over ¡lazy ¡write: ¡distance ¡between ¡cache ¡flushes ¡ increased ¡ • NTFS ¡supports ¡ cache ¡write-‑through ¡and ¡ cache ¡flushing ¡ triggered ¡by ¡applica.ons ¡ – No ¡extra ¡disk ¡I/O ¡to ¡update ¡fs ¡data ¡structures ¡necessary: ¡ all ¡changes ¡to ¡fs ¡structure ¡are ¡recorded ¡in ¡log ¡file ¡which ¡can ¡be ¡ wriYen ¡in ¡a ¡single ¡opera.on ¡ – In ¡the ¡future, ¡NTFS ¡may ¡support ¡logging ¡for ¡user ¡files ¡(hooks ¡in ¡place) ¡ 6 ¡
Log ¡File ¡Service ¡(LFS) ¡ I/O ¡manager ¡ Log ¡file ¡ Log ¡the ¡transac.on ¡ service ¡ NTFS ¡driver ¡ Write ¡the ¡ Write/flush ¡ Flush ¡the ¡ Volume ¡updates ¡ the ¡log ¡file ¡ log ¡file ¡ Cache ¡ ¡ manager ¡ Access ¡the ¡mapped ¡ file ¡or ¡flush ¡the ¡cache ¡ • LFS ¡is ¡designed ¡to ¡provide ¡logging ¡to ¡mul.ple ¡ kernel ¡components ¡(clients) ¡ • Currently ¡used ¡only ¡by ¡NTFS ¡ 7 ¡
Log ¡File ¡Regions ¡ LFS ¡restart ¡area ¡ „infinite“ ¡logging ¡area ¡ Copy ¡1 ¡ Copy ¡2 ¡ Log ¡records ¡ • NTFS ¡calls ¡LFS ¡to ¡read/write ¡restart ¡area ¡ – Context ¡info: ¡loca.on ¡of ¡logging ¡area ¡to ¡be ¡used ¡for ¡recovery ¡ – LFS ¡maintains ¡2nd ¡copy ¡of ¡restart ¡area ¡ – Logging ¡area: ¡circularly ¡reused ¡ – LFS ¡uses ¡logical ¡sequence ¡numbers ¡(LSNs) ¡to ¡iden.fy ¡log ¡records ¡ NTFS ¡never ¡reads/writes ¡transac.ons ¡to ¡log ¡file ¡directly ¡ • During ¡recovery: ¡ • – NTFS ¡calls ¡LFS ¡to ¡read ¡forward; ¡recorded ¡transac.ons ¡are ¡redone ¡ – NTFS ¡calls ¡LFS ¡to ¡read ¡backward; ¡undo ¡all ¡incompletely ¡logged ¡transac.ons ¡ 8 ¡
Opera.on ¡of ¡the ¡LFS/NTFS ¡ 1. NTFS ¡calls ¡LFS ¡to ¡record ¡in ¡(cached) ¡log ¡file ¡any ¡transac.ons ¡ that ¡will ¡modify ¡volume ¡structure ¡ 2. NTFS ¡modifies ¡the ¡volume ¡(also ¡in ¡the ¡cache) ¡ 3. Cache ¡manager ¡calls ¡LFS ¡to ¡flush ¡log ¡file ¡to ¡disk ¡ (LFS ¡implements ¡flushing ¡by ¡calling ¡cache ¡manager ¡back, ¡telling ¡which ¡ page ¡to ¡flush) ¡ 4. Aker ¡cash ¡manager ¡flushes ¡log ¡file, ¡it ¡flushes ¡volume ¡ changes ¡ -‑> ¡Transac.ons ¡of ¡unsuccessful ¡modifica.ons ¡can ¡be ¡retrieved ¡ from ¡log ¡file ¡and ¡un-‑/redone ¡ ¡Recovery ¡begins ¡automa.cally ¡the ¡first ¡.me ¡a ¡volume ¡is ¡ used ¡aker ¡system ¡is ¡rebooted. ¡ 9 ¡
Log ¡Record ¡Types ¡ • Update ¡records ¡ (series ¡of ¡...) ¡ – Most ¡common; ¡each ¡record ¡contains: ¡ – Redo ¡informa4on : ¡how ¡to ¡reapply ¡on ¡subop. ¡of ¡a ¡commiYed ¡trans. ¡ – Undo ¡informa4on : ¡how ¡to ¡reverse ¡a ¡par.ally ¡logged ¡sub ¡opera.on ¡ • Last ¡record ¡commits ¡the ¡transac.on ¡ (not ¡shown ¡here) ¡ Log ¡file ¡records ¡ ... ¡ T1 a ¡ T1b ¡ T1c ¡ Redo : ¡Allocate/ini.alize ¡an ¡MFT ¡file ¡record ¡ Redo : ¡Set ¡bits ¡3-‑9 ¡in ¡the ¡bitmap ¡ Undo : ¡Deallocate ¡the ¡file ¡record ¡ Undo : ¡Clear ¡bits ¡3-‑9 ¡in ¡the ¡bitmap ¡ Redo : ¡Add ¡the ¡filename ¡to ¡the ¡index ¡ Undo : ¡Remove ¡the ¡filename ¡from ¡the ¡index ¡ Recovery: ¡redo ¡commiYed/undo ¡incompletely ¡logged ¡transact. ¡ 10 ¡
Log ¡Records ¡(contd.) ¡ • Physical ¡vs. ¡logical ¡descrip.on ¡of ¡redo/undo ¡ac.ons: ¡ – Delete ¡file ¡„a.dat“ ¡vs. ¡Delete ¡byte ¡range ¡on ¡disk ¡ – NTFS ¡writes ¡update ¡records ¡with ¡physical ¡descrip.ons ¡ NTFS ¡writes ¡update ¡records ¡(usually ¡several) ¡for: ¡ • – Crea.ng ¡a ¡file ¡ – Dele.ng ¡a ¡file ¡ – Extending ¡a ¡file ¡ – Trunca.ng ¡a ¡file ¡ – Senng ¡file ¡informa.on ¡ – Renaming ¡a ¡file ¡ – Changing ¡security ¡applied ¡to ¡a ¡file ¡ Redo/undo ¡ops. ¡must ¡be ¡idempotent ¡ ¡ • (might ¡be ¡applied ¡twice) ¡ 11 ¡
Checkpoint ¡Records ¡ • NTFS ¡periodically ¡writes ¡a ¡checkpoint ¡record ¡ – Describes, ¡what ¡processing ¡would ¡be ¡necessary ¡to ¡recover ¡a ¡volume ¡if ¡ a ¡crash ¡would ¡occur ¡immediately ¡ – How ¡far ¡back ¡in ¡the ¡log ¡file ¡must ¡NTFS ¡go ¡to ¡begin ¡recovery ¡ – LSN ¡of ¡checkpoint ¡record ¡is ¡stored ¡in ¡restart ¡area ¡ Log ¡file ¡records ¡ NTFS ¡restart ¡ ... ¡ LSN ¡2058 ¡ LSN ¡2059 ¡ LSN ¡2060 ¡ Checkpoint ¡record ¡ 12 ¡
Recommend
More recommend