Linux內核采用的是模塊化技術,這樣的設計使得系統內核可以保持最小化,同時確保了內核的可擴展性與可維護性,模塊化設計允許我們在需要時才將模塊加載至內核,實現動態內核調整。本文重點關注方法與思路,具體實現可以參考kernel-doc文檔
Linux在系統運行時修改內核參數(/proc/sys與/etc/sysctl.conf),而不需 要重新引導系統,這個功能是通過/proc虛擬文件系統實現的。在/proc/sys目錄下存放著大多數的內核參數,並且設計成可以在系統運行的
一:Linux內核:操作系統是一個用來和硬件打交道並為用戶程序提供一個有限服務集的低級支撐軟件。一個計算機系統是一個硬件和軟件的共生體,它們互相依賴,不可分割。計算機的硬件,含有外圍設備、處理器、內存、硬盤和其他的電子設備組成計算機的發
在一般的Linux系統中如果不指定"vga="參數,系統將不會支持frameBuffer設備,一般的可以在/boot/grub/grub.conf文件中添加"vga="參數Linux讷河的vga模
並發 Linux下高並發的Nginx服務器,當TCP TIME_WAIT套接字數量經常達到兩、三萬,服務器很容易被拖死。通過修改Linux內核參數,可以減少Nginx服務器的TIME_WAIT套接字數量。vi /etc/sysctl.c
最近花了一段時間認真地學習了一下md代碼,並且在原代碼的基礎上開發了一系列的新功能,這些新功能讓md更完善、更適合於企業大容量存儲,通過增加陣列緩存和bitmap優化大大提升了存儲速度,提高了數據的可靠性,在任何掉電的情況下保證數據一致
在編譯完成linux內核源代碼的時候,drivers/md目錄下會生成多個ko文件,那麼這些內核模塊哪一個先加載,哪一個後加載的呢?例如md-mod.ko, raid5.ko, raid10.ko,這些模塊是一起加載的呢,還是有先後順序
這一節我們閱讀陣列的創建過程。按照常理出牌,我們到ioctl中找陣列創建命令,md對應的ioctl函數是md_ioctl,當找對應的cmd命令字時,卻完全沒有類似CREATE_ARRAY的命令,那麼就說明md設備並不是通過ioctl函數
運行陣列意味著陣列經歷從無到有,建立了作為一個raid應有的屬性(如同步重建),並為隨後的讀寫做好的鋪墊。那麼運行陣列的時候到底做了哪些事情,讓原來的磁盤像變形金剛一樣組成一個新的巨無霸。現在就來看陣列運行處理流程:5158 stati
如果看懂了raid1陣列的run函數,那麼看raid5陣列run就非常輕松了,因為兩者要做的事情都是大同小異。raid5的run函數很長,但很大一部分跟創建運行是沒有關系的,特別是有一段跟reshape相關的,大多數系統都不關注該功能,
raid10的run函數與raid5的run函數最大區別在於setup_conf,那就直接深入核心:3540 static struct r10conf *setup_conf(struct mddev *mddev) 3541 {
陣列同步在md_do_sync,那麼入口在哪裡呢?就是說陣列同步觸發點在哪裡呢?聽說過md_check_recovery吧,但這還不是同步的入口點。那raid5d函數是入口點吧?如果要認真分析起來還不算是。真正的同步入口點在do_md_
在上一小節裡講到啟動同步線程:7824 mddev->sync_thread = md_register_thread(md_do_sync, 7825
歡迎使用ueditor!我們再來回顧一下整個場景:1)在運行陣列的時候調用md_wakeup_thread喚醒主線程2)主線程調用md_check_recovery檢查同步3)md_check_recovery函數中檢查需要同步調用md
上一節講到在raid5的同步函數sync_request中炸土豆片是通過handle_stripe來進行的。從最初的創建陣列,到申請各種資源,建立每個陣列的personality,所有的一切都是為了迎接數據流而作的准備。就像我們寒窗苦讀
正是有了上一篇的讀寫基礎,我們才開始看raid5d的代碼。raid5d不是讀寫的入口,也不是讀寫處理的地方,只是簡簡單單的中轉站或者叫做交通樞紐。這個樞紐具有制高點的作用,就像美國在新加坡的基地,直接就控制了太平洋和印度洋的交通樞紐。4
我們都知道,對一個linux塊設備來說,都有一個對應的請求隊列。注冊在這個請求隊列上的請求就是該塊設備的請求入口。對於raid來說,分配struct mddev時就已經設置好了,在函數md_alloc中有這樣的代碼:4846 blk_q
上節我們講到條塊內讀失敗,在回調函數raid5_align_endio中將請求加入陣列重試鏈表,在喚醒raid5d線程之後,raid5d線程將該請求調用retry_aligned_read函數進行重試讀:4539static int
Linus Torvalds宣布3.12穩定版內核,帶來很多驅動更新和改進,比如Radeon顯卡,AMD APU,高通枭龍/Adreno,NVIDIA Optimus,各種文件系統和其他驅動等更新。Linus在郵件列表中說:&ldquo