ജേണലിംഗ് ഫയൽ സിസ്റ്റങ്ങൾ എന്തൊക്കെയാണ്? അലസമായ എഴുത്ത്, ലോഗിംഗ് ചെക്ക്‌പോസ്റ്റുകൾ

ലിനക്സിനുള്ള യഥാർത്ഥ സ്റ്റാൻഡേർഡ് ഫയൽ സിസ്റ്റം Ext2fs ആയിരുന്നു. Ext2 ഐ-നോഡ് ഘടനയെ അടിസ്ഥാനമാക്കിയുള്ളതാണ്. ഐ-നോഡിൽ ഫയലിനെക്കുറിച്ചുള്ള വിവരങ്ങളും ഫയൽ സ്ഥിതിചെയ്യുന്ന ഡാറ്റ ബ്ലോക്കുകളിലേക്കുള്ള പോയിൻ്ററുകളും അടങ്ങിയിരിക്കുന്നു. I/O പ്രകടനം മെച്ചപ്പെടുത്തുന്നതിന്, ഡാറ്റ താൽക്കാലികമായി സ്ഥിതി ചെയ്യുന്നു റാൻഡം ആക്സസ് മെമ്മറി. കാഷെയിൽ നിന്നുള്ള ഡാറ്റ ഡിസ്കിലേക്ക് എഴുതുന്നതിന് മുമ്പ് ഒരു പരാജയം സംഭവിച്ചാൽ പ്രശ്നം സംഭവിക്കുന്നു. ഇത് ഫയൽ സിസ്റ്റത്തിൽ ഒരു പൊരുത്തക്കേട് ഉണ്ടാക്കുന്നു. ഉദാഹരണത്തിന്, ഡിസ്കിൽ ഇതുവരെ സൃഷ്ടിക്കപ്പെട്ടിട്ടില്ലാത്ത ഒരു ഫയലിലേക്ക് ഒരു ലിങ്ക് ദൃശ്യമാകുന്നു, അല്ലെങ്കിൽ ഫയലുകൾ ഇതിനകം ഇല്ലാതാക്കി, പക്ഷേ അവയുടെ ഐ-നോഡുകളും ഡാറ്റ ബ്ലോക്കുകളും ഡിസ്കിൽ തന്നെ നിലനിൽക്കും. Fsck (ഫയൽ സിസ്റ്റം പരിശോധന - ഫയൽ സിസ്റ്റം പരിശോധന) - സ്റ്റാൻഡേർഡ് പ്രോഗ്രാംപൊരുത്തക്കേടുകൾ പരിഹരിക്കാൻ. ഒരേ ഒരു വഴിഇത് ചെയ്യുന്നതിന്, മുഴുവൻ ഡിസ്കും സ്കാൻ ചെയ്ത് i-നോഡുകൾ, ഡാറ്റ ബ്ലോക്കുകൾ, ഡയറക്ടറി ഉള്ളടക്കങ്ങൾ എന്നിവയ്ക്കിടയിലുള്ള എല്ലാ ഡിപൻഡൻസികളും പരിശോധിക്കുക. ഡിസ്ക് വോള്യങ്ങളുടെ വർദ്ധനവോടെ, ഈ നടപടിക്രമം വളരെയധികം സമയമെടുക്കാൻ തുടങ്ങി - ഗുരുതരമായ പ്രശ്നംസ്ഥിരമായി പ്രവർത്തിക്കേണ്ട സെർവറുകൾക്കായി.

ഇതാണ് മാറിയത് പ്രധാന കാരണംനടപ്പിലാക്കൽ ഫയൽ സിസ്റ്റങ്ങൾഡാറ്റാബേസുകളിൽ നിന്നും വീണ്ടെടുക്കൽ സാങ്കേതികവിദ്യയിൽ നിന്നും എടുത്ത ട്രാൻസാക്ഷൻ ടെക്നോളജി, ഇത് ജേണലിംഗ് ഫയൽ സിസ്റ്റങ്ങളുടെ ആവിർഭാവത്തിലേക്ക് നയിച്ചു.

ഫയൽ സിസ്റ്റം ഘടനയിൽ എന്തെങ്കിലും മാറ്റങ്ങൾ വരുത്തുന്നതിന് മുമ്പ് ഫയൽ മെറ്റാഡാറ്റയിലേക്കുള്ള അപ്‌ഡേറ്റുകൾ ഡിസ്‌കിലേക്ക് ലോഗ് ചെയ്‌തിരിക്കുന്നതിനാൽ ഡാറ്റ സമഗ്രത ഉറപ്പുനൽകുന്ന ഒരു ക്രാഷ്-ടോളറൻ്റ് ഫയൽ സിസ്റ്റമാണ് ജേർണൽ ഫയൽ സിസ്റ്റം. ഒരു പരാജയം സംഭവിച്ചാൽ, നഷ്ടപ്പെട്ട എല്ലാ ഡാറ്റയും വീണ്ടെടുക്കുമെന്ന് ഒരു ജേർണൽ ഫയൽ സിസ്റ്റം ഉറപ്പാക്കുന്നു. ഫയലുകളുടെ മെറ്റാ ഡാറ്റ ജേണലിങ്ങ് അല്ലെങ്കിൽ ലോഗിംഗ് രീതിയാണ് ഏറ്റവും സാധാരണമായ സമീപനം. ഏതെങ്കിലും മാറ്റത്തെക്കുറിച്ചുള്ള വിവരങ്ങൾ ഫയൽ സിസ്റ്റത്തിൻ്റെ റിസർവ്ഡ് ഏരിയയിലേക്ക് എഴുതിയിരിക്കുന്നു, അതിനുശേഷം മാത്രമേ മാറ്റം വരുത്തൂ എന്നതാണ് ഇതിൻ്റെ സാരം.

ഒരു ജേർണൽ ഫയൽ സിസ്റ്റം ഉപയോഗിക്കുന്ന ഒരു കമ്പ്യൂട്ടർ നിങ്ങൾ റീബൂട്ട് ചെയ്യുമ്പോൾ, പ്രതീക്ഷിച്ചതും എന്നാൽ വരുത്താത്തതുമായ മാറ്റങ്ങൾക്കായി ലോഗ് പരിശോധിച്ച് ഫയൽ സിസ്റ്റത്തിലേക്ക് എഴുതുന്നതിലൂടെ ഫയൽ സിസ്റ്റത്തിൻ്റെ സമഗ്രത മൗണ്ട് പ്രോഗ്രാമിന് ഉറപ്പാക്കാൻ കഴിയും. മിക്ക കേസുകളിലും, സിസ്റ്റം ഫയൽ സിസ്റ്റത്തിൻ്റെ സമഗ്രത പരിശോധിക്കേണ്ടതില്ല, അതായത് റീബൂട്ട് ചെയ്ത ഉടൻ തന്നെ കമ്പ്യൂട്ടർ ജോലിക്ക് ലഭ്യമാകും. അതനുസരിച്ച്, ഫയൽ സിസ്റ്റത്തിലെ പ്രശ്നങ്ങൾ കാരണം ഡാറ്റ നഷ്ടപ്പെടാനുള്ള സാധ്യത ഗണ്യമായി കുറയുന്നു.

Linux-ൽ മൂന്ന് പ്രധാന ജേർണൽ FS-കൾ ഉണ്ട്: Namesys-ൽ നിന്നുള്ള ReiserFS, SGI-ൽ നിന്നുള്ള XFS, Ext2 സൃഷ്ടിക്കാൻ സഹായിച്ച സ്റ്റീഫൻ ട്വീഡി വികസിപ്പിച്ച Ext3.

പരമ്പരാഗത യുണിക്സ് സിസ്റ്റങ്ങളെ അപേക്ഷിച്ച് പ്രകടനം മെച്ചപ്പെടുത്തുന്നതിനുള്ള ഏറ്റവും എളുപ്പ മാർഗം ഉപയോഗം ഒഴിവാക്കുക എന്നതാണ് ബന്ധപ്പെട്ട ലിസ്റ്റുകൾഅല്ലെങ്കിൽ ബിറ്റ്മാപ്പുകൾ, സ്കേലബിലിറ്റി പ്രശ്നമുള്ളതും വലിയ ശേഷിയുള്ള പുതിയ ഡിസ്കുകൾക്ക് അനുയോജ്യമല്ലാത്തതുമാണ്. എല്ലാ പുതിയ സിസ്റ്റങ്ങളും സമതുലിതമായ മരങ്ങൾ (B-Trees) അല്ലെങ്കിൽ അതിൻ്റെ ഒരു വ്യതിയാനം (B+Trees) ഉപയോഗിക്കുന്നു.

ഒരു വൃക്ഷത്തിൽ ആന്തരികവും ഇല നോഡുകളും അടങ്ങിയിരിക്കുന്നു. ഓരോ നോഡും ഒരു ഡിസ്ക് ബ്ലോക്കാണ്. ഓരോ ഒബ്ജക്റ്റിനും (ഫയൽ, ഡയറക്‌ടറി) മറ്റ് ഫയൽ സിസ്റ്റങ്ങളിലെ ഐനോഡ് നമ്പറിന് സമാനമായി ഒരു തനത് കീ നൽകിയിരിക്കുന്നു. ആന്തരിക നോഡുകൾ പ്രധാനമായും ചൈൽഡ് നോഡുകളിലേക്കുള്ള കീകളും പോയിൻ്ററുകളും ഉൾക്കൊള്ളുന്നു. വൃക്ഷം ആരംഭിക്കുന്ന നോഡ് റൂട്ട് എന്നറിയപ്പെടുന്നു; ഒരു മരക്കൊമ്പിൻ്റെ അറ്റത്ത് ഇരിക്കുന്ന നോഡുകളെ ചിലപ്പോൾ ഇലകൾ എന്ന് വിളിക്കുന്നു.

B+Trees-ലെ തിരയൽ സമയം ഒബ്‌ജക്റ്റുകളുടെ എണ്ണത്തിന് (ഒരു ഡയറക്‌ടറിയിലെ ഫയലുകൾ അല്ലെങ്കിൽ ഒരു ഡിസ്‌കിലെ ബ്ലോക്കുകളുടെ എണ്ണം) ആനുപാതികമല്ല, മറിച്ച് ഈ സംഖ്യയുടെ ലോഗരിതം ആണ്. സമതുലിതമായ ഒരു മരത്തിൽ, എല്ലാ ശാഖകളും (വേരിൽ നിന്ന് ഇലയിലേക്കുള്ള പാതകൾ) ഒരേ നീളം (അല്ലെങ്കിൽ ഏകദേശം ഒരേ) ആണ്.

ReiserFS ഫയൽ സിസ്റ്റം ഒബ്‌ജക്‌റ്റുകൾ സംഘടിപ്പിക്കുന്നതിൽ B+Tree അടിസ്ഥാനമാക്കിയുള്ളതാണ്. ReiserFS മെറ്റാഡാറ്റ ലോഗിംഗ് മാത്രമേ നൽകുന്നുള്ളൂ. ഒരു ആസൂത്രിതമല്ലാത്ത റീബൂട്ട് സംഭവിക്കുമ്പോൾ, ഒരു പരാജയ സമയത്ത് ഉപയോഗിക്കുന്ന ബ്ലോക്കുകളിലെ ഡാറ്റ കേടായേക്കാം, അതിനാൽ ഒരു പരാജയത്തിന് ശേഷവും ഡാറ്റ കേടുകൂടാതെയിരിക്കുമെന്ന് ReiserFS ഉറപ്പുനൽകുന്നില്ല.

