Linux日志文件系統(tǒng)及性能分析(組圖)
6) 鍵分配(key Assignment)接口 當(dāng)把一個(gè)鍵分配給一個(gè)項(xiàng)時(shí),鍵分配接口就會(huì)被觸發(fā)。每一種項(xiàng)都有一個(gè)與其對(duì)應(yīng)的鍵分配方法。
3.2 存儲(chǔ)層
ReiserFS是以B+樹(shù)來(lái)存儲(chǔ)數(shù)據(jù)的,其結(jié)構(gòu)如圖:
圖1:ReiserFS B+ 樹(shù)
[upload=1]
在B+樹(shù)中的各個(gè)結(jié)點(diǎn)中有一個(gè)稱為項(xiàng)(Item)的數(shù)據(jù)結(jié)構(gòu)。項(xiàng)是一個(gè)數(shù)據(jù)容器,一個(gè)項(xiàng)只屬于一個(gè)結(jié)點(diǎn),是結(jié)點(diǎn)管理空間的基本單位。如圖所示,一個(gè)項(xiàng)包括以下內(nèi)容:
1) Item_body:項(xiàng)的數(shù)據(jù)域
2) Item_key: 項(xiàng)的鍵值
3) Item_offset:數(shù)據(jù)域的起點(diǎn)在結(jié)點(diǎn)中的偏移量
4) Item_length: 數(shù)據(jù)域的長(zhǎng)度
5) Item_Plugin_id:項(xiàng)接口ID。
圖2: ReiserFS 項(xiàng)結(jié)構(gòu)
[upload=2]
ReiserFS設(shè)計(jì)了多種不同的項(xiàng)以存儲(chǔ)不同的數(shù)據(jù),主要有以下幾種:
1) static_stat_data: 靜態(tài)統(tǒng)計(jì)數(shù)據(jù),包括文件的所有者,訪問(wèn)權(quán)限,創(chuàng)建時(shí)間,最近修改時(shí)間,鏈接數(shù)等
2) cmpnd_dir_item: 包含各個(gè)目錄項(xiàng)
3) extend_pointers: 指向一個(gè)盤(pán)區(qū)(extend)
4) node_pointers: 指向一個(gè)結(jié)點(diǎn)
5) bodies: 包含的是文件的小部分?jǐn)?shù)據(jù)
3.3 ReiserFS日志
與ext3 一樣,ReiserFS也有三種日志模式,即journal,ordered,writeback。同時(shí),ReiserFS引入了兩種日志優(yōu)化方法: copy-on-capture和steal-on-capture。copy-on-capture:當(dāng)一個(gè)事務(wù)要修改的塊在另一個(gè)未提交的事務(wù)中時(shí),就把這個(gè)塊復(fù)制一份,這樣這兩個(gè)事務(wù)就可以并發(fā)進(jìn)行了。steal-on-capture:當(dāng)一個(gè)塊被多個(gè)事務(wù)修改時(shí),只有最晚提交的那個(gè)事務(wù)才把這個(gè)塊實(shí)際寫(xiě)入文件系統(tǒng),其他事務(wù)都不寫(xiě)這個(gè)塊。
四、XFS
XFS 是一種高性能的64 位文件系統(tǒng),由SGI 公司為了替代原有的EFS 文件系統(tǒng)而開(kāi)發(fā)的。XFS 通過(guò)保持cache 的一致性、定位數(shù)據(jù)和分布處理磁盤(pán)請(qǐng)求來(lái)提供對(duì)文件系統(tǒng)數(shù)據(jù)的低延遲、高帶寬的訪問(wèn)。目前SGI已經(jīng)將XFS文件系統(tǒng)從IRIX移植到Linux。
4.1 分配組(allocation groups)
當(dāng)創(chuàng)建 XFS 文件系統(tǒng)時(shí),底層塊設(shè)備被分割成八個(gè)或更多個(gè)大小相等的線性區(qū)域(region),用戶可以將它們想象成塊(chunk)或者線性范圍(range),在 XFS 中,每個(gè)區(qū)域稱為一個(gè)分配組。分配組是唯一的,因?yàn)槊總€(gè)分配組管理自己的索引節(jié)點(diǎn)(inode)和空閑空間,實(shí)際上是將這些分配組轉(zhuǎn)化為一種文件子系統(tǒng),這些子系統(tǒng)透明地存在于 XFS 文件系統(tǒng)內(nèi)。有了分配組,XFS 代碼將允許多個(gè)線程和進(jìn)程持續(xù)以并行方式運(yùn)行,即使它們中的許多線程和進(jìn)程正在同一文件系統(tǒng)上執(zhí)行大規(guī)模 IO 操作。因此,將 XFS 與某些高端硬件相結(jié)合,將獲得高性能而不會(huì)使文件系統(tǒng)成為瓶頸。分配組在內(nèi)部使用高效的 B+樹(shù)來(lái)跟蹤主要數(shù)據(jù),具有優(yōu)越性能和極大的可擴(kuò)展性。
4.2 日志記錄
XFS 也是一種日志記錄文件系統(tǒng),它允許意外重新引導(dǎo)后的快速恢復(fù)。象 ReiserFS 一樣,XFS 使用邏輯日志;它不象 ext3 那樣將文字文件系統(tǒng)塊記錄到日志,而是使用一種高效的磁盤(pán)格式來(lái)記錄元數(shù)據(jù)的變動(dòng)。就 XFS 而言,邏輯日志記錄是很適合的;在高端硬件上,日志經(jīng)常是整個(gè)文件系統(tǒng)中爭(zhēng)用
評(píng)論