Linux 2.6.30於2009年6月9日釋出,Linux kernel的發展進入了Linux 2.6.3x的時代。最近一年的 Linux 2.6核心發展有相當重大的進展,除了幾個知名大廠不斷貢獻程式碼外,新產品的開發,也帶動Linux kernel的快速發展。
Linux 2.6.30加入了新的filesystem:
1. NILFS2
一種log-structured filesystem,由John K. Ousterhout與Fred Douglis於1988年提出的設計,主要針對high write throughput的應用。
2. POHMELFS (Parallel Optimized Host Message Exchange Layered File System)
一個分散式平行處理的檔案系統,在讀寫操作方面,根據[POHMELFS]官方的數據指出,POHMELFS的效能比NFS還好。
3. DST(Distributed STorage)
一個具高效能與可信賴的網路儲存檔案系統。
4. EXOFS(Object-Based Storage Devices)
支援OSD protocol的檔案系統。
5. FS-Cache
這是一個網路檔案系統(networking filesystem)的cache layer,FS-Cache可以將網路檔案系統的資料 cache 在磁碟裡。
其他更新
另外,Intel也貢獻了fastboot(快速開機)程式碼,過去kernel在開機時花費許多時間在處理 I/O 上,例如:儲存裝置的I/O,由Intel貢獻的fastboot以asynchronous function call的觀念解決此問題。其原理在kernel/async.c裡的註解有很清楚的說明:
14 /* 15 16 Goals and Theory of Operation 17 18 The primary goal of this feature is to reduce the kernel boot time, 19 by doing various independent hardware delays and discovery operations 20 decoupled and not strictly serialized. 21 22 More specifically, the asynchronous function call concept allows 23 certain operations (primarily during system boot) to happen 24 asynchronously, out of order, while these operations still 25 have their externally visible parts happen sequentially and in-order. 26 (not unlike how out-of-order CPUs retire their instructions in order) 27 28 Key to the asynchronous function call implementation is the concept of 29 a "sequence cookie" (which, although it has an abstracted type, can be 30 thought of as a monotonically incrementing number). 31 32 The async core will assign each scheduled event such a sequence cookie and 33 pass this to the called functions. 34 35 The asynchronously called function should before doing a globally visible 36 operation, such as registering device numbers, call the 37 async_synchronize_cookie() function and pass in its own cookie. The 38 async_synchronize_cookie() function will make sure that all asynchronous 39 operations that were scheduled prior to the operation corresponding with the 40 cookie have completed. 41 42 Subsystem/driver initialization code that scheduled asynchronous probe 43 functions, but which shares global resources with other drivers/subsystems 44 that do not use the asynchronous call feature, need to do a full 45 synchronization with the async_synchronize_full() function, before returning 46 from their init function. This is to maintain strict ordering between the 47 asynchronous and synchronous parts of the kernel. 48 49 */
關於 fastboot 的做法,在LWN上的一篇文章[An asynchronous function call infrastructure]有很不錯的介紹。
Red Hat也貢獻了二個新的system call:preadv()與pwritev()。其他更多Linux 2.6.30的變更,可參考[kernelnewbies]上的說明。
Jollen's Blog 使用 Github issues 與讀者交流討論。請點擊上方的文章專屬 issue,或 open a new issue
您可透過電子郵件 jollen@jollen.org,或是 Linkedin 與我連絡。更歡迎使用微信,請搜尋 WeChat ID:jollentw