ചെറിയ ഫയലുകൾ ഉപയോഗിച്ച് പ്രകടനം മെച്ചപ്പെടുത്തുന്നതിന് പ്രത്യേകമായി ലക്ഷ്യമിട്ടുള്ള നിരവധി സവിശേഷതകളും ReiserFS-ന് ഉണ്ട്. അതിലൊന്ന് പ്രത്യേകതകള് ReiserFS എന്നത് ടെയിൽ പാക്കിംഗ് ആണ്. വാൽ എന്നത് ലോജിക്കൽ ബ്ലോക്കിനേക്കാൾ വലിപ്പം കുറവുള്ള ഒരു ഫയലാണ്, അല്ലെങ്കിൽ ഒരു ബ്ലോക്കിൽ താഴെയുള്ള ഫയലുകളുടെ ചില ഭാഗങ്ങൾ. സംരക്ഷിക്കാൻ സ്വതന്ത്ര സ്ഥലം ReiserFS ടെയിൽ ഫയൽ കംപ്രഷൻ ഉപയോഗിക്കുന്നു, ഇത് Ext2 നെ അപേക്ഷിച്ച് ഏകദേശം 5% കൂടുതൽ സ്ഥലം അനുവദിക്കുന്നു. വേഗത വർദ്ധിപ്പിക്കുന്നതിന്, ഒരു ഡിസ്ക് ബ്ലോക്കിലേക്കുള്ള ഒരു പോയിൻ്റർ എന്നതിലുപരി, ഫയലുകളുടെ ഉള്ളടക്കങ്ങൾ നേരിട്ട് b*ട്രീയ്ക്കുള്ളിൽ സംഭരിക്കാൻ ReiserFS-ന് കഴിയും.

90 കളുടെ തുടക്കത്തിൽ (1992-1993) സിലിക്കൺ ഗ്രാഫിക്സ് (ഇപ്പോൾ എസ്ജിഐ) XFS സൃഷ്ടിച്ചു. മൾട്ടിമീഡിയ കമ്പ്യൂട്ടറുകൾ Irix OS ഉപയോഗിച്ച്. ഫയൽ സിസ്റ്റം വളരെ ഓറിയൻ്റഡ് ആയിരുന്നു വലിയ ഫയലുകൾഫയൽ സിസ്റ്റങ്ങളും. 2001 മെയ് 1-ന്, SGI ലിനക്സിനുള്ള XFS-ൻ്റെ ആദ്യ പതിപ്പ് പുറത്തിറക്കി.

ഫയൽ സിസ്റ്റം സ്കേലബിളിറ്റി വർദ്ധിപ്പിക്കുന്നതിന്, XFS B+Trees വിപുലമായി ഉപയോഗിക്കുന്നു. മറ്റൊരു ബ്ലോക്ക് ഉപകരണത്തിൽ ലോഗ് സൂക്ഷിക്കാൻ XFS അനുവദിക്കുന്നു.

എക്സ്എഫ്എസ്സിന് ഡിലേഡഡ് അലോക്കേഷൻ എന്നൊരു സവിശേഷതയുണ്ട് - കാഷെയിൽ എഴുതിയിരിക്കുന്നതുപോലെ ഒരു ഫയലിലേക്ക് ബ്ലോക്കുകൾ അനുവദിക്കുന്നതിനുപകരം, എക്സ്എഫ്എസ് ഫയൽ സിസ്റ്റത്തിൽ ബ്ലോക്കുകൾ റിസർവ് ചെയ്യുന്നു, ഡാറ്റ പ്രത്യേകമായി സ്ഥാപിക്കുന്നു. വെർച്വൽ സോണുകൾ(വെർച്വൽ വ്യാപ്തികൾ). മുഴുവൻ ഫയലും മെമ്മറിയിൽ അടങ്ങിയിരിക്കുമ്പോൾ, അത് സാധാരണയായി തുടർച്ചയായ ഒരു കഷണത്തിൽ സ്ഥാപിക്കാം ഡിസ്ക് സ്പേസ്. ഇത് ഫയൽ വിഘടനം തടയുന്നു.

പരമാവധി ഫയൽ വലുപ്പം - 9 ദശലക്ഷം ടിബി

ReiserFS-ൽ, ഒരു അപ്രതീക്ഷിത റീബൂട്ട് കാരണമാകാം മാറ്റാവുന്ന ഫയൽഒരിക്കൽ മുതൽ ശകലം റിമോട്ട് ഫയൽ. ഡാറ്റയുടെ വ്യക്തമായ നഷ്ടം കൂടാതെ, ഇത് സാങ്കൽപ്പികമായി കൂടുതൽ ഗുരുതരമായ പ്രത്യാഘാതങ്ങൾ ഉണ്ടാക്കും. ഏതെങ്കിലും "അണ്ടർറൈറ്റഡ്" ബ്ലോക്കുകൾ പൂജ്യങ്ങൾ കൊണ്ട് നിറച്ചിട്ടുണ്ടെന്ന് XFS-ന് ഒരു ഗ്യാരണ്ടിയുണ്ട്. പൂജ്യം ബൈറ്റുകൾ ഉള്ള ബ്ലോക്കുകൾ മുതൽ സിസ്റ്റം ഫയലുകൾഅവഗണിക്കപ്പെടുന്നു, സുരക്ഷാ പഴുതുകൾ ഇല്ലാതായി.

Ext3 എന്നത് Ext2-ലേക്കുള്ള ഒരു ആഡ്-ഓൺ ആണ്. ഒരു വശത്ത്, കൂടുതൽ പ്രവർത്തനങ്ങളുടെ ഒരു ലോഗ് സൂക്ഷിക്കാൻ ഇത് നിങ്ങളെ അനുവദിക്കുന്നു വേഗം സുഖം പ്രാപിക്കൽ. എന്നാൽ ഈ ഫയൽ സിസ്റ്റത്തിന് Ext2-ൽ നിന്ന് ചില പരിമിതികൾ ലഭിക്കുന്നു (ഉദാഹരണത്തിന്, ഇത് ബ്ലോക്ക് അധിഷ്ഠിതമാണ് കൂടാതെ ഫയലുകളും ഡയറക്ടറികളും തിരയുമ്പോൾ ബ്രൂട്ട് ഫോഴ്‌സ് ഉപയോഗിക്കുന്നു), അതിനാൽ ഇതിനെ ശുദ്ധമായ ജേർണലിംഗ് ഫയൽ സിസ്റ്റം എന്ന് വിളിക്കാൻ കഴിയില്ല.

മറ്റേതെങ്കിലും ഫയൽ സിസ്റ്റത്തിൽ ജേണൽ സ്ഥിതിചെയ്യാം. ഒരു പങ്കിട്ട ജേണലിനൊപ്പം ഒന്നിലധികം Ext3 ഫയൽ സിസ്റ്റങ്ങൾ സാധ്യമാണ്.

/etc/fstab ഫയലിൽ നിന്ന് പ്രവർത്തനക്ഷമമാക്കാവുന്ന, Ext3 പിന്തുണയ്ക്കുന്ന ലോഗിംഗ് തരങ്ങൾ:

  • ഡാറ്റ=ജേണൽ (പൂർണ്ണ ഡാറ്റ ജേണലിംഗ് മോഡ്) - എല്ലാ പുതിയ ഡാറ്റയും ആദ്യം ജേണലിലേക്ക് എഴുതുകയും അതിനുശേഷം മാത്രമേ അതിൻ്റെ സ്ഥിരമായ സ്ഥാനത്തേക്ക് മാറ്റുകയുള്ളൂ. ഒരു ക്രാഷ് സംഭവിക്കുമ്പോൾ, ലോഗ് വീണ്ടും വായിക്കാൻ കഴിയും, ഡാറ്റയും മെറ്റാഡാറ്റയും ഒരു സ്ഥിരതയുള്ള അവസ്ഥയിലേക്ക് തിരികെ കൊണ്ടുവരുന്നു. വേഗത കുറഞ്ഞതും എന്നാൽ ഏറ്റവും വിശ്വസനീയവുമാണ്.
  • data=ordered – ഫയൽ സിസ്റ്റം മെറ്റാഡാറ്റയിലെ മാറ്റങ്ങൾ മാത്രം രേഖപ്പെടുത്തുന്നു, എന്നാൽ ലോജിക്കലി മെറ്റാഡാറ്റയും ഡാറ്റ ബ്ലോക്കുകളും ട്രാൻസാക്ഷൻ എന്ന് വിളിക്കപ്പെടുന്ന ഒരൊറ്റ മൊഡ്യൂളായി തരംതിരിച്ചിരിക്കുന്നു. പുതിയ മെറ്റാഡാറ്റ ഡിസ്കിലേക്ക് എഴുതുന്നതിന് മുമ്പ്, അനുബന്ധ ഡാറ്റ ബ്ലോക്കുകൾ ആദ്യം എഴുതുന്നു. ഈ മോഡ് സ്ഥിരസ്ഥിതിയായി സജ്ജീകരിച്ചിരിക്കുന്നു. ഒരു ഫയലിൻ്റെ അവസാനം ഡാറ്റ ചേർക്കുമ്പോൾ, ഡാറ്റ=ഓർഡർ ചെയ്ത മോഡ് സമഗ്രത ഉറപ്പാക്കാൻ ഉറപ്പുനൽകുന്നു (പൂർണ്ണ ഡാറ്റ ജേണലിംഗ് മോഡ് പോലെ). എന്നിരുന്നാലും, നിലവിലുള്ളവയിൽ ഡാറ്റ ഒരു ഫയലിലേക്ക് എഴുതിയിട്ടുണ്ടെങ്കിൽ, പരിഷ്കരിച്ചവയുമായി "യഥാർത്ഥ" ബ്ലോക്കുകൾ മിക്സ് ചെയ്യാനുള്ള സാധ്യതയുണ്ട്. ഇത് ഡാറ്റയുടെ ഫലമാണ്=ഓർഡർ ചെയ്തിട്ടില്ലാത്ത റെക്കോർഡുകൾ എവിടെയാണ് പുതിയ ബ്ലോക്ക്നിലവിലുള്ളതിൻ്റെ മുകളിൽ കിടക്കുന്നു, മെറ്റാഡാറ്റയിൽ മാറ്റം വരുത്തുന്നില്ല.
  • ഡാറ്റ=റൈറ്റ്ബാക്ക് (മെറ്റാഡാറ്റ മാത്രം) - ഫയൽ സിസ്റ്റം മെറ്റാഡാറ്റയിലെ മാറ്റങ്ങൾ മാത്രമേ എഴുതിയിട്ടുള്ളൂ. മിക്കതും ദ്രുത രീതിലോഗിംഗ്. XFS-ലും ReiserFS-ലും ഉപയോഗിക്കുന്നത് പോലെ തന്നെ.

ഫയൽ NTFS സിസ്റ്റം 1993 ൽ വിൻഡോസ് NT 3.5 ഉപയോഗിച്ച് അതിൻ്റെ അസ്തിത്വം ആരംഭിച്ചു. ഇതിന് നൂറുകണക്കിന് ടെറാബൈറ്റ് വലിപ്പമുള്ള ഡിസ്കുകൾ നിയന്ത്രിക്കാനാകും.

ഒരു NTFS വോള്യത്തിലെ ഓരോ ഫയലും ഒരു എൻട്രിയാൽ പ്രതിനിധീകരിക്കുന്നു പ്രത്യേക ഫയൽ, മാസ്റ്റർ ഫയൽ ടേബിൾ (MFT - മാസ്റ്റർ ഫയൽ ടേബിൾ) എന്ന് വിളിക്കുന്നു. ഈ പട്ടികയിലെ ആദ്യ എൻട്രി പ്രധാന ഫയൽ പട്ടികയെ തന്നെ വിവരിക്കുന്നു;

ഇതിന് പിന്നാലെയാണ് എംഎഫ്ടി മിറർ റെക്കോർഡ്. ആദ്യമാണെങ്കിൽ MFT പ്രവേശനംനശിപ്പിക്കപ്പെട്ടു, തുടർന്ന് NTFS മിറർ MFT ഫയൽ കണ്ടെത്താൻ രണ്ടാമത്തെ എൻട്രി വായിക്കുന്നു.

മൂന്നാമത്തെ MFT റെക്കോർഡ് ലോഗ് ഫയൽ ആണ്; ഒരു പരാജയം സംഭവിച്ചാൽ ഫയലുകൾ വീണ്ടെടുക്കാൻ ലോഗ് ഫയൽ സിസ്റ്റം ഉപയോഗിക്കുന്ന ഇടപാട് ഘട്ടങ്ങളുടെ ഒരു ലിസ്റ്റ് അടങ്ങിയിരിക്കുന്നു. പതിനേഴാമത്തെയും തുടർന്നുള്ള പ്രധാന എൻട്രികളും ഫയൽ പട്ടികയഥാർത്ഥ ഫയലുകളും ഡയറക്ടറികളും ഉപയോഗിക്കുന്നു.

