在一般的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
一向的觀點就是“別在內核裡面處理字符串”!事實上,確實應該如此!Linux內核的塊設備驅動有能力讀取磁盤的序列號,這個數據存儲在磁盤的控制芯片ROM裡面。內核應該以怎樣的形式將這個序列號呈現給調用者呢?我們ls一
新的防火牆子系統/包過濾引擎Nftables將在 Linux 3.13 中替代有十多年歷史的iptables。iptables/netfilter在2001年加入到2.4內核中。誕生於2008年的NFTables設計替代iptables
引子時間系統的工作需要軟硬件以及操作系統的互相協作,在上一部分,我們已經看到大多數時間函數都依賴內核系統調用,GlibC 僅僅做了一次請求的轉發。因此必須深入內核代碼以便了解更多的細節。內核自身的正常運行也依賴於時鐘系統。Linux 是