കേർണൽ റൺടൈം പാരാമീറ്ററുകൾ എങ്ങനെ സ്ഥിരവും സ്ഥിരമല്ലാത്തതുമായ രീതിയിൽ മാറ്റാം


ഇതിന്റെ ഭാഗം 13-ൽ, നടന്നുകൊണ്ടിരിക്കുന്ന ബൂട്ട് പ്രക്രിയയ്uക്കായി കേർണലിലേക്ക് ഓപ്uഷനുകൾ നൽകിക്കൊണ്ട് സിസ്റ്റത്തിന്റെ സ്വഭാവം പരിഷ്uക്കരിക്കുന്നതിന് GRUB എങ്ങനെ ഉപയോഗിക്കാം.

അതുപോലെ, റൺടൈം കേർണൽ പാരാമീറ്ററുകൾ ഒറ്റത്തവണ പരിഷ്ക്കരിക്കുന്നതിന് അല്ലെങ്കിൽ ഒരു കോൺഫിഗറേഷൻ ഫയൽ എഡിറ്റ് ചെയ്തുകൊണ്ട് നിങ്ങൾക്ക് പ്രവർത്തിക്കുന്ന ലിനക്സ് സിസ്റ്റത്തിൽ കമാൻഡ് ലൈൻ ഉപയോഗിക്കാം.

അതിനാൽ, സിസ്റ്റം പ്രവർത്തിക്കുമെന്ന് പ്രതീക്ഷിക്കുന്ന രീതിയിൽ ആവശ്യമായ മാറ്റം ആവശ്യമായി വരുമ്പോൾ കേർണൽ പാരാമീറ്ററുകൾ ഓൺ-ദി-ഫ്ലൈ പ്രവർത്തനക്ഷമമാക്കാനോ പ്രവർത്തനരഹിതമാക്കാനോ നിങ്ങൾക്ക് അനുവാദമുണ്ട്.

/proc ഫയൽസിസ്റ്റം അവതരിപ്പിക്കുന്നു

ഫയൽസിസ്റ്റം ഹൈരാർക്കി സ്റ്റാൻഡേർഡിന്റെ ഏറ്റവും പുതിയ സ്പെസിഫിക്കേഷൻ സൂചിപ്പിക്കുന്നത്, പ്രോസസ്സും സിസ്റ്റം വിവരങ്ങളും മറ്റ് കേർണൽ, മെമ്മറി വിവരങ്ങളും കൈകാര്യം ചെയ്യുന്നതിനുള്ള ഡിഫോൾട്ട് രീതിയാണ് /proc പ്രതിനിധീകരിക്കുന്നത്. പ്രത്യേകിച്ചും, /proc/sys ആണ് നിങ്ങൾക്ക് ഉപകരണങ്ങൾ, ഡ്രൈവറുകൾ, ചില കേർണൽ സവിശേഷതകൾ എന്നിവയെ കുറിച്ചുള്ള എല്ലാ വിവരങ്ങളും കണ്ടെത്താൻ കഴിയുന്നത്.

/proc/sys ന്റെ യഥാർത്ഥ ആന്തരിക ഘടന ഉപയോഗിക്കുന്നത് കേർണലിനെ ആശ്രയിച്ചിരിക്കുന്നു, എന്നാൽ അതിനുള്ളിൽ ഇനിപ്പറയുന്ന ഡയറക്uടറികൾ നിങ്ങൾ കണ്ടെത്തും. അതാകട്ടെ, അവയിൽ ഓരോന്നിനും ഓരോ പാരാമീറ്റർ വിഭാഗത്തിനുമുള്ള മൂല്യങ്ങൾ നിലനിർത്തുന്ന മറ്റ് ഉപഡയറക്uടറികൾ അടങ്ങിയിരിക്കും:

  1. dev: മെഷീനുമായി ബന്ധിപ്പിച്ചിട്ടുള്ള നിർദ്ദിഷ്uട ഉപകരണങ്ങൾക്കുള്ള പാരാമീറ്ററുകൾ.
  2. fs: ഫയൽസിസ്റ്റം കോൺഫിഗറേഷൻ (ഉദാഹരണത്തിന് ക്വാട്ടകളും ഐനോഡുകളും).
  3. കേർണൽ: കേർണൽ-നിർദ്ദിഷ്ട കോൺഫിഗറേഷൻ.
  4. net: നെറ്റ്uവർക്ക് കോൺഫിഗറേഷൻ.
  5. vm: കേർണലിന്റെ വെർച്വൽ മെമ്മറിയുടെ ഉപയോഗം.