ചെറിയ ഫയലുകളും ഡയറക്‌ടറികളും ഒരു മാസ്റ്റർ ഫയൽ ടേബിൾ എൻട്രിയിൽ പൂർണ്ണമായും ഉൾക്കൊള്ളാൻ കഴിയും. MFT ഘടനയിൽ എഴുതാൻ കഴിയാത്ത ഡയറക്‌ടറി എൻട്രികൾ അടങ്ങിയ ബാഹ്യ ക്ലസ്റ്ററുകളിലേക്കുള്ള പോയിൻ്ററുകളുള്ള എൻട്രികളുള്ള വലിയ ഡയറക്‌ടറികൾ ബി-ട്രീകളായി ക്രമീകരിച്ചിരിക്കുന്നു.

ജേർണലിങ്ങിൻ്റെ വർത്തമാനവും ഭാവിയും

ജേണലിംഗ് ഫയൽ സിസ്റ്റങ്ങൾക്ക് നിരവധി നിർവചനങ്ങൾ ഉണ്ട്, എന്നാൽ എല്ലാവർക്കും മനസ്സിലാക്കാൻ കഴിയുന്ന ഒരു വാക്ക് നൽകാം: പ്രോഗ്രാമിൽ മടുത്തവർക്കുള്ള ഒരു സംവിധാനമാണ് ജേണലിംഗ് ഫയൽ സിസ്റ്റം. fsck പരിശോധനകൾലോഡിംഗ് സമയത്ത്. പരാജയം സഹിഷ്ണുത പുലർത്തുന്ന സംവിധാനങ്ങൾ എന്ന ആശയത്തോട് അടുപ്പമുള്ളവർക്കുള്ള ഒരു സംവിധാനം കൂടിയാണിത്. നിങ്ങൾ തെറ്റായി പവർ ഓഫ് ചെയ്താൽ സാധാരണ സംവിധാനംലോഗിംഗ് ഇല്ലാത്തിടത്ത്, OS ഈ വസ്തുത കണ്ടെത്തി ഡിസ്ക് ഇൻ്റഗ്രിറ്റി ചെക്ക് യൂട്ടിലിറ്റി fsck പ്രവർത്തിപ്പിക്കുമ്പോൾ അടുത്ത ബൂട്ട്. ഈ യൂട്ടിലിറ്റി ഫയൽ സിസ്റ്റം സ്കാൻ ചെയ്യുകയും ഡാറ്റയ്ക്ക് ദോഷം വരുത്താതെ പ്രശ്നങ്ങൾ പരിഹരിക്കാൻ ശ്രമിക്കുകയും ചെയ്യുന്നു. സ്ഥിരീകരണ പ്രക്രിയയ്ക്ക് വളരെയധികം സമയമെടുത്തേക്കാം. ചിലപ്പോൾ ഫയൽ സിസ്റ്റത്തിന് കേടുപാടുകൾ സംഭവിക്കുകയും OS സിംഗിൾ-യൂസർ മോഡിൽ മാത്രം ബൂട്ട് ചെയ്യുകയും കൂടുതൽ വീണ്ടെടുക്കൽ നടത്താൻ ഉപയോക്താവിനെ പ്രേരിപ്പിക്കുകയും ചെയ്യുന്നു.

fsck എന്ന് പറയുക

അതിലും മോശമായ കാര്യം, fsck പ്രക്രിയ പ്രവർത്തിക്കുന്നുണ്ടാകാം എന്നതാണ് ഓപ്പറേറ്റിംഗ് സിസ്റ്റംമെറ്റാഡാറ്റ ശരിയാണെന്ന് ഉറപ്പാക്കാൻ ഫയൽ സിസ്റ്റം മൌണ്ട് ചെയ്യുമ്പോൾ ഓട്ടോമാറ്റിക് (ഒരു അഴിമതിയും ഇല്ലെങ്കിൽ പോലും). അങ്ങനെ, ഇല്ലാതാക്കുന്നു അനാവശ്യ പരിശോധനകൾഫയൽ സിസ്റ്റം സമഗ്രത മെച്ചപ്പെടുത്തുന്നതിനുള്ള ഒരു ശ്രദ്ധേയമായ മേഖലയാണ്.

അതിനാൽ ആർക്കൊക്കെ ജേർണലിംഗ് ഫയൽ സിസ്റ്റങ്ങൾ ആവശ്യമാണെന്ന് ഇപ്പോൾ നിങ്ങൾക്കറിയാം, എന്തുകൊണ്ട് അത്തരം സിസ്റ്റങ്ങൾക്ക് fsck പരിശോധനകൾ ആവശ്യമില്ല? ചുരുക്കത്തിൽ, അവർ ഒരു പ്രത്യേക ജേണൽ പരിപാലിക്കുന്നതിനാൽ. ഫയൽ സിസ്റ്റത്തിലെ മാറ്റങ്ങളുമായി ബന്ധപ്പെട്ട എല്ലാ പ്രവർത്തനങ്ങളും രേഖപ്പെടുത്തുന്ന ഒരു റിംഗ് ബഫർ ആയ ഒരു ഫയലാണ് ലോഗ്. ആനുകാലികമായി, ഈ മാറ്റങ്ങൾ ഫയൽ സിസ്റ്റത്തിൽ പ്രയോഗിക്കുന്നു. ഒരു പരാജയം സംഭവിച്ചാൽ, സംരക്ഷിക്കാത്ത ഡാറ്റ വീണ്ടെടുക്കുന്നതിനും മെറ്റാഡാറ്റ അഴിമതി തടയുന്നതിനുമുള്ള ഒരു ആരംഭ പോയിൻ്റായി ലോഗ് ഉപയോഗിക്കാം.

ചുരുക്കത്തിൽ, ഒരു ജേണൽ ഫയൽ സിസ്റ്റം ഒരു ക്രാഷ്-ടോളറൻ്റ് ഫയൽ സിസ്റ്റമാണ്, അതിൽ പരിഷ്ക്കരണ കമാൻഡുകൾ എക്സിക്യൂട്ട് ചെയ്യുന്നതിനുമുമ്പ് ലോഗ് ചെയ്യപ്പെടുന്നു, അതുവഴി മെറ്റാഡാറ്റയുടെ അഴിമതി ഒഴിവാക്കുന്നു. (ചിത്രം 1 കാണുക). ലിനക്സിൽ പതിവുപോലെ, അത്തരം സിസ്റ്റങ്ങളുടെ നിരവധി വ്യതിയാനങ്ങൾ ഉണ്ട്. നമുക്ക് ചെയ്യാം ചെറിയ അവലോകനംഫയൽ സിസ്റ്റങ്ങളുടെ ചരിത്രം, തുടർന്ന് ഇന്ന് ലഭ്യമായ ഫയൽ സിസ്റ്റങ്ങളും അവയുടെ വ്യത്യാസങ്ങളും നോക്കുക.

എന്താണ് മെറ്റാഡാറ്റ?

മെറ്റാഡാറ്റവിളിക്കുന്നു സേവന ഘടനകൾഅടിസ്ഥാന ഡാറ്റ സംഭരിക്കുന്നതിന് ആവശ്യമായ ഡാറ്റ. ഒരു ഫയലും ഡയറക്‌ടറിയും സൃഷ്‌ടിക്കുകയും ഇല്ലാതാക്കുകയും ചെയ്യുക, ഒരു ഫയൽ വർദ്ധിപ്പിക്കുക, ഒരു ഫയൽ വെട്ടിച്ചുരുക്കുക തുടങ്ങിയ പ്രവർത്തനങ്ങൾ മെറ്റാഡാറ്റയെ ബാധിക്കുന്നു.

ചിത്രം 1. ഒരു സാധാരണ ജേർണൽ ഫയൽ സിസ്റ്റം.

ലിനക്സ് ജേർണൽഡ് ഫയൽ സിസ്റ്റങ്ങളുടെ ചരിത്രം

JFS (Journaled File System) എന്ന ജേർണലിംഗ് ഫയൽ സിസ്റ്റം ആദ്യമായി വികസിപ്പിച്ചെടുത്തത് IBM® ആണ്. JFS-ൻ്റെ ആദ്യ പതിപ്പ് 1990-ൽ അവതരിപ്പിച്ചു ആധുനിക പതിപ്പ് JFS2 ആയി Linux-ൽ പിന്തുണയ്ക്കുന്നു, പിന്നീട് വികസിപ്പിച്ചെടുത്തു. 1994-ൽ, സിലിക്കൺ ഗ്രാഫിക്സ് ഉയർന്ന പ്രകടനമുള്ള ഫയൽ അവതരിപ്പിച്ചു XFS സിസ്റ്റം IRIX OS-നായി. 2001-ൽ, XFS ലിനക്സിലേക്ക് പോർട്ട് ചെയ്തു. 1998-ൽ, അമിഗ സിസ്റ്റങ്ങൾക്കായി ഒരു ഫയൽ സിസ്റ്റം വികസിപ്പിച്ചെടുത്തു സ്മാർട്ട് ഫയൽസിസ്റ്റം (SFS), അത് പിന്നീട് പുറത്തിറക്കി ഗ്നു ലൈസൻസ്ലെസ്സർ ജനറൽ പബ്ലിക് ലൈസൻസും (LGPL) Linux 2005-ൽ പിന്തുണയും ലഭിച്ചു. ഏറ്റവും വ്യാപകമായി ഉപയോഗിക്കുന്ന ഫയൽ സിസ്റ്റം ext3fs ആണ് (ഇംഗ്ലീഷിൽ നിന്ന്. മൂന്നാമത്തേത് നീട്ടി ഫയൽ സിസ്റ്റം ), ഇത് ലോഗിംഗ് ചേർത്തുള്ള ext2 സിസ്റ്റത്തിൻ്റെ വിപുലീകരണമാണ്. ext3fs പിന്തുണ ലിനക്സിൽ 2001 ൽ പ്രത്യക്ഷപ്പെട്ടു. ഒടുവിൽ, വ്യാപകമായി ഉപയോഗിക്കുന്ന ജേർണൽ ഫയൽ ഫയൽ ReiserFS സിസ്റ്റംവികസനത്തിന് നിരവധി പുതിയ വഴികളും അവസരങ്ങളും തുറന്നു. എന്നിരുന്നാലും, ഈ സംവിധാനത്തിൻ്റെ വികസനം അതിൻ്റെ രചയിതാവിൻ്റെ നിയമപരമായ പ്രശ്നങ്ങൾ കാരണം മന്ദഗതിയിലായി.

ലോഗിംഗ് തരങ്ങൾ

എല്ലാ ജേണൽ ചെയ്ത ഫയൽ സിസ്റ്റങ്ങളും ഫയൽ സിസ്റ്റം മാറ്റങ്ങൾ ബഫർ ചെയ്യാൻ ഒരു ജേണൽ നിലനിർത്തുന്നു (ഇത് ആവശ്യമാണ് ദുരിത മോചനം), എന്നാൽ എന്ത്, എപ്പോൾ ലോഗ് ചെയ്യണം എന്നതിന് വ്യത്യസ്ത തന്ത്രങ്ങളുണ്ട്. റൈറ്റ്ബാക്ക് മോഡ്, ഓർഡറിംഗ് മോഡ്, ഡാറ്റ മോഡ് എന്നിവയാണ് ഏറ്റവും സാധാരണമായ മൂന്ന് തന്ത്രങ്ങൾ.

