Linux內核模塊管理

目錄:

內核模塊路徑

查看已加載的內核

加載與卸載內核模塊

修改內核參數


Linux內核採用的是模塊化技術,這樣的設計使得系統內核可以保持最小化,同時確保了內核的可擴展性與可維護性,模塊化設計允許我們在需要時纔將模塊加載至內核,實現動態內核調整。本文重點關注方法與思路,具體實現可以參考kernel-doc文檔。


2.9.1 內核模塊存放位置

Linux內核模塊文件的命名方式通常爲<模塊名稱.ko>,CentOS 6.3系統的內核模塊被集中存放在/lib/modules/`uname -r`/目錄下(uname -r獲得的信息爲當前內核的版本號)。下面通過幾個實例說明對內核模塊的基本操作。


2.9.2 查看已加載內核模塊

lsmod命令用來顯示當前Linux內核模塊狀態,不是使用任何參數會顯示當前已經加載的所有內核模塊。輸出的三列信息分別爲模塊名稱、佔用內存大小、是否在被使用,如果第三列爲0則該模塊可以隨時卸載,非0則無法執行modprobe刪除模塊。

[root@centos6 ~]# lsmod  


2.9.3 加載與卸載內核模塊

modprobe命令可以動態加載與卸載內核模塊:

[root@centos6 ~]# modprobe ip_vs     #動態加載ip_vs模塊  

[root@centos7 ~]# lsmod |grep ip_vs  #查看模塊是否加載成功  

[root@centos7 ~]# modprobe -r ip_vs  #動態卸載ip_vs模塊  


modinfo命令可以查看內核模塊信息:

[root@centos7 ~]# modinfo ip_vs  


通過上述modprobe方式加載的內核模塊僅在當前有效,計算機重啓後並不會再次加載該模塊,如果希望系統開機自動掛載內核模塊則需要將modprobe命令寫入/etc/rc.sysinit文件中:

[root@centos7 ~]# echo “modprobe ip_vs” >> /etc/rc.sysinit  

當內核模塊不再需要時可以通過將/etc/rc.sysinit文件中的對應modprobe命令刪除,但需要重啓計算機才生效。此時,可以通過modprobe -r命令來立刻刪除內核模塊:

[root@centos6 ~]# modprobe -r ip_vs  


2.9.4 修改內核參數

1.臨時調整內核參數

Linux內核參數隨着系統的啓動會被寫入內存中,我們可以直接修改/proc目錄下的大量文件來調整內核參數,並且這種調整是立刻生效的,下面我們來看幾個實例。

開啓內核路由轉發功能(通過0或1設置開關):

[root@centos6 ~]# echo "1" > /proc/sys/net/ipv4/ip_forward  

開啓內核路由轉發功能:

[root@centos6 ~]# echo "1" > echo "1" >t

/proc/sys/net/ipv4/icmp_echo_ignore_all


調整所有進程總共可以打開的文件數量(當大量的用戶訪問網站資源時可能會因該數字過小而導致錯誤):

[root@centos6 ~]# echo "108248" >/proc/sys/fs/file-max  


2.永久調整內核參數

可以通過man proc可以獲得大量關於內核參數的描述信息。但以上通過直接修改/proc相關文件的方式在系統重啓後將不再有效,如果希望設置參數並永久生效可以修改/etc/sysctl.conf文件,文件格式爲選項=值,我們通過vim修改該文件將前面3個案例參數設置爲永久有效:

[root@centos6 ~]# vim /etc/sysctl.conf  

net.ipv4.ip_forward = 1  

net.ipv4.icmp_echo_ignore_all = 1  

fs.file-max = 108248  

注意,通過sysctl.conf文件修改的內核參數不會立刻生效,修改完成後使用sysctl -p命令可以使這些設置立刻生效。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章