ວິທີການປ່ຽນພາລາມິເຕີແບບ Kernel ໃນແບບທີ່ມີຄວາມຍືນຍົງແລະບໍ່ທົນນານ


ໃນພາກທີ 13 ຂອງວິທີການ ນຳ ໃຊ້ GRUB ເພື່ອດັດແປງພຶດຕິ ກຳ ຂອງລະບົບໂດຍການເລືອກຕົວເລືອກໄປສູ່ແກ່ນ ສຳ ລັບຂະບວນການບູດຢ່າງຕໍ່ເນື່ອງ.

ເຊັ່ນດຽວກັນ, ທ່ານສາມາດໃຊ້ເສັ້ນ ຄຳ ສັ່ງໃນລະບົບ Linux ທີ່ໃຊ້ເພື່ອປ່ຽນແປງຕົວ ກຳ ນົດການຂອງເວລາໃນການໃຊ້ເວລາເປັນການດັດແປງ ໜຶ່ງ ຄັ້ງ, ຫລືແບບຖາວອນໂດຍການດັດແກ້ເອກະສານການຕັ້ງຄ່າ.

ດັ່ງນັ້ນ, ທ່ານໄດ້ຮັບອະນຸຍາດໃຫ້ເປີດຫລືປິດຕົວ ກຳ ນົດຂອງ kernel ໃນເວລາບິນໂດຍບໍ່ມີຄວາມຫຍຸ້ງຍາກຫຼາຍເມື່ອມັນ ຈຳ ເປັນຍ້ອນການປ່ຽນແປງທີ່ຕ້ອງການໃນວິທີທີ່ລະບົບຄາດວ່າຈະ ດຳ ເນີນງານ.

ແນະ ນຳ ລະບົບໄຟລ໌/proc

ຂໍ້ ກຳ ນົດສະບັບຫຼ້າສຸດຂອງ Filesystem Hierarchy Standard ສະແດງໃຫ້ເຫັນວ່າ /proc ສະແດງວິທີການເລີ່ມຕົ້ນ ສຳ ລັບການຈັດການກັບຂະບວນການແລະຂໍ້ມູນຂອງລະບົບພ້ອມທັງຂໍ້ມູນອື່ນໆແລະຂໍ້ມູນຄວາມ ຈຳ. ໂດຍສະເພາະ, /proc/sys ແມ່ນບ່ອນທີ່ທ່ານສາມາດຊອກຫາຂໍ້ມູນທັງ ໝົດ ກ່ຽວກັບອຸປະກອນ, ໄດເວີແລະບາງຄຸນລັກສະນະຂອງແກ່ນ.

ໂຄງສ້າງພາຍໃນຕົວຈິງຂອງ /proc/sys ແມ່ນຂື້ນກັບຢ່າງ ໜັກ ກັບແກ່ນທີ່ຖືກ ນຳ ໃຊ້, ແຕ່ວ່າທ່ານມີແນວໂນ້ມທີ່ຈະຊອກຫາທິດທາງຂ້າງລຸ່ມນີ້ຢູ່ພາຍໃນ. ໃນທາງກັບກັນ, ພວກມັນແຕ່ລະຈະປະກອບມີໄດເລກະທໍລີຍ່ອຍອື່ນໆທີ່ຄ່າ ສຳ ລັບແຕ່ລະປະເພດພາລາມິເຕີຈະຖືກຮັກສາໄວ້:

<

  • dev : ຕົວ ກຳ ນົດການ ສຳ ລັບອຸປະກອນສະເພາະທີ່ເຊື່ອມຕໍ່ກັບເຄື່ອງ.
  • fs : ການຕັ້ງຄ່າລະບົບແຟ້ມລະບົບ (ຕົວຢ່າງໂຄຕ້າແລະອິນເຕີເນັດ).
  • ແກ່ນ: ການຕັ້ງຄ່າສະເພາະຂອງ kernel.
  • ສຸດທິ : ການຕັ້ງຄ່າເຄືອຂ່າຍ.
  • vm : ການ ນຳ ໃຊ້ຄວາມ ຈຳ ທີ່ແທ້ຈິງຂອງແກ່ນ.
  • ເພື່ອດັດແປງຕົວ ກຳ ນົດເວລາຂອງ kernel ພວກເຮົາຈະໃຊ້ ຄຳ ສັ່ງ sysctl . ຕົວເລກທີ່ແນ່ນອນທີ່ສາມາດແກ້ໄຂໄດ້ສາມາດເບິ່ງໄດ້ດ້ວຍ:

    # sysctl -a | wc -l
    

    ຖ້າທ່ານຕ້ອງການເບິ່ງບັນຊີລາຍຊື່ທີ່ສົມບູນຂອງຕົວກໍານົດການ Kernel, ພຽງແຕ່ເຮັດ:

    # sysctl -a 
    

    ຍ້ອນວ່າຜົນຜະລິດຂອງ ຄຳ ສັ່ງຂ້າງເທິງນີ້ຈະປະກອບດ້ວຍຫລາຍໆສາຍ, ພວກເຮົາສາມາດໃຊ້ທໍ່ທີ່ຕິດຕາມດ້ວຍ ໜ້ອຍ ເພື່ອກວດກາມັນລະມັດລະວັງ:

    # sysctl -a | less
    

    ລອງເບິ່ງສອງສາມແຖວ ທຳ ອິດ. ກະລຸນາຮັບຊາບວ່າຕົວອັກສອນ ທຳ ອິດໃນແຕ່ລະເສັ້ນກົງກັບຊື່ຂອງບັນດາໄດເລກະທໍລີພາຍໃນ /proc/sys :

    ຍົກຕົວຢ່າງ, ເສັ້ນທີ່ເນັ້ນໃຫ້ເຫັນ:

    dev.cdrom.info = drive name:        	sr0
    

    ບົ່ງບອກວ່າ sr0 ແມ່ນນາມແຝງ ສຳ ລັບການຂັບ optical. ເວົ້າອີກຢ່າງ ໜຶ່ງ, ນັ້ນແມ່ນວິທີທີ່ແກ່ນ "ເຫັນ" ທີ່ຂັບເຄື່ອນແລະໃຊ້ຊື່ນັ້ນເພື່ອອ້າງອີງໃສ່ມັນ.

    ໃນພາກຕໍ່ໄປນີ້ພວກເຮົາຈະອະທິບາຍວິທີການປ່ຽນແປງຕົວ ກຳ ນົດການແລ່ນແກ່ນອື່ນໆທີ່ ສຳ ຄັນກວ່າໃນ Linux.

    ວິທີການປ່ຽນແປງຫລືດັດແປງ Linux Kernel Runtime Parameteres

    ອີງຕາມສິ່ງທີ່ພວກເຮົາໄດ້ອະທິບາຍມາຮອດປະຈຸບັນ, ມັນງ່າຍທີ່ຈະເຫັນວ່າຊື່ຂອງພາລາມິເຕີກົງກັບໂຄງສ້າງຂອງໄດເລກະທໍລີພາຍໃນ /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
    

    ເພື່ອ ກຳ ນົດຄ່າ ສຳ ລັບພາລາມິເຕີຂອງ kernel ພວກເຮົາຍັງສາມາດໃຊ້ລະຫັດ sysctl ແຕ່ໃຊ້ຕົວເລືອກ -w ແລະຕິດຕາມດ້ວຍຊື່ຂອງພາລາມິເຕີ, ເຄື່ອງ ໝາຍ ທີ່ເທົ່າກັນ, ແລະຄ່າທີ່ຕ້ອງການ.

    ວິທີການອື່ນປະກອບດ້ວຍການໃຊ້ ແອັກໂກ້ ເພື່ອຂຽນທັບແຟ້ມເອກະສານທີ່ກ່ຽວຂ້ອງກັບພາລາມິເຕີ. ເວົ້າອີກຢ່າງ ໜຶ່ງ, ວິທີການຕໍ່ໄປນີ້ແມ່ນເທົ່າກັບການປິດການ ທຳ ງານການສົ່ງຕໍ່ຂອງ packet ໃນລະບົບຂອງພວກເຮົາ (ເຊິ່ງໂດຍທາງ, ຄວນຈະເປັນຄ່າເລີ່ມຕົ້ນໃນເວລາທີ່ກ່ອງ ໜຶ່ງ ບໍ່ຄວນຖືວ່າຈະຜ່ານການຈະລາຈອນລະຫວ່າງເຄືອຂ່າຍ):

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

    ມັນເປັນສິ່ງສໍາຄັນທີ່ຈະສັງເກດວ່າຕົວກໍານົດການຂອງ kernel ທີ່ຖືກກໍານົດໂດຍໃຊ້ ຈະຖືກບັງຄັບໃຊ້ໃນລະຫວ່າງກອງປະຊຸມປະຈຸບັນແລະຈະຫາຍໄປເມື່ອລະບົບຖືກເລີ່ມຕົ້ນໃຫມ່.

    ເພື່ອ ກຳ ນົດຄ່າເຫຼົ່ານີ້ຢ່າງຖາວອນ, ດັດແກ້ /etc/sysctl.conf ດ້ວຍຄ່າທີ່ຕ້ອງການ. ຍົກຕົວຢ່າງ, ເພື່ອປິດການສົ່ງຕໍ່ packet ໃນ /etc/sysctl.conf ໃຫ້ແນ່ໃຈວ່າເສັ້ນນີ້ປາກົດຢູ່ໃນແຟ້ມ:

    net.ipv4.ip_forward=0
    

    ຫຼັງຈາກນັ້ນ, ດຳ ເນີນການ ຄຳ ສັ່ງຕໍ່ໄປນີ້ເພື່ອ ນຳ ໃຊ້ການປ່ຽນແປງຂອງການຕັ້ງຄ່າທີ່ ກຳ ລັງແລ່ນ.

    # sysctl -p
    

    ຕົວຢ່າງອື່ນໆຂອງຕົວ ກຳ ນົດເວລາຂອງແກ່ນ ສຳ ຄັນແມ່ນ:

    fs.file-max ລະບຸ ຈຳ ນວນສູງສຸດຂອງການຈັດການເອກະສານທີ່ແກ່ນສາມາດຈັດສັນໃຫ້ກັບລະບົບ. ອີງຕາມການ ນຳ ໃຊ້ລະບົບທີ່ທ່ານຕັ້ງໃຈໄວ້ (ເວບໄຊທ໌/ຖານຂໍ້ມູນ/ເຄື່ອງແມ່ຂ່າຍເອກະສານ, ເພື່ອຕັ້ງຊື່ບາງຕົວຢ່າງ), ທ່ານອາດຕ້ອງການປ່ຽນຄ່ານີ້ເພື່ອຕອບສະ ໜອງ ຄວາມຕ້ອງການຂອງລະບົບ.

    ຖ້າບໍ່ດັ່ງນັ້ນ, ທ່ານຈະໄດ້ຮັບຂໍ້ຄວາມຜິດພາດທີ່“ ເປີດຫຼາຍເກີນໄປ” ທີ່ດີທີ່ສຸດ, ແລະອາດຈະປ້ອງກັນບໍ່ໃຫ້ລະບົບປະຕິບັດການເລີ່ມຕົ້ນທີ່ຮ້າຍແຮງທີ່ສຸດ.

    ຖ້າຫາກວ່າຍ້ອນຄວາມຜິດພາດທີ່ບໍລິສຸດທ່ານພົບວ່າຕົວທ່ານເອງຢູ່ໃນສະຖານະການສຸດທ້າຍນີ້, ໃຫ້ໃສ່ເກີບໃນຮູບແບບຜູ້ໃຊ້ແບບດຽວ (ດັ່ງທີ່ໄດ້ອະທິບາຍໄວ້ໃນພາກ 14 - ຕິດຕາມກວດກາແລະຕັ້ງຄ່າ Linux Process Limit Usage of this series.

    <ລະຫັດ kernel.sysrq ຖືກໃຊ້ເພື່ອເປີດໃຊ້ປຸ່ມ SysRq ໃນແປ້ນພິມຂອງທ່ານ (ທີ່ເອີ້ນວ່າຄີບອດພິມ) ເພື່ອໃຫ້ການປະສົມປະສານທີ່ ສຳ ຄັນແນ່ນອນຮຽກຮ້ອງການກະ ທຳ ສຸກເສີນເມື່ອລະບົບບໍ່ຕອບສະ ໜອງ.

    ຄ່າເລີ່ມຕົ້ນ (16) ຊີ້ໃຫ້ເຫັນວ່າລະບົບຈະໃຫ້ກຽດການປະສົມປະສານ Alt + SysRq + key ແລະປະຕິບັດການກະ ທຳ ທີ່ລະບຸໄວ້ໃນເອກະສານ sysrq.c ທີ່ພົບໃນ kernel.org bz ຊ່ວງ). ຍົກຕົວຢ່າງ, Alt + SysRq + b ຈະເລີ່ມລະບົບ ໃໝ່ ໂດຍບັງຄັບ (ໃຊ້ນີ້ເປັນວິທີສຸດທ້າຍຖ້າເຄື່ອງແມ່ຂ່າຍຂອງທ່ານບໍ່ຕອບສະ ໜອງ).

    ຄຳ ເຕືອນ! ຢ່າພະຍາຍາມກົດປຸ່ມປະສົມປະສານທີ່ ສຳ ຄັນນີ້ໃສ່ເຄື່ອງ virtual ເພາະມັນອາດຈະບັງຄັບໃຫ້ລະບົບໂຮດຂອງທ່ານເລີ່ມ ໃໝ່!

    ເມື່ອຕັ້ງເປັນ 1, net.ipv4.icmp_echo_ignore_all ຈະບໍ່ສົນໃຈ ຄຳ ຮ້ອງຂໍ ping ແລະວາງລົງໃນລະດັບແກ່ນ. ນີ້ແມ່ນສະແດງຢູ່ໃນຮູບພາບຂ້າງລຸ່ມນີ້ - ສັງເກດວິທີການຮ້ອງຂໍ ping ຖືກສູນຫາຍຫຼັງຈາກຕັ້ງຄ່າພາລາມິເຕີແກ່ນນີ້:

    ວິທີການທີ່ດີກວ່າແລະງ່າຍກວ່າໃນການ ກຳ ນົດຕົວ ກຳ ນົດເວລາຂອງແຕ່ລະບຸກຄົນແມ່ນການ ນຳ ໃຊ້ແຟ້ມເອກະສານ .conf ພາຍໃນ /etc/sysctl.d , ຈັດກຸ່ມຕາມປະເພດຕ່າງໆ.

    ຍົກຕົວຢ່າງ, ແທນທີ່ຈະຕັ້ງຄ່າ net.ipv4.ip_forward = 0 ແລະ net.ipv4.icmp_echo_ignore_all = 1 ໃນ /etc/sysctl.conf, ພວກເຮົາສາມາດສ້າງແຟ້ມເອກະສານ ໃໝ່ ທີ່ມີຊື່ວ່າ 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 .

    ບົດສະຫຼຸບ

    ໃນບົດຂຽນນີ້ພວກເຮົາໄດ້ອະທິບາຍວິທີການປັບປ່ຽນຕົວ ກຳ ນົດການແລ່ນຂອງ kernel, ທັງແບບຄົງແລະບໍ່ຕໍ່ເນື່ອງ, ໂດຍໃຊ້ sysctl, /etc/sysctl.conf, ແລະແຟ້ມພາຍໃນ /etc/sysctl.d.

    ໃນເອກະສານ sysctl ທ່ານສາມາດຊອກຫາຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບຄວາມ ໝາຍ ຂອງຕົວແປຫລາຍຂຶ້ນ. ບັນດາເອກະສານເຫລົ່ານັ້ນເປັນຕົວແທນຂອງເອກະສານຄົບຖ້ວນທີ່ສຸດກ່ຽວກັບພາລາມິເຕີທີ່ສາມາດຕັ້ງຄ່າໄດ້ຜ່ານ sysctl.

    ທ່ານເຫັນວ່າບົດຂຽນນີ້ມີປະໂຫຍດບໍ? ພວກເຮົາຫວັງຢ່າງແນ່ນອນວ່າທ່ານໄດ້ເຮັດ. ຢ່າລັງເລທີ່ຈະແຈ້ງໃຫ້ພວກເຮົາທາບວ່າທ່ານມີ ຄຳ ຖາມຫຼື ຄຳ ແນະ ນຳ ໃດໆທີ່ຈະປັບປຸງ.