IN എഴുതാനുള്ള മോഡ്മെറ്റാഡാറ്റ മാത്രമേ ജേണൽ ചെയ്തിട്ടുള്ളൂ, കൂടാതെ ഡാറ്റ ബ്ലോക്കുകൾ നേരിട്ട് ഡിസ്കിലേക്ക് എഴുതുന്നു. ഇത് ഫയൽ സിസ്റ്റം ഘടനയുടെ അലംഘനീയതയ്ക്ക് സംഭാവന നൽകുകയും കേടുപാടുകളിൽ നിന്ന് സംരക്ഷിക്കുകയും ചെയ്യുന്നു, പക്ഷേ ഡാറ്റയുടെ കേടുപാടുകൾ ഇപ്പോഴും സാധ്യമാണ് (ഉദാഹരണത്തിന്, ജേണലിലേക്ക് മെറ്റാഡാറ്റ എഴുതിയതിന് ശേഷം ഒരു സിസ്റ്റം ക്രാഷ് സംഭവിക്കുകയാണെങ്കിൽ, പക്ഷേ ഡാറ്റയുടെ ഒരു ബ്ലോക്ക് എഴുതുന്നതിന് മുമ്പ്). തീരുമാനിക്കുക നിർദ്ദിഷ്ട പ്രശ്നംഅനുവദിക്കുന്നു ഓർഡർ മോഡ്. ഈ മോഡിൽ, മെറ്റാഡാറ്റ മാത്രമേ ലോഗ് ചെയ്തിട്ടുള്ളൂ, എന്നാൽ മെറ്റാഡാറ്റ ലോഗ് ചെയ്യപ്പെടുന്നതിന് മുമ്പ് ഡാറ്റ തന്നെ എഴുതിയിരിക്കുന്നു. ഇത് വീണ്ടെടുക്കലിനുശേഷം ഫയൽ സിസ്റ്റം ഡാറ്റ സ്ഥിരത ഉറപ്പാക്കുന്നു. അവസാനമായി, ലോഗിൻ ചെയ്യാൻ കഴിയും ഡാറ്റ മോഡ്, ഇതിൽ മെറ്റാഡാറ്റയും ഡാറ്റയും ലോഗ് ചെയ്തിരിക്കുന്നു. ഈ മോഡ് ഉണ്ട് ഏറ്റവും ഉയർന്ന നിലകേടുപാടുകൾക്കും ഡാറ്റ നഷ്‌ടത്തിനും പ്രതിരോധം, പക്ഷേ കുറഞ്ഞ പ്രകടനത്തിൻ്റെ പോരായ്മയുണ്ട്, കാരണം എല്ലാ ഡാറ്റയും രണ്ടുതവണ എഴുതിയിരിക്കുന്നു (ആദ്യം ലോഗിലേക്കും പിന്നീട് ഡിസ്കിലേക്കും).

ലോഗ് ചെയ്‌ത മാറ്റങ്ങൾ പ്രയോഗിക്കുന്നതിനുള്ള നിയമങ്ങളും സമീപനങ്ങൾക്കിടയിൽ വ്യത്യാസപ്പെട്ടേക്കാം. ഉദാഹരണത്തിന്, എപ്പോഴാണ് മാറ്റങ്ങൾ പ്രയോഗിക്കേണ്ടത്? എപ്പോഴാണ് മാസിക നിറയുന്നത്? അല്ലെങ്കിൽ ഒരു നിശ്ചിത സമയപരിധി അവസാനിക്കുമ്പോൾ?

ഫയൽ സിസ്റ്റംസ് ടുഡേ ജേർണൽ ചെയ്തു

ഇന്ന്, നിരവധി ജേർണലിംഗ് ഫയൽ സിസ്റ്റങ്ങൾ സജീവമായി ഉപയോഗിക്കുന്നു, അവയിൽ ഓരോന്നിനും അതിൻ്റേതായ ഗുണങ്ങളും ദോഷങ്ങളുമുണ്ട്. ഏറ്റവും ജനപ്രിയമായ നാല് ജേർണലിംഗ് ഫയൽ സിസ്റ്റങ്ങൾ ചുവടെയുണ്ട്.

JFS2

JFS2 (എന്നും അറിയപ്പെടുന്നു മെച്ചപ്പെട്ട ജേണലിംഗ് ഫയൽ സിസ്റ്റം) ആണ് ആദ്യത്തെ ജേർണൽ ഫയൽ സിസ്റ്റം കൂടാതെ ദീർഘനാളായി Linux-ലേക്ക് പോർട്ട് ചെയ്യുന്നതിന് മുമ്പ് IBM AIX® ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിൽ ഉപയോഗിച്ചിരുന്നു. JFS2 ഒരു 64-ബിറ്റ് ഫയൽ സിസ്റ്റമാണ്, അത് യഥാർത്ഥ JFS-ൽ നിന്ന് വേരുകൾ എടുക്കുന്നു, സ്കേലബിളിറ്റിയിലും മൾട്ടിപ്രൊസസർ ആർക്കിടെക്ചറുകൾക്കുള്ള പിന്തുണയിലും ഗണ്യമായി മെച്ചപ്പെടുത്തിയിട്ടുണ്ട്.

JFS2 ഇൻ-ഓർഡർ ജേർണലിംഗ്, ഉയർന്ന പ്രകടനം, സബ്-സെക്കൻഡ് വീണ്ടെടുക്കൽ സമയം എന്നിവ പിന്തുണയ്ക്കുന്നു. പ്രകടനം മെച്ചപ്പെടുത്തുന്നതിന്, അത് പരിധി അടിസ്ഥാനമാക്കിയുള്ള ഫയൽ പ്ലേസ്‌മെൻ്റ് രീതി ഉപയോഗിക്കുന്നു. വിസ്തൃതി അടിസ്ഥാനമാക്കിയുള്ള പ്ലെയ്‌സ്‌മെൻ്റ്ഒരേപോലെയുള്ള പല ബ്ലോക്കുകളേക്കാൾ തുടർച്ചയായി നിരവധി വിഭാഗങ്ങളിൽ ഫയൽ സ്ഥാപിക്കുക എന്നാണ് അർത്ഥമാക്കുന്നത്. തുടർച്ച കാരണം, ഈ വിഭാഗങ്ങൾ വേഗത്തിലുള്ള വായനയും എഴുത്തും നൽകുന്നു. അധിക ആനുകൂല്യംവ്യാപ്തികൾ - മെറ്റാഡാറ്റയിൽ പ്രവർത്തിക്കുന്നതിനുള്ള കുറഞ്ഞ ചിലവ്. ഒരു ഫയൽ ബ്ലോക്കുകളിൽ സ്ഥാപിക്കുമ്പോൾ, ഓരോ ബ്ലോക്കിൻ്റെയും മെറ്റാഡാറ്റ രേഖപ്പെടുത്തുന്നു. വിപുലീകരണങ്ങൾ ഉപയോഗിക്കുകയാണെങ്കിൽ, സാധാരണയായി ഒന്നിലധികം ബ്ലോക്കുകൾ അടങ്ങുന്ന അളവുകൾക്കായുള്ള മെറ്റാഡാറ്റ മാറുന്നു.

JFS2 രണ്ടിനും B+ മരങ്ങൾ ഉപയോഗിക്കുന്നു ഫലപ്രദമായ തിരയൽഡയറക്‌ടറികളും പരിധി വിവരണങ്ങൾ കൈകാര്യം ചെയ്യാനും. JFS2-ന് ഡിസ്കിലേക്ക് മാറ്റങ്ങൾ വരുത്തുന്നതിന് അതിൻ്റേതായ നയമില്ല - പകരം ഇത് kupdate ഡെമൺ ടൈംഔട്ടിനെ അടിസ്ഥാനമാക്കിയുള്ളതാണ്.

എക്സ്എഫ്എസ്

IRIX OS-ന് വേണ്ടി 1995-ൽ സിലിക്കൺ ഗ്രാഫിക്സ് വികസിപ്പിച്ചെടുത്ത മറ്റൊരു ആദ്യകാല ജേണലിംഗ് ഫയൽ സിസ്റ്റമാണ് XFS. 2001-ൽ, XFS ലിനക്സിൽ നടപ്പിലാക്കി, അക്കാലത്ത് നന്നായി ചിന്തിച്ചതും വിശ്വസനീയവുമായ ഫയൽ സിസ്റ്റമായിരുന്നു.

XFS പൂർണ്ണമായ 64-ബിറ്റ് വിലാസം ഉപയോഗിക്കുകയും വളരെ നൽകുകയും ചെയ്യുന്നു ഉയർന്ന പ്രകടനംഡയറക്‌ടറികളും ഫയലുകളും ഉൾക്കൊള്ളാൻ B+ മരങ്ങൾ ഉപയോഗിക്കുന്നതിലൂടെ. എക്സ്എഫ്എസ് ഡാറ്റ വ്യാപ്തികളായി സംഭരിക്കുന്നു, വേരിയബിൾ പരിധി വലുപ്പങ്ങളെ പിന്തുണയ്ക്കുന്നു (512 ബൈറ്റുകൾ മുതൽ 64 കിലോബൈറ്റുകൾ വരെ). വ്യാപ്തികൾക്കൊപ്പം, XFS അലസമായ അലോക്കേഷനും ഉപയോഗിക്കുന്നു, ഇത് ഡിസ്കിലേക്ക് എഴുതാനുള്ള സമയമാകുന്നതുവരെ ബ്ലോക്കുകളുടെ അലോക്കേഷൻ വൈകിപ്പിക്കുന്നു. ഈ സവിശേഷത തുടർച്ചയായി നിരവധി ഡിസ്ക് ബ്ലോക്കുകൾ പൂരിപ്പിക്കുന്നതിനുള്ള സാധ്യത വർദ്ധിപ്പിക്കുന്നു, കാരണം റെക്കോർഡിംഗ് സമയത്ത് അവയുടെ എണ്ണം അറിയപ്പെടും.

XFS-ൻ്റെ മറ്റ് രസകരമായ പ്രോപ്പർട്ടികൾ ഫയൽ സിസ്റ്റം ഉപയോക്താക്കൾക്ക് ഒരു റിസർവ് അനുവദിക്കുമ്പോൾ ഉറപ്പുനൽകുന്ന I/O വേഗതയാണ് ബാൻഡ്വിഡ്ത്ത് I/O ഓപ്പറേഷനുകൾക്കും, ഡിസ്കിനും ആപ്ലിക്കേഷൻ ബഫറിനുമിടയിൽ നേരിട്ട് ഡാറ്റ പകർത്തുന്ന ഡയറക്റ്റ് I/O (ഒന്നിലധികം ബഫറുകളിലൂടെ പോകുന്നതിനുപകരം). XFS-ൽ ജേണലിംഗ് ചെയ്യുന്നത് റൈറ്റ്ബാക്ക് രീതി ഉപയോഗിച്ചാണ്.

മൂന്നാമത്തെ വിപുലീകൃത ഫയൽ സിസ്റ്റം (ext3fs)

മൂന്നാമത്തെ വിപുലീകൃത ഫയൽ സിസ്റ്റം (ext3fs) ഏറ്റവും പ്രശസ്തമായ ജേർണലിംഗ് ഫയൽ സിസ്റ്റമാണ്, ഇത് അറിയപ്പെടുന്ന ext2 ഫയൽ സിസ്റ്റത്തിൻ്റെ പരിണാമമായി ഉയർന്നു. വാസ്തവത്തിൽ, ഇത് ext2-മായി പൊരുത്തപ്പെടുന്നു, കാരണം ഇത് സമാന ഘടനകളിൽ പ്രവർത്തിക്കുന്നു, പക്ഷേ ഒരു ലോഗ് കൂട്ടിച്ചേർക്കുന്നു. കൂടാതെ, ഒരു ext3 പാർട്ടീഷൻ ext2 ആയി മൌണ്ട് ചെയ്യാം, അല്ലെങ്കിൽ tune2fs യൂട്ടിലിറ്റി ഉപയോഗിച്ച് ext2-നെ ext3 ആക്കി മാറ്റാം.

ext3fs മൂന്ന് ലോഗിംഗ് തന്ത്രങ്ങളെയും പിന്തുണയ്ക്കുന്നു ( തിരികെ എഴുതുക, ഓർഡർ ചെയ്യലും ഡാറ്റാ മോഡും), എന്നാൽ ഡിഫോൾട്ട് ഓർഡർ മോഡ് ഉപയോഗിക്കുന്നു. ലോഗ് ഡാറ്റ ഡിസ്കിലേക്ക് ട്രാൻസ്ഫർ ചെയ്യുന്നതിനുള്ള നയം കോൺഫിഗർ ചെയ്യാവുന്നതാണ്, എന്നാൽ തുടക്കത്തിൽ ലോഗിൻ്റെ 1/4 ഭാഗം നിറഞ്ഞിരിക്കുമ്പോഴോ ട്രാൻസ്ഫർ ടൈമറുകളിലൊന്ന് കാലഹരണപ്പെടുമ്പോഴോ കൈമാറ്റം നടക്കുന്നു.