കേർണൽ റൺടൈം പാരാമീറ്ററുകൾ പരിഷ്കരിക്കുന്നതിന് ഞങ്ങൾ sysctl കമാൻഡ് ഉപയോഗിക്കും. പരിഷ്uക്കരിക്കാവുന്ന പാരാമീറ്ററുകളുടെ കൃത്യമായ എണ്ണം ഇതുപയോഗിച്ച് കാണാൻ കഴിയും:

# sysctl -a | wc -l

നിങ്ങൾക്ക് കേർണൽ പാരാമീറ്ററുകളുടെ പൂർണ്ണമായ ലിസ്റ്റ് കാണണമെങ്കിൽ, ചെയ്യുക:

# sysctl -a 

മുകളിലെ കമാൻഡിന്റെ ഔട്ട്uപുട്ടിൽ ധാരാളം ലൈനുകൾ അടങ്ങിയിരിക്കുന്നതിനാൽ, അത് കൂടുതൽ സൂക്ഷ്മമായി പരിശോധിക്കാൻ നമുക്ക് പൈപ്പ്ലൈൻ ഉപയോഗിക്കാം:

# sysctl -a | less

ആദ്യത്തെ ഏതാനും വരികൾ നോക്കാം. ഓരോ വരിയിലെയും ആദ്യ പ്രതീകങ്ങൾ /proc/sys എന്നതിനുള്ളിലെ ഡയറക്uടറികളുടെ പേരുകളുമായി പൊരുത്തപ്പെടുന്നു എന്നത് ശ്രദ്ധിക്കുക:

ഉദാഹരണത്തിന്, ഹൈലൈറ്റ് ചെയ്ത ലൈൻ:

dev.cdrom.info = drive name:        	sr0

ഒപ്റ്റിക്കൽ ഡ്രൈവിന്റെ അപരനാമമാണ് sr0 എന്ന് സൂചിപ്പിക്കുന്നു. മറ്റൊരു വിധത്തിൽ പറഞ്ഞാൽ, അങ്ങനെയാണ് കേർണൽ \കാണുന്നത് ആ ഡ്രൈവിനെ സൂചിപ്പിക്കാൻ ആ പേര് ഉപയോഗിക്കുന്നത്.

ലിനക്സിലെ മറ്റ് \കൂടുതൽ പ്രധാനപ്പെട്ട കേർണൽ റൺടൈം പാരാമീറ്ററുകൾ എങ്ങനെ മാറ്റാമെന്ന് ഇനിപ്പറയുന്ന വിഭാഗത്തിൽ ഞങ്ങൾ വിശദീകരിക്കും.

ലിനക്സ് കേർണൽ റൺടൈം പാരാമീറ്ററുകൾ എങ്ങനെ മാറ്റാം അല്ലെങ്കിൽ പരിഷ്കരിക്കാം

ഞങ്ങൾ ഇതുവരെ വിശദീകരിച്ചതിനെ അടിസ്ഥാനമാക്കി, ഒരു പരാമീറ്ററിന്റെ പേര് അത് കണ്ടെത്താനാകുന്ന /proc/sys എന്നതിനുള്ളിലെ ഡയറക്ടറി ഘടനയുമായി പൊരുത്തപ്പെടുന്നത് കാണാൻ എളുപ്പമാണ്.

ഉദാഹരണത്തിന്:

dev.cdrom.autoclose → /proc/sys/dev/cdrom/autoclose
net.ipv4.ip_forward → /proc/sys/net/ipv4/ip_forward

