原创 Linux Memory Management Notes

Linux 內存基礎 地址類型 linux內核中有許多種不同的地址類型 用戶虛擬地址 用戶空間看到的常規地址,通過頁表可以將虛擬地址和物理地址映射起來物理地址 用在cpu和內存之間的地址叫做物理地址總線地址 外圍總線和內存之間的地址

原创 linux內核源碼閱讀之facebook硬盤加速flashcache之三

上一節講到在刷緩存的時候會調用new_kcahed_job創建kcached_job,由此我們也可以看到cache數據塊與磁盤數據的對應關係。上一篇:http://blog.csdn.net/liumangxiong/article/d

原创 linux內核源碼閱讀之facebook硬盤加速flashcache之四

這一小節介紹一下flashcache讀寫入口和讀寫的基礎實現。 首先,不管是模塊還是程序,必須先找到入口,用戶態代碼會經常去先看main函數,內核看module_init,同樣看IO流時候也要找到入口。flashcache作爲一個dm_

原创 linux內核源碼閱讀之facebook硬盤加速flashcache之五

正常流程到flashcache_map的1623行或1625行,按順序先看讀流程: 1221static void 1222flashcache_read(struct cache_c *dmc, struct bio *bio) 1

原创 linux內核源碼閱讀之facebook硬盤加速利器flashcache之一

從來沒有寫過源碼閱讀,這種感覺越來越強烈,雖然劣於文筆,但還是下定決心認真寫一回。 源代碼下載請參見上一篇flashcache之我見 http://blog.csdn.net/liumangxiong/article/details/11

原创 linux內核源碼閱讀之facebook硬盤加速flashcache之七

這一節講緩存的寫回磁盤流程。這裏隆重介紹一下兩位幕後的英雄: 1724/* 1725 * Sync all dirty blocks. We pick off dirty blocks, sort them, merge them w

原创 Linux文件系統破壞,導致系統無法啓動解決辦法

Linux下普遍採用的是ext3文件系統,ext3是一個具有日誌記錄功能的日誌文件系統,可以進行簡單的容錯和恢復,但是在一個高負荷讀寫的ext3文件系統下,如果突然發生掉電,就很有可能發生文件系統內部結構不一致,導致文件系統破壞。Linu

原创 dup, dup2一圖勝千言

一圖勝千言啊,看了必須懂啊^_^ 下面這一段原文:http://os.chinaunix.net/a2009/0602/1049/000001049422_7.shtml   在C語言裏,操縱文件的渠道則是FILE結構

原创 linux內核源碼閱讀之facebook硬盤加速flashcache之八

前面我們的分析中重點關注正常的數據流程,這一小節關注如果有異常,那麼流程是怎麼走完的呢? 1)創建新任務時kcached_job申請不到 2)讀寫命中時cache塊爲忙 3)系統關機時處理,系統開機時處理,系統異常掉電後的處理 首先來看

原创 linux內核奇遇記之md源代碼解讀之二

linux內核奇遇記之md源代碼解讀之二 轉載請註明出處:http://blog.csdn.net/liumangxiong 在編譯完成linux內核源代碼的時候,drivers/md目錄下會生成多個ko文件,那麼這些內核模塊哪一個先加

原创 linux內核源碼閱讀之facebook硬盤加速flashcache之二

flashcache數據結構都在flashcache.h文件中,但在看數據結構之前,需要先過一遍flashcache是什麼,要完成哪些功能?如果是自己設計這樣一個系統的話,大概要怎麼設計。 前面講過,flashcache主要用途還是在寫

原创 linux內核源碼閱讀之facebook硬盤加速flashcache之六

其實到目前爲止,如果對讀流程已經能輕鬆地看懂了,那麼寫流程不需要太多腦細胞。我覺得再寫下去沒有太大的必要了,後面想想爲了保持flashcache完整性,還是寫出來吧。接着到寫流程: 1530static void 1531flashc

原创 linux內核奇遇記之md源代碼解讀之四

linux內核奇遇記之md源代碼解讀之四 轉載請註明出處:http://blog.csdn.net/liumangxiong 運行陣列意味着陣列經歷從無到有,建立了作爲一個raid應有的屬性(如同步重建),併爲隨後的讀寫做好的鋪墊。那麼

原创 linux內核奇遇記之md源代碼解讀之三

linux內核奇遇記之md源代碼解讀之三 轉載請註明出處:http://blog.csdn.net/liumangxiong 這一節我們閱讀陣列的創建過程。 按照常理出牌,我們到ioctl中找陣列創建命令,md對應的ioctl函數是md

原创 常用mdadm 命令

常用 mdadm 命令 生成配置文件mdadm.conf cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf.save /usr/share/mdadm/mkconf --generate >