ext3fs-ൻ്റെ പ്രധാന പോരായ്മകളിലൊന്ന്, ഇത് യഥാർത്ഥത്തിൽ ഒരു ജേണലിംഗ് ഫയൽ സിസ്റ്റം ആയിരിക്കാൻ ഉദ്ദേശിച്ചിരുന്നില്ല എന്നതാണ്. ഇത് ext2fs-നെ അടിസ്ഥാനമാക്കിയുള്ളതിനാൽ, മറ്റ് ഫയൽ സിസ്റ്റങ്ങളിൽ (വിസ്താരങ്ങൾ പോലുള്ളവ) കാണുന്ന പല നൂതന സവിശേഷതകളും ഇതിന് ഇല്ല. ReiserFs, JFS, XFS എന്നിവയുമായി താരതമ്യപ്പെടുത്തുമ്പോൾ ഇത് സാധാരണയായി മോശമായി പ്രവർത്തിക്കുന്നു, എന്നാൽ മറ്റ് പല ഫയൽ സിസ്റ്റങ്ങളെ അപേക്ഷിച്ച് CPU തീവ്രവും മെമ്മറി തീവ്രവുമാണ്.

ReiserFS

എന്താണ് ടൈലിംഗ് കോംപാക്ഷൻ?

ഫയലിന് വലുപ്പമുണ്ടെന്ന് പലപ്പോഴും സംഭവിക്കുന്നു ചെറിയ വലിപ്പംലോജിക്കൽ ബ്ലോക്ക്. അത്തരത്തിലുള്ള ഓരോ ഫയലിനും ഒരു മുഴുവൻ ബ്ലോക്ക് അനുവദിക്കുന്നതിനുപകരം, ബ്ലോക്കിൻ്റെ ഒരു ഭാഗം ഉപയോഗശൂന്യമായി വിടുക (ഈ ഭാഗത്തെ വിളിക്കുന്നു വാൽ), അവർ ഒരു ബ്ലോക്കിലേക്ക് നിരവധി ഫയലുകൾ ഫിറ്റ് ചെയ്യാൻ ശ്രമിക്കുന്നു. മറ്റ് ഫയൽ സിസ്റ്റങ്ങളെ അപേക്ഷിച്ച് ഈ രീതി സ്വതന്ത്ര സ്ഥലത്തിൻ്റെ 5% ലാഭം നൽകുന്നു, എന്നാൽ പ്രകടനത്തെ പ്രതികൂലമായി ബാധിക്കുന്നു.

ReiserFS ഫയൽ സിസ്റ്റം ആദ്യം മുതൽ തന്നെ ജേർണലിംഗ് ആയി രൂപകല്പന ചെയ്തതാണ്. 2001-ൽ, ഇത് 2.4 കേർണലിൻ്റെ പ്രധാന ശാഖയിൽ ചേർക്കപ്പെടുകയും ലിനക്സിൽ ദൃശ്യമാകുന്ന ആദ്യത്തെ ജേണലിംഗ് ഫയൽ സിസ്റ്റമായി മാറുകയും ചെയ്തു. ജേണലിങ്ങിൻ്റെ പ്രധാന രീതി സംഘടനയാണ്. ഓൺ-ദി-ഫ്ലൈ ഫയൽ സിസ്റ്റം സൈസ് വിപുലീകരണം പിന്തുണയ്ക്കുന്നു. ReiserFS പിന്തുണയ്ക്കുന്നു tailings കോംപാക്ഷൻചെറിയ ഫയലുകളിൽ പ്രവർത്തിക്കുമ്പോൾ ext3fs-നെ മറികടക്കാൻ അനുവദിക്കുന്ന ഫ്രാഗ്മെൻ്റേഷൻ ചലനാത്മകമായി കുറയ്ക്കുന്നതിന്.

ReiserFS (ReiserFS v3 എന്നും അറിയപ്പെടുന്നു) പലതും ഉപയോഗിക്കുന്നു ആധുനിക സമീപനങ്ങൾ, ഉദാഹരണത്തിന് B+-മരങ്ങൾ. ഫയൽ സിസ്റ്റം ഫോർമാറ്റ് ഒരൊറ്റ B+ ട്രീയെ അടിസ്ഥാനമാക്കിയുള്ളതാണ്, തിരയൽ പ്രവർത്തനങ്ങൾ പ്രത്യേകിച്ച് വേഗതയേറിയതും അളക്കാവുന്നതുമാക്കുന്നു. ലോഗ്-ടു-ഡിസ്ക് മൈഗ്രേഷൻ നയം ലോഗ് വലുപ്പത്തെ ആശ്രയിച്ചിരിക്കുന്നു, മൈഗ്രേറ്റ് ചെയ്യേണ്ട ബ്ലോക്കുകളുടെ എണ്ണത്തെ അടിസ്ഥാനമാക്കിയുള്ളതാണ്.

ReiserFS-ൻ്റെ പ്രശസ്തിക്ക് നിരവധി തവണ കേടുപാടുകൾ സംഭവിച്ചു: അവസാന സമയം- നിയമവുമായി സിസ്റ്റത്തിൻ്റെ രചയിതാവിൻ്റെ പ്രശ്നങ്ങൾ ( പൂർണമായ വിവരംവിഭാഗം കാണുക).

ജേർണൽ ഫയൽ സിസ്റ്റങ്ങളുടെ ഭാവി

വർത്തമാനകാലത്തെയും ഭൂതകാലത്തെയും ജേർണൽ ചെയ്ത ഫയൽ സിസ്റ്റങ്ങൾ കണ്ടുകഴിഞ്ഞാൽ, ഭാവിയിൽ എന്താണ് സംഭവിക്കുന്നതെന്ന് നോക്കാം (അല്ലാത്തത്).

റീസർ4

കെർണലിലേക്ക് ReiserFS വിജയകരമായി അവതരിപ്പിക്കുകയും പലതിലും ഉപയോഗിക്കുകയും ചെയ്ത ശേഷം ലിനക്സ് വിതരണങ്ങൾനെയിംസിസ് (ReiserFS-ന് പിന്നിലുള്ള കമ്പനി) ഒരു പുതിയ ജേണൽ ഫയൽ സിസ്റ്റമായ Reiser4-ൻ്റെ പ്രവർത്തനം ആരംഭിച്ചു, അത് പൂർണ്ണമായും അടിസ്ഥാനപരമായി നിർമ്മിച്ചതാണ്, കൂടാതെ നിരവധി നൂതന സവിശേഷതകൾ ഉൾക്കൊള്ളുന്നു.

ലോഗ് ഡാറ്റ മൈഗ്രേറ്റ് ചെയ്യുന്നതുവരെ (XFS-ൽ ചെയ്തതുപോലെ) റൈറ്റ് വാൻഡറിംഗും ഡിഫെറിംഗ് ബ്ലോക്ക് അലോക്കേഷനും ഉപയോഗിച്ചാണ് Reiser4-ൽ ലോഗിംഗ് മെച്ചപ്പെടുത്തുന്നത്. Reiser4 ആർക്കിടെക്ചർ ഉൾപ്പെടുത്തിയിട്ടുണ്ട് വഴക്കമുള്ള പിന്തുണപ്ലഗിനുകൾ (ഉദാഹരണത്തിന്, കംപ്രഷൻ അല്ലെങ്കിൽ എൻക്രിപ്ഷൻ പ്രവർത്തനം ചേർക്കുന്നതിന്), എന്നാൽ ഈ ആശയം Linux കമ്മ്യൂണിറ്റി നിരസിച്ചു, ഈ വിപുലമായ ഫംഗ്ഷനുകൾക്കുള്ള സ്ഥലം വെർച്വൽ ഫയൽ സിസ്റ്റം (VFS) സബ്സിസ്റ്റത്തിലാണെന്ന് വിശ്വസിച്ചു.

നെയിംസിസിൻ്റെ ഉടമയുടെയും അതേ സമയം ReiserFS-ൻ്റെ രചയിതാവിൻ്റെയും കുറ്റപത്രത്തിന് ശേഷം, Reiser4-ന് ചുറ്റുമുള്ള എല്ലാ വാണിജ്യ പ്രവർത്തനങ്ങളും താൽക്കാലികമായി നിർത്തിവച്ചു.

നാലാമത്തെ വിപുലീകൃത ഫയൽ സിസ്റ്റം

നാലാമത്തെ വിപുലീകൃത ഫയൽ സിസ്റ്റം (ext4fs) ext3fs-ൻ്റെ കൂടുതൽ വികസനമാണ്. നേരിട്ടുള്ളതും ഉള്ളതും ext3fs-ന് പകരമായി Ext4fs ഉദ്ദേശിച്ചുള്ളതാണ് പിന്നിലേക്ക് അനുയോജ്യം, എന്നാൽ നിരവധി മെച്ചപ്പെടുത്തലുകൾ ഉൾപ്പെടുന്നു (അവയിൽ ചിലത് ഈ അനുയോജ്യതയെ തകർക്കുന്നു). പ്രായോഗികമായി, നിങ്ങൾക്ക് ഒരു ext4 പാർട്ടീഷൻ ext3 ആയും തിരിച്ചും മൌണ്ട് ചെയ്യാം.

ആദ്യം, വലിയ വോള്യങ്ങൾക്കുള്ള (1 എക്സാബൈറ്റ് വരെ) പിന്തുണയുള്ള 64-ബിറ്റ് ഫയൽ സിസ്റ്റമാണ് ext4fs. ഇതിന് പരിധികൾ ഉപയോഗിക്കാനും കഴിയും, എന്നാൽ ഈ സാഹചര്യത്തിൽ അത് ext3fs-മായി അനുയോജ്യത നഷ്‌ടപ്പെടുത്തുന്നു. XFS, Reiser4 എന്നിവയ്ക്ക് സമാനമായി, ext4fs ഡിസ്കിൽ ബ്ലോക്ക് പ്ലേസ്മെൻ്റ് വൈകിപ്പിക്കുകയും ആവശ്യാനുസരണം സംഭവിക്കുകയും ചെയ്യുന്നു (ഇത് വിഘടനം കുറയ്ക്കുന്നു). രേഖയും സൂക്ഷിക്കുന്നു ചെക്ക്സംസ്കൂടുതൽ വിശ്വാസ്യതയ്ക്കായി ഉള്ളടക്കം. ബി+- അല്ലെങ്കിൽ ബി*-ട്രീകൾക്ക് പകരം, ഒരു പ്രത്യേക തരം ബി-ട്രീ ഉപയോഗിക്കുന്നു, വിളിക്കപ്പെടുന്നവ. എച്ച്-ട്രീ, ഇത് ഉപഡയറക്‌ടറികൾക്ക് കൂടുതൽ ഉള്ളതിന് അനുവദിക്കുന്നു വലിയ വലിപ്പം(ext3-ൽ ഇത് 32Kb ആയി പരിമിതപ്പെടുത്തിയിരിക്കുന്നു).

അലസമായ അലോക്കേഷൻ ഫ്രാഗ്മെൻ്റേഷൻ കുറയ്ക്കുന്നുണ്ടെങ്കിലും, കാലക്രമേണ ഫയൽ സിസ്റ്റം വലിയ വലിപ്പംഇപ്പോഴും ശകലങ്ങൾ. ഈ പ്രശ്നം പരിഹരിക്കുന്നതിനായി, e4defrag യൂട്ടിലിറ്റി വികസിപ്പിച്ചെടുത്തു, അത് defragment ചെയ്യാൻ ഉപയോഗിക്കാം പ്രത്യേക ഫയലുകൾഅല്ലെങ്കിൽ ഒരു മുഴുവൻ ഫയൽ സിസ്റ്റം.