അതായത്, ഒരു പ്രത്യേക Linux കേർണൽ പാരാമീറ്ററിന്റെ മൂല്യം നമുക്ക് sysctl ഉപയോഗിച്ച്, തുടർന്ന് പരാമീറ്ററിന്റെ പേര് അല്ലെങ്കിൽ അനുബന്ധ ഫയൽ വായിക്കാം:

# sysctl dev.cdrom.autoclose
# cat /proc/sys/dev/cdrom/autoclose
# sysctl net.ipv4.ip_forward
# cat /proc/sys/net/ipv4/ip_forward

ഒരു കേർണൽ പാരാമീറ്ററിനായി മൂല്യം സജ്ജീകരിക്കുന്നതിന് നമുക്ക് sysctl ഉപയോഗിക്കാനും കഴിയും, എന്നാൽ -w ഓപ്ഷൻ ഉപയോഗിക്കുകയും തുടർന്ന് പരാമീറ്ററിന്റെ പേര്, തുല്യ ചിഹ്നം, ആവശ്യമുള്ള മൂല്യം എന്നിവ ഉപയോഗിക്കുകയും ചെയ്യാം.

പരാമീറ്ററുമായി ബന്ധപ്പെട്ട ഫയൽ തിരുത്തിയെഴുതാൻ echo ഉപയോഗിക്കുന്നതാണ് മറ്റൊരു രീതി. മറ്റൊരു വിധത്തിൽ പറഞ്ഞാൽ, ഇനിപ്പറയുന്ന രീതികൾ ഞങ്ങളുടെ സിസ്റ്റത്തിലെ പാക്കറ്റ് ഫോർവേഡിംഗ് പ്രവർത്തനം പ്രവർത്തനരഹിതമാക്കുന്നതിന് തുല്യമാണ് (വഴി, നെറ്റ്uവർക്കുകൾക്കിടയിൽ ഒരു ബോക്uസ് ട്രാഫിക്ക് കടന്നുപോകാൻ പാടില്ലാത്തപ്പോൾ ഇത് സ്ഥിരസ്ഥിതി മൂല്യമായിരിക്കണം):

# echo 0 > /proc/sys/net/ipv4/ip_forward
# sysctl -w net.ipv4.ip_forward=0

sysctl ഉപയോഗിച്ച് സജ്ജീകരിച്ചിരിക്കുന്ന കേർണൽ പാരാമീറ്ററുകൾ നിലവിലെ സെഷനിൽ മാത്രമേ നടപ്പിലാക്കുകയുള്ളൂ എന്നതും സിസ്റ്റം റീബൂട്ട് ചെയ്യുമ്പോൾ അപ്രത്യക്ഷമാകുമെന്നതും ശ്രദ്ധിക്കേണ്ടതാണ്.

ഈ മൂല്യങ്ങൾ ശാശ്വതമായി സജ്ജീകരിക്കുന്നതിന്, ആവശ്യമുള്ള മൂല്യങ്ങൾ ഉപയോഗിച്ച് /etc/sysctl.conf എഡിറ്റ് ചെയ്യുക. ഉദാഹരണത്തിന്, /etc/sysctl.conf-ൽ പാക്കറ്റ് ഫോർവേഡിംഗ് പ്രവർത്തനരഹിതമാക്കുന്നതിന്, ഫയലിൽ ഈ ലൈൻ ദൃശ്യമാകുമെന്ന് ഉറപ്പാക്കുക:

net.ipv4.ip_forward=0

തുടർന്ന് പ്രവർത്തിക്കുന്ന കോൺഫിഗറേഷനിൽ മാറ്റങ്ങൾ പ്രയോഗിക്കുന്നതിന് ഇനിപ്പറയുന്ന കമാൻഡ് പ്രവർത്തിപ്പിക്കുക.

# sysctl -p

പ്രധാനപ്പെട്ട കേർണൽ റൺടൈം പാരാമീറ്ററുകളുടെ മറ്റ് ഉദാഹരണങ്ങൾ ഇവയാണ്:

fs.file-max സിസ്റ്റത്തിനായി കേർണലിന് അനുവദിക്കാവുന്ന പരമാവധി ഫയൽ ഹാൻഡിലുകളെ വ്യക്തമാക്കുന്നു. നിങ്ങളുടെ സിസ്റ്റത്തിന്റെ ഉദ്ദേശിച്ച ഉപയോഗത്തെ ആശ്രയിച്ച് (വെബ്/ഡാറ്റാബേസ്/ഫയൽ സെർവർ, കുറച്ച് ഉദാഹരണങ്ങൾക്ക്), സിസ്റ്റത്തിന്റെ ആവശ്യങ്ങൾ നിറവേറ്റുന്നതിനായി നിങ്ങൾക്ക് ഈ മൂല്യം മാറ്റേണ്ടി വന്നേക്കാം.

അല്ലാത്തപക്ഷം, നിങ്ങൾക്ക് \വളരെയധികം തുറന്ന ഫയലുകൾ എന്ന പിശക് സന്ദേശം ലഭിക്കും, കൂടാതെ ഓപ്പറേറ്റിംഗ് സിസ്റ്റം ഏറ്റവും മോശമായ അവസ്ഥയിൽ ബൂട്ട് ചെയ്യുന്നത് തടയുകയും ചെയ്യാം.

