淺入分析和Linux核心相關的檔案夾/proc和/sys

來源:互聯網
上載者:User

       近來文章被踩的厲害,我只想把自己從馬哥學的知識自己總結下發到部落格裡,但是沒想到昨天一篇文章剛發一上午被踩了9次。。。如果您真的覺得我的文章很爛,請告訴我原因,不勝感激。

這星期,馬哥講了關於Linux核心的編譯和Linux的核心模組,淺顯易懂,所以寫出來和大家一起分享學習成果。首先說明,這隻是簡單的編譯,和手動添加模組,而這篇主要介紹linux的核心分類,和linux核心相關的兩個檔案夾/proc    /sys   這是實現核心編譯和添加核心模組的理論基礎。

核心的分類:  

     1. 微核心:儘可能的保證核心的精簡,所有的裝置都需要安裝驅動程式(不知道這樣說準確否) 例如windows,你所有的裝置的驅動城區都是你後來裝的。

     2. 單核心:裝置直接融入到核心中去。

                linux屬於單核心,但是由於它巧妙的設計(可以這樣想,核心外表有很多“洞”用於串連模組),它可以將很多裝置做成模組,當需要時自動加入核心,由於是在核心中工                  作,所以效率非常高。

從理論上來講,微核心是更先進的設計,但是到目前為止,它的優勢都沒有發揮出來,linux由於單核心的設計,所以造成了驅動程式難安裝,難研發。

Linux核心的分類

      1.kernel   核心本身    

         還記得initrd嗎?它其實是產生的,從過/sbin/mkinitrd這個指令碼,在你安裝作業系統後,自動產生,用於輔助核心。

      2.kernel object  核心對象(核心模組)

        它們是以.ko結尾的檔案,所有的,ko檔案只能在核心載入。他們位於/lib/modules目錄 大小50M左右,核心將檔案系統和各種外圍驅動都做成模組放在這裡面,而且每一個           不同版本的核心都對應一個和核心版本名字相同的檔案夾存放對應的核心模組檔案###必須嚴格對應,否則會出錯    

核心編譯時間選擇的選項不同,功能也不同

redhat提供了3個32位核心版本,2個64位核心版本
32位
kernel                最多支援32位cpu,最多支援4G記憶體
      kernel:1G           啟動時kernel要佔去1G記憶體,留給進程的只有3G
      process:3G
kernel-PAE       最多支援32顆對稱式多處理器,支援16G記憶體
      單個進程只能最多3G記憶體,對
kernel-xen        支援基於xen半虛擬化 ,現在不支援,轉向KVM

64位:
 kernel : 64個cpu, 512G
 kernel-xen:126顆cpu,512G記憶體
 以目前的技術可以支援到1T的記憶體          

核心參數:

核心可以接受很多參數,例如grub.conf在啟動時傳遞給核心啟動等級。而在系統啟動並執行時候也可以傳遞核心參數,核心工作在核心空間,但是使用者程式工作在使用者空間所以需要通過使用者空間傳遞一些參數給核心,讓核心按我們的需要來工作。

那麼向核心傳遞參數,這就是今天這兩個檔案夾的作用。

他們的作用:

/porc          正在啟動並執行核心資訊映射  
主要輸出:進程資訊    
                    記憶體資源資訊
                    磁碟分割資訊等等
/sys      
                    硬體裝置的驅動程式資訊


它們都是偽檔案系統,如果瞭解這些檔案的參數,並向裡面傳遞特殊數值,完全可以實現即時調整核心工作特徵和硬體工作特徵。

那麼我們開啟/proc目錄來查看裡面的內容,具體命令我就不寫了,這裡我只根據分類樹來介紹我學到的各個目錄的作用(通過顏色識別),如果您有興趣可以看下~