ext4fs ഉം ext3fs ഉം തമ്മിലുള്ള മറ്റൊരു രസകരമായ വ്യത്യാസം ഫയൽ ടൈംസ്റ്റാമ്പുകളുടെ കൃത്യതയാണ്. ext3-ൽ, ടൈംസ്റ്റാമ്പ് അളവ് ഒരു സെക്കൻഡ് ആണ്. Ext4fs ഭാവിയിലേക്ക് നോക്കുന്നു: പ്രോസസർ വേഗതയുടെയും ഇൻ്റർഫേസുകളുടെയും തുടർച്ചയായ വളർച്ചയോടെ, കൂടുതൽ കൃത്യമായ അളവ്. അതിനാൽ, ഒരു നാനോ സെക്കൻഡ് സമയപരിധിയായി കണക്കാക്കി.

ext4fs ഉൾപ്പെടുത്തിയിട്ടുണ്ടെങ്കിലും ലിനക്സ് കേർണൽ 2.6.19 പതിപ്പിൽ, ഇത് ഇതിനകം സ്ഥിരതയുള്ളതായി കണക്കാക്കാം. ഇപ്പോഴും വികസിപ്പിച്ചുകൊണ്ടിരിക്കുന്ന ഈ സിസ്റ്റം, ലിനക്സിൽ ഭാവിയിലെ ജേർണലിംഗ് ഫയൽ സിസ്റ്റത്തിൻ്റെ ആരംഭ പോയിൻ്റാണ്.

നീങ്ങുന്നു

ഒരു സിസ്റ്റം ക്രാഷ് അല്ലെങ്കിൽ പവർ നഷ്‌ടപ്പെടുമ്പോൾ ഡാറ്റ അഴിമതിക്കെതിരെ ജേർണൽ ചെയ്ത ഫയൽ സിസ്റ്റങ്ങൾ വിശ്വാസ്യതയും പരിരക്ഷയും നൽകുന്നു. കൂടാതെ, അത്തരം സിസ്റ്റങ്ങളിലെ വീണ്ടെടുക്കൽ സമയം പരമ്പരാഗത ഫയൽ സിസ്റ്റങ്ങളേക്കാൾ വളരെ വേഗതയുള്ളതാണ് (ഉദാഹരണത്തിന്, fsck ഉപയോഗിക്കുന്നവ). പുതിയ ലോഗിംഗ് രീതികളുടെ വികസനം JFS, XFS എന്നിവയിൽ നിന്നുള്ള മുൻകാല അനുഭവത്തെയും പുതിയ അൽഗോരിതങ്ങൾക്കും ഘടനകൾക്കും വേണ്ടിയുള്ള തിരയലിനെ അടിസ്ഥാനമാക്കിയുള്ളതാണ്. ഭാവിയിൽ ജേർണൽ ചെയ്ത ഫയൽ സിസ്റ്റങ്ങൾ എങ്ങനെ വികസിക്കുമെന്ന് പൂർണ്ണമായി വ്യക്തമല്ല, എന്നാൽ അവയുടെ പ്രയോജനം വ്യക്തമാണ്, മാത്രമല്ല അവ ഇതിനകം തന്നെ ഫയൽ സിസ്റ്റങ്ങളുടെ പുതിയ മാനദണ്ഡമായി മാറിയിരിക്കുന്നു.

NTFS ജേണലിംഗ്

NTFS ജേണലിംഗ് ഉപയോഗിക്കുന്നു ലോജിക്കൽ ഘടനകൾ, ഉപയോക്തൃ ഡാറ്റയല്ല - അതിനാൽ ഡാറ്റയുടെ സുരക്ഷ ഉറപ്പില്ല എന്ന വാചകം, എന്നിരുന്നാലും, സിസ്റ്റത്തിൻ്റെ ശരിയായ അവസ്ഥ തന്നെ നിലനിർത്തും. എൻടിഎഫ്എസ് ഫയൽ ഡാറ്റ ജേണൽ ചെയ്യുന്നില്ല എന്നത് പ്രായോഗികമായി ഡാറ്റ നഷ്‌ടത്തിൻ്റെ ഒരു സാഹചര്യത്തിലേക്ക് നയിക്കുന്നു - മൂന്ന് മെഗാബൈറ്റുകൾ എഴുതുന്ന അതേ സാങ്കൽപ്പിക സാഹചര്യത്തിൽ, എഴുത്ത് പ്രക്രിയ പരാജയപ്പെടുകയാണെങ്കിൽ, ഡാറ്റയുടെ ഏത് ഭാഗമാണ് എഴുതിയതെന്ന് നിർണ്ണയിക്കാൻ ഒരിക്കലും കഴിയില്ല. മാറ്റമില്ലാതെ തുടർന്നു. എന്നിരുന്നാലും, സിസ്റ്റം ലോഗ് ചെയ്‌തിരിക്കുന്ന പ്രവർത്തനങ്ങൾ സിസ്റ്റത്തിൻ്റെ തന്നെ ഘടനകളുമായുള്ള പ്രവർത്തനങ്ങളാണ്, അതായത് ഫയലുകളും ഡയറക്‌ടറികളും: ഫയലുകൾ ചേർക്കൽ, പേരുമാറ്റൽ, നീക്കൽ, സൃഷ്‌ടിക്കൽ, ഇല്ലാതാക്കൽ (സ്വതന്ത്ര ഇടം ശൂന്യമാക്കൽ). ഡിഫ്രാഗ്മെൻ്റേഷൻ പ്രവർത്തനങ്ങളും ലോഗ് ചെയ്തിരിക്കുന്നു - അതായത്, ഫയൽ ശകലങ്ങൾ നീക്കുന്നു. ഒരു വാക്കിൽ, എല്ലാം ലോജിക്കൽ പ്രവർത്തനങ്ങൾലോഗ് ചെയ്തു.

കാലതാമസം നേരിട്ട റെക്കോർഡിംഗ് ഒപ്പം നിയന്ത്രണ പോയിൻ്റുകൾലോഗിംഗ്

ഏതെങ്കിലും എന്ന് അറിയപ്പെടുന്നു ആധുനിക സംവിധാനംവേഗത്തിലാക്കാൻ ഫയൽ പ്രവർത്തനങ്ങൾറൈറ്റ് ഓപ്പറേഷനുകളുടെ കാഷിംഗ് ഉൾപ്പെടെയുള്ള കാഷിംഗ് ഉപയോഗിക്കാൻ നിർബന്ധിതരാകുന്നു. ഡിസ്കിലേക്ക് എഴുതാൻ ഉദ്ദേശിക്കുന്ന ഡാറ്റ കാഷെയിൽ കുറച്ച് സമയത്തേക്ക് സംഭരിക്കുകയും മറ്റ് പ്രവർത്തനങ്ങളിൽ നിന്ന് ഒഴിവു സമയങ്ങളിൽ മാത്രം ഭൗതികമായി സംരക്ഷിക്കുകയും ചെയ്യുന്ന ഒരു കാഷിംഗ് തത്വമാണ് അലസമായ എഴുത്ത് എന്ന് വിളിക്കപ്പെടുന്നത്. അലസമായ എഴുത്ത് കാര്യക്ഷമതയെ ഗണ്യമായി മെച്ചപ്പെടുത്തുന്നു ഡിസ്ക് പ്രവർത്തനങ്ങൾ, അത്തരം കാഷിംഗ് പല പ്രവർത്തനങ്ങളെയും ഒന്നായി ഗ്രൂപ്പുചെയ്യുന്നതിനാൽ - ഡിസ്കിൻ്റെ കോംപാക്റ്റ് ഏരിയകളിൽ റെക്കോർഡിംഗ് നടത്തുകയാണെങ്കിൽ ഇത് പ്രത്യേകിച്ചും ഫലപ്രദമാണ്. അലസമായ എഴുത്തിൻ്റെ മറ്റൊരു നേട്ടം, അത് കൂടുതൽ ആവശ്യമായ വായനാ പ്രവർത്തനങ്ങളിൽ ഇടപെടുന്നില്ല, കൂടാതെ സിസ്റ്റം സ്വതന്ത്രമായിരിക്കുമ്പോൾ മാത്രം എഴുതുകയും മറ്റ് ആവശ്യങ്ങൾക്ക് ഡിസ്ക് ആക്സസ് ആവശ്യമില്ലാതിരിക്കുകയും ചെയ്യുന്നു എന്നതാണ്. കാലതാമസം നേരിട്ട എഴുത്തിനെ ലോഗിംഗുമായി എങ്ങനെ പൊരുത്തപ്പെടുത്താം? ഇത് വളരെ ബുദ്ധിമുട്ടുള്ള ഒരു ചോദ്യമാണ്, കാരണം റെക്കോർഡിംഗ് മാറ്റിവയ്ക്കുന്നത് കാരണമാകുന്നു സാധ്യമായ നഷ്ടംഫിസിക്കൽ റെക്കോർഡിംഗിനായി ക്യൂവിലുണ്ടായിരുന്ന ഡാറ്റയും പരാജയത്തിന് മുമ്പ് ഡിസ്കിൽ എഴുതാൻ സമയമില്ലായിരുന്നു. ഇവിടെ ഏറ്റവും അസുഖകരമായ കാര്യം ഡാറ്റാ നഷ്‌ടമല്ല, പക്ഷേ റെക്കോർഡിംഗ് സമയത്തിൽ പൊരുത്തക്കേടുണ്ടെന്നതാണ്: ചില സേവന മേഖലകൾ അപ്‌ഡേറ്റ് ചെയ്യാൻ കഴിയും, എന്നാൽ ചില അനുബന്ധ മേഖലകൾ ഇതുവരെ അപ്‌ഡേറ്റ് ചെയ്യാൻ കഴിയില്ല, കാരണം അവയുടെ അപ്‌ഡേറ്റ് രണ്ട് സെക്കൻഡ് കൂടി വൈകും. ഒരു പരാജയം കാരണം നടക്കില്ല.

അലസമായ എഴുത്തുകളും ജേണലിംഗും അർത്ഥപൂർണ്ണമായി സമന്വയിപ്പിച്ചുകൊണ്ട് NTFS ഈ പ്രശ്നങ്ങളെ മറികടക്കുന്നു. നിങ്ങൾ ഒരു ലോഗിൻ ചെയ്‌ത പ്രവർത്തനം ആരംഭിക്കാൻ ശ്രമിക്കുമ്പോൾ, ഉദ്ദേശ്യം ഉടനടി ലോഗിൽ എഴുതപ്പെടും - ഉദാഹരണത്തിന്, ഒരു ഫയൽ മായ്ക്കാൻ. ഇത് കാലതാമസമില്ലാതെ സംഭവിക്കുന്നു - ഈ ഘട്ടത്തിൽ, അലസമായ എഴുത്ത് പ്രവർത്തിക്കില്ല: ഇത് ലോഗിംഗ് സാന്നിധ്യത്തിൻ്റെ ചിലവാണ്, അത് ഒഴിവാക്കാൻ കഴിയില്ല. എന്നാൽ മറ്റെല്ലാ പ്രവർത്തനങ്ങളും ഇതിനകം ഒരു കാലതാമസം വരുത്തിയ മോഡിലാണ് - അതായത്, അവ ഭാഗികമായോ നടക്കാത്തതോ ആകാം. കാലതാമസം നേരിട്ട ഒരേയൊരു പ്രവർത്തനം, ലളിതമായ ഒരു എഴുത്തിൽ നിന്ന് അൽപ്പം വ്യത്യസ്തമായ പ്രവർത്തനം, മുൻ ഇടപാടുകൾ വിജയകരമായി പൂർത്തിയാക്കിയതിനെക്കുറിച്ചുള്ള ലോഗിലേക്ക് എഴുതുക, ചെക്ക്‌പോയിൻ്റ് എന്ന് വിളിക്കപ്പെടുന്നു. നിശ്ചിത ഇടവേളകളിൽ - സാധാരണയായി ഓരോ കുറച്ച് സെക്കൻഡിലും - സിസ്റ്റം എല്ലാ കാലതാമസമുള്ള പ്രവർത്തനങ്ങളും ഡിസ്കിലേക്ക് ഫ്ലഷ് ചെയ്യണം. ഈ പ്രവർത്തനം പൂർത്തിയാക്കിയ ശേഷം, ഇനിപ്പറയുന്നവ ലോഗിൽ എഴുതുന്നു: ഏറ്റവും ലളിതമായ നൊട്ടേഷൻ- ഒരു ചെക്ക്‌പോയിൻ്റ്, ഇത് മുൻകാല പ്രവർത്തനങ്ങളെല്ലാം എല്ലാ തലങ്ങളിലും ശരിയായി ചെയ്തുവെന്ന് സൂചിപ്പിക്കുന്നു - ലോജിക്കലും ഫിസിക്കലും.

