2.9 內核模塊
Linux採用的是模塊化技術,這樣的設計使得系統內核可以保持最小化,同時確保了內核的可擴展性與可維護性,模塊化設計允許我們在需要時纔將模塊加載至內核,實現動態內核的調整。
2.9.1 內核模塊存放位置
Linux內核模塊文件的命名方式通常爲<模塊名稱.ko>,Centos 6.3系統的內核模塊被集中存放在/lib/modules/`uname -r`/(/lib/modules/2.6.32-279.el6.x86_64)目錄下。
2.9.2 查看已加載內核模塊
lsmod命令用來顯示當前Linux內核模塊狀態,不使用任何參數會顯示當前已經加載的所有的內核模塊。輸出的三列信息分別爲模塊名稱、佔用內存大小、是否在被使用,如果第三列爲0,則該模塊可以隨時卸載,非0則無法執行modprobe刪除模塊。
[root@instructor ~]# lsmod Module Size Used by lp 9338 0 nfsd 305863 13 lockd 74270 1 nfsd nfs_acl 2647 1 nfsd auth_rpcgss 44895 1 nfsd sunrpc 263516 17 nfsd,lockd,nfs_acl,auth_rpcgss
2.9.3 加載與卸載內核模塊
modprobe命令可以動態加載與卸載內核模塊:
[root@instructor ~]# modprobe ip_vs 動態加載ip_vs模塊 [root@instructor ~]# lsmod |grep ip_vs 查看模塊是否加載成功 ip_vs 115490 0 libcrc32c 1246 1 ip_vs ipv6 322541 123 ip_vs,cnic,ip6t_REJECT,nf_conntrack_ipv6,nf_defrag_ipv6 [root@instructor ~]# modprobe -r ip_vs 動態卸載ip_vs模塊
modinfo命令可以查看內核模塊信息:
[root@instructor ~]# modinfo ip_vs filename: /lib/modules/2.6.32-279.el6.x86_64/kernel/net/netfilter/ipvs/ip_vs.ko license: GPL srcversion: 01386EABC060B63920E181B depends: ipv6,libcrc32c vermagic: 2.6.32-279.el6.x86_64 SMP mod_unload modversions
通過上述modprobe方式加載的內核模塊僅在當前有效,計算機重啓後並不會再次加載該模塊,如果希望系統開機自動掛載內核模塊,則需要將modprobe命令寫入/etc/rc.sysinit文件中,或者通過修改/etc/modprobe.d/目錄下的相關配置文件實現:
[root@instructor ~]# echo "modprobe ip_vs" >> /etc/rc.sysinit
當內核模塊不再需要時,可以通過將/etc/rc.sysinit文件中的對應的modprobe命令刪除,但需要重啓計算機才生效。此時,可以通過modprobe -r命令立即刪除內核模塊。
2.9.4 修改內核參數
1. 臨時調整內核參數
Linux內核參數隨着系統的啓動會被寫入到內存中,可以直接修改/proc目錄下的大量文件來調整內核參數,並且這種調整是立刻生效的。
開啓內核路由轉發功能(通過0或1設置開關):
[root@instructor proc]# echo "1" > /proc/sys/net/ipv4/ip_forward
禁止所有的icmp回包(禁止其它主機ping本機)功能:
[root@instructor proc]# echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
調整所有的進程可以打開文件總數量(當大量的用戶訪問網站資源時,可能會因該數字過小 而導致錯誤):
[root@instructor proc]# echo "108248" > /proc/sys/fs/file-max
2. 永久調整內核參數
通過man proc可以獲得大量關於內核參數的描述信息。設置參數永久生效,可以修改/etc/sysctl.conf文件,文件格式爲“選項=值”。
[root@instructor ~]# vim /etc/sysctl.conf net.ipv4.ip_forward = 1 net.ipv4.icmp_echo_ignore_all = 1 fs.file-max = 108248
注意,通過sysctl.conf文件修改的內核參數不會立刻生效,修改完成後,使用sysctl -p命令可以使這些設置立刻生效。