/proc/
           1/cmdline       啟動進程的命令列命令及其參數是什麼
           1/proc/cmdline     gurb向核心傳遞的參數檔案,以後可以通過指令碼讀取它的參數,來判定啟動時向核心傳遞什麼資訊
           1/maps       記憶體使用量資訊的映射
           1/mem     記憶體資訊
           1/io          讀寫
           1/stat     進程資訊
           1/status
     
     acpi           進階隊員管理子系統相關資訊
     asoud       聲音資訊
     budyinfo    夥伴系統資訊,實現記憶體回收的子系統,防止記憶體片段
     bus        系統硬體匯流排資訊
     cpuinfo
     crypto    加密
     devices    當前系統上所有的字元裝置和塊裝置
     diskstat      磁碟狀態資訊 (很難懂)
             iostat 通過這個檔案可以查看它的資訊
     dma    直接記憶體存取,實現記憶體與對應的磁碟裝置,直接映射以後,訪問將資料脫離cpu管理時,仍然可以從磁碟讀取到記憶體的一種
                  系統最佳化裝置
      fb (frame buffer)       幀緩衝,對一些特殊的顯卡顯示裝置提供驅動。
      filesystems   當前系統中啟用的所有檔案系統
                     /cpuset       cpu分組,可以實現進程和cpu綁定,可以將它掛載來查看那捆綁資訊,它也是一個偽目錄
      ide
      fs
      interruptes   中斷(硬終端,非強制中斷)
      ioports            硬體IO連接埠資訊     
      loadavg           平均負載,uptime命令查看這個檔案
      locks             檔案鎖,檔案進程不允許兩個進程同時寫檔案
      molues         當前系統上正在時候的模組
      mdstat           RAID
      meminfo         記憶體資訊
      partitions        核心識別的分區資訊
      schedstat         進程調度資訊
      slabinfo            記憶體子系統資訊和budyinfo一樣
      swaps                交換分區資訊
      uptime               uptime命令顯示的檔案
      version      `uname -r`    
      vmstat        
      zoneinfo            記憶體的分區資訊,Normal段      DMA段     BIOS段
       
/proc/sys       凡是輸出在sys目錄裡的資訊,都是可以通過調整他們的參數來管理核心
          crypto
          debug
          dev
           ls
           fs
           kernel
           net

                  /ipv4        裡面都是可以調整的網路模組
                                / icmp_echo_ignore_all       改為1別人就ping不同

                                  ip_forward              用於定義如果主機上有兩塊網卡,或者一個網卡有兩個地址,並且在不同網路段,
                                                                   它能啟用在兩個網路之間實現資料包路由(直連路由)轉寄功能。它可以決定你的
                                                                   主機是否可以作為路由器或網關使用。預設為0
                                                             
                                max_orphans         最大孤兒連結數
                                tcp_fin_timeout        tcp  fin資料包等待逾時時間                             
                                tcp_max_syn_backets          網路調優其實就是調這些參數
                 tcp_mem             緩衝大小
                      
tcp_rmen          讀緩衝大小
                 tcp_ wmen       寫緩衝大小
                    tcp_reuse          tcp的連結數是否可重用,多次時間重用
                                sunrpc
            vm                

                  /dorp_caches        用於釋放記憶體裡緩衝

區別哪些檔案可以傳遞參數:凡是有w許可權的都是可以傳遞參數的

如何調整核心參數檔案的值   一般在/proc/sys
1. 臨時調成(暫時有效,立即生效):

# echo >                  echo 1 > /proc/sys/net/ipv4/ip_forward           #全路徑 # sysctl -w               sysctl -w net.ipv4.ip_forward=1                  #去掉/proc/sys  用.隔開        

                                        
2. 永久有效,(但是設定好不是立即生效)
通過設定/etc/sysct1.conf,他是啟動時rc.sysinit讀取的核心參數

例如修改裡面的

net.ipv4.ip_forward = 1                       #開啟路由轉寄功能

另外如果想使修改後的值立即生效

#sysctl -p          

顯示當前啟動並執行所有生效的核心參數的值

#sysctl -a          

#######這個檔案是系統工程師生涯的直觀重要的檔案

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.