ഈ പ്രവർത്തന രീതി - റെക്കോർഡുകളുടെയും ചെക്ക്‌പോസ്റ്റുകളുടെയും സഹായത്തോടെ - ഒരു വശത്ത്, ഇപ്പോഴും പൂർണ്ണമായ ഉറപ്പ് നൽകുന്നു ശരിയായ പ്രവർത്തനംലോഗിംഗ്, മറുവശത്ത്, പ്രായോഗികമായി ജോലിയുടെ മന്ദഗതിയിലേക്ക് നയിക്കില്ല: ചെക്ക്‌പോയിൻ്റിംഗ് ഏതാണ്ട് തൽക്ഷണം നടക്കുന്നു, കൂടാതെ പ്രവർത്തനത്തിൻ്റെ തുടക്കത്തെക്കുറിച്ച് ലോഗിലേക്ക് എഴുതുന്നത് കാലതാമസം കൂടാതെ ഡാറ്റ എഴുതുന്നതിനുള്ള തൊഴിൽ ചെലവുമായി പൊരുത്തപ്പെടുന്നു. ഭൂരിഭാഗം കേസുകളിലും പിന്നീട് നടത്തിയ യഥാർത്ഥ റെക്കോർഡിംഗ് ഒരു പ്രവർത്തനത്തെയും തടസ്സപ്പെടുത്തുന്നില്ല കൂടാതെ സിസ്റ്റം പ്രകടനത്തെ ദോഷകരമായി ബാധിക്കുന്നില്ല.

ചെയ്തത് പതിവ് ജോലിഫയൽ സിസ്റ്റം, എല്ലാ മാറ്റങ്ങളും സാധാരണയായി ഡിസ്കിൽ (അല്ലെങ്കിൽ, OS- ലെ ഡിസ്ക് കാഷെയിലേക്കാണ്, എന്നാൽ ഈ സന്ദർഭത്തിൽ ഇത് പ്രധാനമല്ല).