നിരപരാധിയായ ഒരു തെറ്റ് കാരണം നിങ്ങൾ ഈ അവസാന സാഹചര്യത്തിലാണ് നിങ്ങളെ കണ്ടെത്തുന്നതെങ്കിൽ, സിംഗിൾ യൂസർ മോഡിൽ ബൂട്ട് ചെയ്യുക (ഭാഗം 14-ൽ വിശദീകരിച്ചിരിക്കുന്നതുപോലെ - ഈ സീരീസിന്റെ ലിനക്സ് പ്രോസസ്സ് പരിധി ഉപയോഗം നിരീക്ഷിച്ച് സജ്ജമാക്കുക.

നിങ്ങളുടെ കീബോർഡിലെ SysRq കീ പ്രവർത്തനക്ഷമമാക്കാൻ kernel.sysrq ഉപയോഗിക്കുന്നു (പ്രിന്റ് സ്uക്രീൻ കീ എന്നും അറിയപ്പെടുന്നു) അങ്ങനെ സിസ്റ്റം പ്രതികരിക്കാനാകാതെ വരുമ്പോൾ ചില കീ കോമ്പിനേഷനുകൾ അടിയന്തിര പ്രവർത്തനങ്ങൾ നടത്താൻ അനുവദിക്കും.

സിസ്റ്റം Alt+SysRq+key കോമ്പിനേഷനെ മാനിക്കുമെന്നും kernel.org-ൽ കാണുന്ന sysrq.c ഡോക്യുമെന്റേഷനിൽ ലിസ്റ്റ് ചെയ്തിരിക്കുന്ന പ്രവർത്തനങ്ങൾ നടത്തുമെന്നും സ്ഥിര മൂല്യം (16) സൂചിപ്പിക്കുന്നു (ഇവിടെ കീ എന്നത് ഒരു അക്ഷരമാണ്. b-z ശ്രേണി). ഉദാഹരണത്തിന്, Alt+SysRq+b സിസ്റ്റം നിർബന്ധിതമായി റീബൂട്ട് ചെയ്യും (നിങ്ങളുടെ സെർവർ പ്രതികരിക്കുന്നില്ലെങ്കിൽ ഇത് അവസാന ആശ്രയമായി ഉപയോഗിക്കുക).

മുന്നറിയിപ്പ്! ഒരു വെർച്വൽ മെഷീനിൽ ഈ കീ കോമ്പിനേഷൻ അമർത്താൻ ശ്രമിക്കരുത്, കാരണം ഇത് നിങ്ങളുടെ ഹോസ്റ്റ് സിസ്റ്റത്തെ റീബൂട്ട് ചെയ്യാൻ നിർബന്ധിച്ചേക്കാം!

1 ആയി സജ്ജീകരിക്കുമ്പോൾ, net.ipv4.icmp_echo_ignore_all പിംഗ് അഭ്യർത്ഥനകൾ അവഗണിക്കുകയും അവയെ കേർണൽ തലത്തിൽ ഡ്രോപ്പ് ചെയ്യുകയും ചെയ്യും. ഇത് ചുവടെയുള്ള ചിത്രത്തിൽ കാണിച്ചിരിക്കുന്നു - ഈ കേർണൽ പാരാമീറ്റർ സജ്ജീകരിച്ചതിന് ശേഷം പിംഗ് അഭ്യർത്ഥനകൾ എങ്ങനെ നഷ്uടപ്പെടുമെന്ന് ശ്രദ്ധിക്കുക:

വ്യക്തിഗത റൺടൈം പാരാമീറ്ററുകൾ സജ്ജീകരിക്കുന്നതിനുള്ള മികച്ചതും എളുപ്പവുമായ മാർഗ്ഗം /etc/sysctl.d എന്നതിനുള്ളിലെ .conf ഫയലുകൾ ഉപയോഗിച്ച് അവയെ വിഭാഗങ്ങൾ അനുസരിച്ച് ഗ്രൂപ്പുചെയ്യുക എന്നതാണ്.

ഉദാഹരണത്തിന്, /etc/sysctl.conf-ൽ net.ipv4.ip_forward=0, net.ipv4.icmp_echo_ignore_all=1 എന്നിവ സജ്ജീകരിക്കുന്നതിന് പകരം, net.conf എന്ന പേരിൽ നമുക്ക് /etc/ ഉള്ളിൽ ഒരു പുതിയ ഫയൽ സൃഷ്ടിക്കാം. sysctl.d:

# echo "net.ipv4.ip_forward=0" > /etc/sysctl.d/net.conf
# echo "net.ipv4.icmp_echo_ignore_all=1" >> /etc/sysctl.d/net.conf

നിങ്ങൾ ഈ സമീപനം ഉപയോഗിക്കാൻ തിരഞ്ഞെടുക്കുകയാണെങ്കിൽ, അതേ വരികൾ /etc/sysctl.conf എന്നതിൽ നിന്ന് നീക്കം ചെയ്യാൻ മറക്കരുത്.

സംഗ്രഹം

ഈ ലേഖനത്തിൽ, sysctl, /etc/sysctl.conf, കൂടാതെ /etc/sysctl.d എന്നതിനുള്ളിലെ ഫയലുകൾ എന്നിവ ഉപയോഗിച്ച് കേർണൽ റൺടൈം പാരാമീറ്ററുകൾ, സ്ഥിരവും അല്ലാത്തതും എങ്ങനെ പരിഷ്കരിക്കാമെന്ന് ഞങ്ങൾ വിശദീകരിച്ചിട്ടുണ്ട്.

sysctl ഡോക്uസിൽ കൂടുതൽ വേരിയബിളുകളുടെ അർത്ഥത്തെക്കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾ നിങ്ങൾക്ക് കണ്ടെത്താനാകും. sysctl വഴി സജ്ജീകരിക്കാൻ കഴിയുന്ന പരാമീറ്ററുകളെക്കുറിച്ചുള്ള ഡോക്യുമെന്റേഷന്റെ ഏറ്റവും പൂർണ്ണമായ ഉറവിടത്തെ ആ ഫയലുകൾ പ്രതിനിധീകരിക്കുന്നു.

ഈ ലേഖനം നിങ്ങൾക്ക് ഉപയോഗപ്രദമാണെന്ന് തോന്നിയോ? നിങ്ങൾ തീർച്ചയായും ചെയ്തുവെന്ന് ഞങ്ങൾ പ്രതീക്ഷിക്കുന്നു. മെച്ചപ്പെടുത്താൻ നിങ്ങൾക്ക് എന്തെങ്കിലും ചോദ്യങ്ങളോ നിർദ്ദേശങ്ങളോ ഉണ്ടെങ്കിൽ ഞങ്ങളെ അറിയിക്കാൻ മടിക്കരുത്.