പല പ്രവർത്തനങ്ങൾക്കും നിരവധി ഫയൽ സിസ്റ്റം ഘടനകളിൽ ഒരേസമയം മാറ്റങ്ങൾ ആവശ്യമാണ് ( മെറ്റാഡാറ്റ. ഒരു ലളിതമായ ഉദാഹരണം: ഒരു ഹാർഡ്‌ലിങ്ക് സൃഷ്ടിക്കുമ്പോൾ, നിങ്ങൾ ഒരേസമയം ഐനോഡിലേക്കുള്ള ലിങ്കുകളുടെ എണ്ണം വർദ്ധിപ്പിക്കുകയും ലിങ്ക് നിർമ്മിച്ച ഡയറക്ടറിയുടെ ഉള്ളടക്കം മാറ്റുകയും വേണം - നിങ്ങൾക്ക് ഈ പ്രവർത്തനങ്ങളിൽ ഒന്ന് മാത്രം ചെയ്യാൻ കഴിയില്ല - ഫയൽ സിസ്റ്റത്തിൻ്റെ ഉള്ളടക്കം തെറ്റായിരിക്കും.


സാധാരണ ഫയൽ സിസ്റ്റം ഓപ്പറേഷൻ സമയത്ത്, ഫയൽ സിസ്റ്റം ഇംപ്ലിമെൻ്റേഷൻ കോഡിൽ അടങ്ങിയിരിക്കുന്നില്ലെങ്കിൽ അത്തരം സങ്കീർണ്ണമായ ഒരു പ്രവർത്തനം എല്ലായ്പ്പോഴും പൂർണ്ണമായി നടപ്പിലാക്കുന്നു. ഗുരുതരമായ പിശകുകൾ. എന്നിരുന്നാലും, അസാധാരണമായ ഒരു റീബൂട്ട് ഉണ്ടെങ്കിൽ അല്ലെങ്കിൽ ഹാർഡ്‌വെയർ പരാജയംഈ സാഹചര്യം വളരെ യഥാർത്ഥമാണ്.


റീബൂട്ടിന് ശേഷം എന്ത് പ്രവർത്തനങ്ങൾ നടത്തി, പൂർത്തിയാകാത്തത് എന്താണെന്ന് ഞങ്ങൾക്ക് അറിയില്ല, പക്ഷേ ഡിസ്ക് ശരിയായി അൺമൗണ്ട് ചെയ്തിട്ടില്ലെന്ന് മാത്രമേ ഞങ്ങൾക്ക് അറിയൂ (ഈ സാഹചര്യത്തിൽ ഡേർട്ടി ഫ്ലാഗ് എന്ന് വിളിക്കപ്പെടുന്ന റീസെറ്റ് ആണ്), ഞങ്ങൾ ഫയൽ സിസ്റ്റം വിശകലനം ചെയ്യേണ്ടതുണ്ട് മുഴുവൻ ഡിസ്കും അങ്ങനെ, ഫയൽ സിസ്റ്റത്തിലെ എല്ലാ പിശകുകളും കണ്ടെത്തി അവ ശരിയാക്കുക. സ്വാഭാവികമായും, ഇത് സ്വയമേവ ചെയ്യുന്നത് എല്ലായ്പ്പോഴും സാധ്യമല്ല (പ്രകൃതിവിരുദ്ധ ബുദ്ധി, അയ്യോ, ആർക്കും ഇതുവരെ വ്യക്തമായ കഴിവുകൾ പഠിപ്പിക്കാൻ കഴിഞ്ഞിട്ടില്ല), അതിനാൽ അസാധാരണമായ ഒരു റീബൂട്ടിന് ശേഷമുള്ള അതേ fsck.ext2 സ്വമേധയാ ഇടപെടൽ ആവശ്യമായി വന്നേക്കാം.


100-200 G പാർട്ടീഷനിൽ fsck പ്രവർത്തിപ്പിച്ചിട്ടുള്ളവർ (ഇന്നത്തെ അസ്വാഭാവികതയിൽ നിന്ന് വളരെ അകലെയാണ്) ഇതിൽ ചെറിയ സന്തോഷമുണ്ടെന്ന് നന്നായി മനസ്സിലാക്കുന്നു. മൾട്ടി-ടെറാബൈറ്റ് അറേകളുടെ അഡ്‌മിനിസ്‌ട്രേറ്റർമാർക്ക്, ഒരു മിനിറ്റ് അധിക നിഷ്‌ക്രിയ സമയത്തേക്ക്, fsck എന്ന വാക്ക് കേട്ട് "ആകസ്മികമായി" തല കീറുകയോ വലേറിയൻ പിടിക്കുകയോ അവരുടെ സാന്നിധ്യത്തിൽ അത്തരം വാക്കുകൾ ഉപയോഗിച്ച് സത്യം ചെയ്യരുതെന്ന് ആവശ്യപ്പെടുകയോ ചെയ്യാം.


ഈ പ്രശ്നം പരിഹരിക്കാൻ, വളരെക്കാലം മുമ്പ് ഒരു മികച്ച ആശയം കണ്ടുപിടിച്ചു (എപ്പോൾ, ആരാണെന്ന് ആർക്കെങ്കിലും അറിയാമെങ്കിൽ, ദയവായി എന്നോട് പറയൂ) - ആദ്യംആസൂത്രണം ചെയ്ത പ്രവർത്തനത്തിൻ്റെ കുറച്ച് വിവരണം ഡിസ്കിലേക്ക് എഴുതുക, തുടർന്ന് അത് നടപ്പിലാക്കുക. അപ്പോൾ മുഴുവൻ ഡിസ്കും കൃത്യതയ്ക്കായി പരിശോധിക്കാതിരിക്കാൻ കഴിയും, പക്ഷേ ലോഗിൻ്റെ ഉള്ളടക്കങ്ങൾ കാണുന്നതിന് സ്വയം പരിമിതപ്പെടുത്തുക, കൂടാതെ, പ്രവർത്തനം പൂർത്തിയാക്കിയില്ലെങ്കിൽ, അത് തിരികെ റോൾ ചെയ്യുക. ഇത് ചെയ്യുന്നതിന്, നിങ്ങൾ fsck പ്രവർത്തിപ്പിക്കേണ്ടതില്ല - ഇത് ഫയൽ സിസ്റ്റം ഡ്രൈവർ തന്നെയാണ് ചെയ്യുന്നത്.


ചുരുക്കത്തിൽ, ഒരു ജേർണൽ ഫയൽ സിസ്റ്റത്തിന് ചെയ്യാൻ കഴിയുന്നതും ചെയ്യേണ്ടതുമായ ഒരേയൊരു കാര്യം fsck-ൽ സമയം ലാഭിക്കുക എന്നതാണ്. അതനുസരിച്ച്, ഫയൽ സിസ്റ്റം മെറ്റാഡാറ്റയുടെ സ്ഥിരത ഉറപ്പുനൽകുന്നു, കൂടുതലില്ല, കുറവുമില്ല.


ഈ ആനന്ദത്തിൻ്റെ വില: ഞങ്ങൾക്ക് ഒരു ചെറിയ (സാധാരണയായി പതിനായിരക്കണക്കിന് മെഗാബൈറ്റിൽ അളക്കുന്ന) ഡിസ്ക് ഏരിയയുണ്ട്, അത് പരമാവധി ലോഡ്, അതാണ് പരമാവധി പ്രകടനം, ഒരു സെക്കൻഡിലെ i/o പ്രവർത്തനങ്ങളുടെ എണ്ണത്തിൽ അളക്കുന്നത്, കുറയുന്നു. ശരി, തീർച്ചയായും, കുറച്ച് ഡിസ്ക് സ്പേസ് ഉപയോഗിക്കുന്നു, ഇത് ഡിസ്ക് വിലകളുടെ കാലഘട്ടത്തിൽ< 1$/гигабайт никого не волнует.

ഡാറ്റ ലോഗിംഗ്

നിങ്ങൾ ശ്രദ്ധിച്ചതുപോലെ, മെറ്റാഡാറ്റ ഉപയോഗിച്ചുള്ള പ്രവർത്തനങ്ങൾ സാധാരണയായി ലോഗിൽ എഴുതുന്നു. എന്നിരുന്നാലും, ഡാറ്റ ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഇത് ചെയ്യാൻ കഴിയും.


എനിക്കറിയാവുന്നിടത്തോളം, ഡാറ്റ=ജേണൽ പാരാമീറ്ററുള്ള ext3-ന് മാത്രമേ ലിനക്സിൽ ഡാറ്റ ലോഗിംഗ് നടത്താൻ കഴിയൂ.


തീർച്ചയായും, മിക്ക കേസുകളിലും ഡാറ്റ ലോഗിംഗ് പ്രകടനം ഒരു പരിധിവരെ കുറയ്ക്കുന്നു (എന്നാൽ അവയെല്ലാം അല്ല; IBM വെബ്‌സൈറ്റിൽ ടെസ്റ്റ് ഫലങ്ങൾ ഉണ്ട്, അതനുസരിച്ച് ഡാറ്റാബേസുകൾ സ്ഥിതി ചെയ്യുന്ന ഫയൽ സിസ്റ്റങ്ങൾക്കായി ഡാറ്റ ലോഗിംഗ് ഉപയോഗിക്കുന്നത് പ്രകടനം വർദ്ധിപ്പിക്കും).


ഈ ടൂൾ ഡാറ്റ സുരക്ഷ ഉറപ്പുനൽകുന്നില്ല, എന്നിരുന്നാലും, എൻ്റെ അനുഭവത്തിൽ നിന്ന് വ്യക്തിപരമായ അനുഭവംഡാറ്റ = ജേണലിനൊപ്പം ext3 ഉപയോഗിക്കുന്നത് ഏറ്റവും വിശ്വസനീയമായ ഫയൽ സിസ്റ്റമാണ്.

പ്രകടനം

ഒരു ജേണൽ ഉപയോഗിക്കുന്നത് ഡിസ്കിൽ ഒരു അസമമായ ലോഡ് സൃഷ്ടിക്കുന്നത് ശ്രദ്ധയുള്ള ഒരു വായനക്കാരൻ ശ്രദ്ധിച്ചിരിക്കാം - ഒന്ന് ചെറുത് (ഇതുമായി താരതമ്യം ചെയ്യുമ്പോൾ മൊത്തത്തിലുള്ള വലിപ്പംഫയൽ സിസ്റ്റം) ആനുപാതികമല്ലാത്ത പ്രവർത്തനങ്ങളുടെ ഏരിയ അക്കൗണ്ടുകൾ.


വളരെ രസകരമായ രണ്ട് പരിഹാരങ്ങളുണ്ട്:
ആദ്യം, നിങ്ങൾക്ക് ഒരു പ്രത്യേക ഡിസ്കിലേക്ക് ജേണൽ നീക്കാൻ കഴിയും (മിക്ക ഫയൽ സിസ്റ്റങ്ങളും ഇത് അനുവദിക്കുന്നു), തൽഫലമായി, ഒരു ഡിസ്ക് മാത്രം ചേർത്ത് ഞങ്ങൾ പ്രകടനം ഇരട്ടിയാക്കുന്നു. ഒരു വലിയ റെയിഡ് അറേയുടെ പ്രകടനം വളരെ ലളിതവും വിലകുറഞ്ഞതുമായ രീതിയിൽ വർദ്ധിപ്പിക്കുമ്പോൾ ഇത് വളരെ മനോഹരമായി കാണപ്പെടുന്നു.


രണ്ടാമതായി, നിങ്ങൾക്ക് ഉപയോഗിക്കാം പ്രത്യേക കാർഡുകൾഅസ്ഥിരമല്ലാത്ത മെമ്മറി (ഉദാഹരണത്തിന് UMEM, അയ്യോ, റഷ്യയിൽ വിൽപ്പനയ്ക്ക് ഞാൻ കണ്ടിട്ടില്ല), അവ പരമ്പരാഗത ഡിസ്കുകളേക്കാൾ വളരെ വേഗതയുള്ളവയാണ് (എന്നാൽ ഉണ്ട് ചെറിയ വലിപ്പംമെമ്മറി).


ഞാൻ ഇതുവരെ ശ്രമിച്ചിട്ടില്ലാത്ത തികച്ചും അതിരുകടന്ന ഒരു പരിഹാരവുമുണ്ട് - മെമ്മറിയിൽ സ്ഥിതിചെയ്യുന്ന ഒരു ബ്ലോക്ക് ഉപകരണത്തിൽ ഒരു ജേണൽ ഉണ്ടാക്കുക. തീർച്ചയായും, ഒരു റീബൂട്ടിന് ശേഷം, അത്തരമൊരു ഫയൽ സിസ്റ്റം പുനഃസൃഷ്ടിക്കേണ്ടതുണ്ട്, എന്നാൽ താൽക്കാലിക ഡാറ്റയ്ക്ക് ഇത് പ്രകടനത്തിൽ രസകരവും ശ്രദ്ധേയവുമായ വർദ്ധനവ് നൽകും. പ്രത്യേകിച്ചും ഡാറ്റ ലോഗ് ചെയ്യുമ്പോൾ, മെറ്റാഡാറ്റ മാത്രമല്ല.

തന്ത്രങ്ങൾ

നിങ്ങൾ ഇതിനകം കണ്ടതുപോലെ, മാസികയ്ക്ക് വേഗത വർദ്ധിപ്പിക്കാനും കഴിയും. ഒരു ജേണലിംഗ് ഫയൽ സിസ്റ്റത്തിന് കൂടുതൽ ഉപയോഗപ്രദമായ ചില തന്ത്രങ്ങൾ ഉണ്ട് ഉയർന്ന മാഗ്നിഫിക്കേഷൻപ്രകടനം:

  • ഫയൽ സൃഷ്‌ടിക്കൽ കാലതാമസം (ഫയൽ സൃഷ്‌ടിക്കുമ്പോൾ, ഡയറക്‌ടറിയിൽ ഉടനടി ഒരു എൻട്രി സൃഷ്‌ടിക്കരുത്, പക്ഷേ അത് കുറച്ച് സമയത്തേക്ക് ജേണലിൽ മാത്രം സൂക്ഷിക്കുക; ഒരുപക്ഷേ ഫയൽ താത്കാലികമാണ്, അത് ഉടനടി ഇല്ലാതാക്കപ്പെടും);
  • കാലതാമസം നേരിട്ട ഫയൽ അലോക്കേഷൻ (നിങ്ങൾക്ക് കുറഞ്ഞത് ഒരു ബ്ലോക്കെങ്കിലും എഴുതേണ്ടിവരുന്നതുവരെ ഫയലിൻ്റെ ആദ്യ ബ്ലോക്കിന് പോലും ഭൗതികമായി സ്ഥലം അനുവദിക്കരുത്), ഉപയോക്താവ് ആദ്യം ഫയൽ വലുപ്പം മാറ്റാൻ സാധ്യതയുണ്ട്, അതിനുശേഷം മാത്രമേ ഡാറ്റ എഴുതാൻ തുടങ്ങൂ. തൽഫലമായി, വിഘടനം കുറയുന്നു (പ്രോഗ്രാമുകൾ ഈ ട്രിക്ക് ഉപയോഗിക്കുകയാണെങ്കിൽ);

ഇവയാണ് ഏറ്റവും ലളിതമായവ, ഒരു ജേർണൽ ഫയൽ സിസ്റ്റത്തെ സാധാരണമായതിനേക്കാൾ വേഗത്തിൽ പ്രവർത്തിക്കാൻ അനുവദിക്കുന്ന നിരവധി ചെറിയ തന്ത്രങ്ങളുണ്ട്, അതേസമയം കൂടുതൽ വിശ്വസനീയമായി തുടരുന്നു.

കുറവുകൾ

ഞാൻ ഇതിനകം പറഞ്ഞതുപോലെ, ലോഗ് ഒരു പനേഷ്യയല്ല, ഡാറ്റ സംരക്ഷിക്കപ്പെടുന്നില്ല. എന്നിരുന്നാലും, ജേർണൽ ചെയ്ത ഫയൽ സിസ്റ്റങ്ങൾ ഉപയോഗിക്കുന്നതിൽ നിന്ന് പലർക്കും തെറ്റായ സുരക്ഷാ ബോധം ലഭിക്കുന്നു - തീർച്ചയായും, നിങ്ങൾക്ക് മെഷീൻ പുനഃസജ്ജമാക്കിക്കൊണ്ട് റീബൂട്ട് ചെയ്യാൻ കഴിയും, ലോഡുചെയ്യുമ്പോൾ അത് സത്യം ചെയ്യുക പോലും ചെയ്യില്ല!


അതെ, അവൻ സത്യം ചെയ്യില്ല. ചിലരുടെ കാഴ്ചപ്പാടിൽ ഇത് തികച്ചും ശരിയാകും fsck ഫയൽസിസ്റ്റം. ഡാറ്റ മാത്രം സ്ക്രാപ്പുകൾ മാത്രമായി അവശേഷിച്ചേക്കാം.


ഉദാഹരണത്തിന്, അത്തരം സാഹചര്യങ്ങളിൽ reiserfs പരിഷ്കരിച്ച ഫയലുകളിൽ മാലിന്യം ഉപേക്ഷിച്ചേക്കാം (ഫയലിനായി അനുവദിച്ച ബ്ലോക്കിലുണ്ടായിരുന്ന അനിയന്ത്രിതമായ ഡാറ്റ). സാരാംശത്തിൽ, വിവരങ്ങൾ ആകസ്മികമായ ചോർച്ച എന്നാണ് അർത്ഥമാക്കുന്നത്.


XFS കൂടുതൽ ശരിയായി പ്രവർത്തിക്കുന്നു - ഇത് പൂജ്യങ്ങൾ പോലെയുള്ള ബ്ലോക്കുകൾ എഴുതുന്നു. ഇത് പലപ്പോഴും ഉപയോക്താക്കളെ ഞെട്ടിക്കുന്നതാണ്. പ്രത്യേകിച്ച് പൂജ്യങ്ങൾ എഴുതാത്ത റീസർഫുകളുടെ ആരാധകർ.


തൽഫലമായി, റീസർഫുകൾക്ക് സാധ്യത കൂടുതലാണ് രക്ഷിക്കുംപരിഷ്‌ക്കരണങ്ങൾ, ഫയലുകളിലും ഡാറ്റ ചോർച്ചകളിലും മാലിന്യങ്ങൾ ഒഴിവാക്കാൻ XFS പരമാവധി ശ്രമിക്കും - അല്പം വ്യത്യസ്തമായ തന്ത്രങ്ങൾ. ഫലം ഒന്നുതന്നെയാണ് - ഡാറ്റ നഷ്‌ടപ്പെട്ടേക്കാം, നിങ്ങൾക്ക് അതിനെക്കുറിച്ച് പോലും അറിയില്ല. ഒരു വർഷമായി ആരും സ്പർശിക്കാത്ത ഒരു ഫയൽ നിങ്ങൾ കാണുന്നതുവരെ (അത് ആർക്കൈവിലായിരുന്നു), അത് പെട്ടെന്ന് മാലിന്യങ്ങളോ പൂജ്യങ്ങളോ കൊണ്ട് നിറയുന്നു.


ഡാറ്റ ലോഗിംഗ് പ്രവർത്തനക്ഷമമാക്കിയ ext3 അത്തരം സവിശേഷതകളിൽ നിന്ന് കഷ്ടപ്പെടുന്നില്ല. എന്നിരുന്നാലും, ഇത് പ്രകടനത്തിൽ ഗണ്യമായി നഷ്ടപ്പെടുന്നു.


ഒരു നല്ല രീതിയിൽ, യുപിഎസ് വാങ്ങുന്നതിലൂടെ ഈ പ്രശ്‌നങ്ങളെല്ലാം ഒഴിവാക്കാനാകും (ഒപ്പം വേണം), കൂടാതെ ലോഗിംഗ് ഉപയോഗിക്കുന്നതാണ് നല്ലത് അധിക നിലവിശ്വാസ്യതയും ഉൽപ്പാദനക്ഷമത വർദ്ധിപ്പിക്കുന്നതിനുള്ള മാർഗവും.

താഴത്തെ വരി

ഒരു ജേർണൽ ഫയൽ സിസ്റ്റം അഡ്മിനിസ്ട്രേഷൻ കുറച്ചുകൂടി എളുപ്പമാക്കുന്നു, പക്ഷേ അങ്ങനെയല്ല മാന്ത്രിക പ്രതിവിധിഅസാധാരണമായ റീബൂട്ടുകൾ മൂലമുള്ള ഡാറ്റ നഷ്ടത്തിൽ നിന്ന്. അതിനാൽ, നിങ്ങൾ യുപിഎസ് ഉപയോഗിക്കുന്നില്ലെങ്കിൽ ബാക്കപ്പ് ചെയ്യുന്നില്ലെങ്കിൽ, താമസിയാതെ അല്ലെങ്കിൽ പിന്നീട് നിങ്ങളുടെ ഡാറ്റ ഒരു ചെമ്പ് തടത്തിൽ മൂടും, അത് ഞാൻ നിങ്ങൾക്കായി ആത്മാർത്ഥമായി ആഗ്രഹിക്കുന്നില്ല. നിങ്ങൾക്ക് വേണമെങ്കിൽ, ഉൽപ്പാദനക്ഷമത വർദ്ധിപ്പിക്കുന്നതിനുള്ള ഒരു മാർഗമായി നിങ്ങൾക്ക് ജേർണൽ ഫയൽ സിസ്റ്റങ്ങൾ ഉപയോഗിക്കാം.


ആരാണ് യുപിഎസ് വാങ്ങിയത്, ആ ഡാറ്റ എപ്പോഴും കേടുകൂടാതെയിരിക്കും


(സി) ഡെനിസ് സ്മിർനോവ് 5 നവംബർ 2004
മറ്റ് ഇൻ്റർനെറ്റ് ഉറവിടങ്ങളിലും അച്ചടിച്ച പ്രസിദ്ധീകരണങ്ങളിലും ഈ പ്രമാണം പോസ്റ്റുചെയ്യുന്നത് അനുവദനീയമല്ല.