日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]如今,日志文件系統(tǒng)(ext3)已經(jīng)成為 Linux 的缺省文件系統(tǒng)。本文向大家揭示了日志文件系統(tǒng)背后的一些思想,以及在電源故障或系統(tǒng)崩潰時(shí),如何提供更好的完整性。此外本文還介紹了現(xiàn)行的幾種日志文件 系統(tǒng)和下一代日志文件系統(tǒng)。

在近代歷史上,日志文件系統(tǒng)被認(rèn)為十分奇特,主要是處于研究階段。而如今,日志文件系統(tǒng)(ext3)已經(jīng)成為 Linux 的缺省文件系統(tǒng)。本文向大家揭示了日志文件系統(tǒng)背后的一些思想,以及在電源故障或系統(tǒng)崩潰時(shí),如何提供更好的完整性。此外本文還介紹了現(xiàn)行的幾種日志文件 系統(tǒng)和下一代日志文件系統(tǒng)。

定義日志文件系統(tǒng)的方法有很多種,但是讓我們抓住要點(diǎn)。日志文件系統(tǒng)就是專為那些厭倦了一直盯著啟動(dòng)時(shí) fsck(即文件系統(tǒng)一致性檢查)的人而設(shè)計(jì)的(日志文件系統(tǒng)同樣適用于希望文件系統(tǒng)具有故障恢復(fù)能力的群體)。如果系統(tǒng)采用傳統(tǒng)的未提供日志功能的文件系統(tǒng),那么操作系統(tǒng)在檢測(cè)到系統(tǒng)為非正常關(guān)機(jī)時(shí),會(huì)使用 fsck 應(yīng)用程序執(zhí)行一致性檢驗(yàn)。該應(yīng)用程序會(huì)掃描文件系統(tǒng)(這要花費(fèi)很長(zhǎng)的時(shí)間),并修復(fù)任何可安全修復(fù)的問(wèn)題。而在某些情況下,當(dāng)文件系統(tǒng)損壞嚴(yán)重時(shí),操作系統(tǒng)會(huì)啟動(dòng)到單用戶模式,由用戶進(jìn)行進(jìn)一步的修復(fù)。

那么現(xiàn)在您應(yīng)該清楚日志文件系統(tǒng)針對(duì)的是哪類人群了,但是他們是如何取締 fsck 的呢?籠統(tǒng)地說(shuō),日志文件系統(tǒng)就是通過(guò)維護(hù)一份日志來(lái)防止文件系統(tǒng)崩潰。所謂日志就是一種特殊的文件,它會(huì)在一個(gè)循環(huán)的緩沖區(qū)內(nèi)記錄文件系統(tǒng)的修改,然后 將其定期提交到文件系統(tǒng)。一旦系統(tǒng)發(fā)生崩潰,日志文件就會(huì)起到一個(gè)檢查點(diǎn)的作用,用于恢復(fù)未保存的信息,防止損壞文件系統(tǒng)元數(shù)據(jù)。

總之,日志文件系統(tǒng)就是一種具有故障恢復(fù)能力的文件系統(tǒng),它利用日志來(lái)記錄尚未提交到文件系統(tǒng)的修改,以防止元數(shù)據(jù)破壞(請(qǐng)參見(jiàn)圖 1)。但是如眾多其他 Linux 解決方案一樣,日志文件系統(tǒng)有多種方案供您選擇。下面就讓我們一起簡(jiǎn)短回顧一下日志文件系統(tǒng)的歷史,然后再看一看現(xiàn)行的幾種文件系統(tǒng),看看它們之間有什么 區(qū)別。//本文轉(zhuǎn)自www.45it.com電腦軟硬件應(yīng)用網(wǎng)


圖 1. 典型的日志文件系統(tǒng)


Linux 日志文件系統(tǒng)的歷史

最早的日志文件系統(tǒng)是 IBM-Journaled File System(JFS)。JFS 于 1990 年首次發(fā)行,而當(dāng)前 Linux 支持的版本是后期開(kāi)發(fā)的 JFS2。1994 年,Silicon Graphics 為 IRIX 操作系統(tǒng)引進(jìn)了高性能的 XFS。XFS 于 2001 年被植入 Linux 系統(tǒng)中。1998 年開(kāi)發(fā)的智能文件系統(tǒng)(SFS)起初是為 Amiga 開(kāi)發(fā)的,但之后卻在 GNU Lesser General Public License(LGPL)下發(fā)行,并于 2005 年獲得了 Linux 的支持。最常用的日志文件系統(tǒng) ext3fs (third extended file system)是 ext2 的擴(kuò)展,它增加了記錄日志的功能。從 2001 年起,Linux 系統(tǒng)中就開(kāi)始支持 ext3fs。最終,ReiserFS 日志文件系統(tǒng)在其被引入之后,力壓群雄,被廣泛使用。但由于其原開(kāi)發(fā)者的一些法律糾紛,ReiserFS 日志文件系統(tǒng)未能得到進(jìn)一步的發(fā)展。


日志的幾種變體

日志文件系統(tǒng)是使用日志來(lái)緩沖文件系統(tǒng)的修改(同時(shí)也可以應(yīng)用于緊急故障恢復(fù))的,但可以根據(jù)記錄的時(shí)間與內(nèi)容采取不同的策略。其中,三種常見(jiàn)的策略為:回寫(xiě)(writeback)、預(yù)定(ordered)和數(shù)據(jù)(data)。

在回寫(xiě)模式 中,僅有元數(shù)據(jù)被記錄到日志,數(shù)據(jù)塊則被直接寫(xiě)入到磁盤位置上。這樣可以保存文件系統(tǒng)結(jié)構(gòu),防止崩潰,但卻有可能發(fā)生數(shù)據(jù)崩潰(比如:在元數(shù)據(jù)記錄到日志后,數(shù)據(jù)塊寫(xiě)入磁盤前,系統(tǒng)崩潰)。要想解決這個(gè)問(wèn)題,您可以使用預(yù)定模式。預(yù)定模式 只將元數(shù)據(jù)記錄到日志,但是在此之前將數(shù)據(jù)寫(xiě)入到磁盤。這樣就可以保證系統(tǒng)恢復(fù)后數(shù)據(jù)和文件系統(tǒng)的一致性。最后一種模式將數(shù)據(jù)也記錄到了日志中。在數(shù)據(jù)模式 中,元數(shù)據(jù)和數(shù)據(jù)都被記錄到日志中。這種模式可以最大限度地防止文件系統(tǒng)崩潰與數(shù)據(jù)丟失,但由于全部數(shù)據(jù)都寫(xiě)入了兩次(先寫(xiě)入日志,再寫(xiě)入磁盤),系統(tǒng)性能可能會(huì)降低。

日志的提交也有很多種不同的策略。比如,是在日志將滿時(shí),還是在超時(shí)后?


日志文件系統(tǒng)的現(xiàn)狀

如今,有幾種日志文件系統(tǒng)應(yīng)用非常廣泛。每一種都有其自己的優(yōu)缺點(diǎn)。下面介紹現(xiàn)存最普遍的四種日志文件系統(tǒng)。

JFS2

JFS2(又稱 enhanced journaled file system)是最早期的日志文件系統(tǒng),在植入 Linux 之前已被應(yīng)用于 IBM AIX? 操作系統(tǒng)多年。它是 64 位的文件系統(tǒng),雖然它是在原來(lái)的 JFS 的基礎(chǔ)上開(kāi)發(fā)的,但卻較之有所改進(jìn),即:JFS2 具有更優(yōu)的擴(kuò)展性能,而且支持多處理器架構(gòu)。

JFS2 支持預(yù)定的日志記錄方式,可以提高較高的性能,并實(shí)現(xiàn)亞秒級(jí)文件系統(tǒng)恢復(fù)。JFS2 同時(shí)為提高性能提供了基于分區(qū)的文件分配(Extent-based allocation)?;诜謪^(qū)的分配 是指對(duì)一組連續(xù)的塊而非單一的塊進(jìn)行分配。由于這些塊在磁盤上是連續(xù)的,其讀取和寫(xiě)入的性能就會(huì)更好。這種分配的另外一個(gè)優(yōu)勢(shì)就是可以將元數(shù)據(jù)管理最小化。按塊分配磁盤空間就意味著要逐塊更新元數(shù)據(jù)。而使用分區(qū),元數(shù)據(jù)則僅需按照分區(qū)(可以代表多個(gè)塊)更新。

JFS2 還使用了 B+ 樹(shù),以便更快地查找目錄和管理分區(qū)描述符。JFS2 沒(méi)有內(nèi)部日志提交策略,而是在 kupdate 守護(hù)進(jìn)程超時(shí)時(shí)提交。

XFS

XFS 是 Silicon Graphicsis 于 1995 年為 IRIX 操作系統(tǒng)開(kāi)發(fā)的其他早期日志文件系統(tǒng)之一。它于 2001 年就已經(jīng)被植入 Linux,因此,它已經(jīng)成熟而且可靠。

XFS 支持 64 位全地址尋址,并以 B+ 樹(shù)為目錄和文件分配提供高性能。XFS 同樣使用了基于分區(qū)的分配,支持可變的塊大?。◤?512 字節(jié)到 64KB )。除分區(qū)外,XFS 還采用延時(shí)分配,即等到塊將被寫(xiě)入磁盤時(shí),再為其分配磁盤空間。這樣所需磁盤空間總數(shù)就一目了然,因此這個(gè)功能提高了分配連續(xù)磁盤塊的可能性。

XFS 還有一些其他的有趣特性,它可以保證 rate 輸入輸出(I/O — 通過(guò)為文件系統(tǒng)用戶保留帶寬)和直接 I/O。其中,數(shù)據(jù)是直接在磁盤和用戶空間緩沖區(qū)間拷貝的(而不是從多個(gè)緩沖區(qū)進(jìn)入)。XFS 采用回寫(xiě)日志策略。

第三擴(kuò)展文件系統(tǒng)(ext3fs)

第三擴(kuò)展文件系統(tǒng)(third extended file system,ext3fs)是最流行的日志文件系統(tǒng),是由 ext2 文件系統(tǒng)演化而來(lái)。實(shí)際上,Ext3fs 可以與 ext2fs 兼容,這是因?yàn)?ext3fs 使用的結(jié)構(gòu)與 ext2fs 相同,僅僅多了一個(gè)日志而已。我們甚至可以把 ext3fs 的一部分當(dāng)作 ext2 文件系統(tǒng)掛載,或者將 ext2 文件系統(tǒng)轉(zhuǎn)換成 ext3 文件系統(tǒng)(使用 tune2fs 實(shí)用程序)。

Ext3fs 允許用三種方式記錄日志(回寫(xiě),預(yù)定和數(shù)據(jù)),但預(yù)定模式為默認(rèn)模式。日志提交策略也是可配置的,但是默認(rèn)在日志填滿 1/4 時(shí)或其中一個(gè)提交計(jì)時(shí)器超時(shí)時(shí),提交日志。

ext3fs 主要的弊端之一就是它最初不是作為日志文件系統(tǒng)而設(shè)計(jì)的。它是在 ext2fs 的基礎(chǔ)上開(kāi)發(fā)的,因此缺少一些其他日志文件系統(tǒng)所具備的高級(jí)特性(例如分區(qū))。它在性能方面較之 ReiserFS、JFS 以及 XFS 也尤為遜色,但它所需要的 CPU 和內(nèi)存要比同類解決方案少。

ReiserFS

ReiserFS 是從一開(kāi)始就按照記錄日志的意圖而開(kāi)發(fā)的日志文件系統(tǒng)。ReiserFS 于 2001 年被引進(jìn)到主流 2.4 內(nèi)核(Linux 采用的第一個(gè)日志文件系統(tǒng))。其默認(rèn)的日志記錄方法為預(yù)定,且支持以在線調(diào)整大小的方式擴(kuò)展文件系統(tǒng)。ReiserFS 同時(shí)還具有 tail packing 功能,顯著減少了磁盤碎片。在處理較小文件方面,ReiserFS 的速度要比 ext3f 快(當(dāng) tail packing 可用時(shí))。

ReiserFS(又稱 ReiserFS v3)具有很多先進(jìn)的功能,如 B+ 樹(shù)。該文件系統(tǒng)的基礎(chǔ)格式建立在單一的 B+ 樹(shù)的基礎(chǔ)之上,這使得搜索的效率和可伸縮性增強(qiáng)。提交策略則取決于日志的大小,但是要以待提交的塊的數(shù)量為基礎(chǔ)。

ReiserFS 也遇到了幾個(gè)問(wèn)題 — 大多是最近出現(xiàn)的,這與其開(kāi)發(fā)者遇到了一些法律糾紛有直接原因。


日志文件系統(tǒng)的未來(lái)

現(xiàn)在您已經(jīng)了解了現(xiàn)行的(和過(guò)去的)日志文件系統(tǒng),下面就讓我們看一看它的發(fā)展趨勢(shì)。

Reiser4

在成功地將 ReiserFS 合并到 Linux 內(nèi)核,并被很多的 Linux 發(fā)行版采用之后,Namesys(開(kāi)發(fā) ReiserFS 的公司)便開(kāi)始致力于新的日志文件系統(tǒng)的開(kāi)發(fā)。Reiser4 被設(shè)計(jì)成為全新的日志文件系統(tǒng),它擁有很多先進(jìn)的功能。

Resier4 擬定通過(guò) wandering 日志和延遲分配塊直至日志提交(像在 XFS 中一樣)的方式來(lái)實(shí)現(xiàn)更優(yōu)秀的日志記錄。Reiser4 還設(shè)計(jì)有靈活的插件架構(gòu)(以支持諸如壓縮和加密之類的功能),但是被 Linux 社區(qū)拒絕了,因?yàn)檫@些在虛擬文件系統(tǒng)(virtual file system,VFS)被當(dāng)作是最好的功能。

由于 Namesys 的所有者的堅(jiān)持,所有關(guān)于 Reiser4 的商業(yè)活動(dòng)都停止了。

第四擴(kuò)展文件系統(tǒng)

第四擴(kuò)展日志文件系統(tǒng)(fourth extended journaling file system,ext4fs)是由 ext3fs 演化而來(lái)。Ext4 文件系統(tǒng)被設(shè)計(jì)為具有向前和向后兼容性,但它具有許多新的高級(jí)特性(其中的一些特性破壞了兼容性)。這就意味著您可以將 ext4fs 的一部分作為 ext3fs 掛載,反之亦然。

首先,ext4fs 是 64 位文件系統(tǒng),并被設(shè)計(jì)為可以支持很大的容量(1 exabyte)。它還可以使用分區(qū),但是這樣做將失去與 ext3fs 的兼容性。像 XFS 和 Reiser4 一樣,ext4fs 還支持在必要時(shí)采取延時(shí)分配方式分配塊(這樣可以減少磁盤碎片)。日志的內(nèi)容也已經(jīng)執(zhí)行過(guò)檢查和(checksum),使日志更加可靠。ext4fs 并沒(méi)有采用標(biāo)準(zhǔn)的 B+ 或者 B* 樹(shù),取而代之的是 B 樹(shù)的一種變體,叫做 H 樹(shù),它支持更大的子目錄(ext3 的上限為 32KB )。

雖然延時(shí)分配的方法可以減少磁盤碎片,但時(shí)間久了,一個(gè)大的文件系統(tǒng)可能會(huì)成為碎片。為解決這個(gè)問(wèn)題,開(kāi)發(fā)了在線磁盤碎片整理工具(e4defrag)。您可以使用這個(gè)工具來(lái)整理單個(gè)的文件或者整個(gè)文件系統(tǒng)。

ext3fs 與 ext4fs 間的另一個(gè)有趣的區(qū)別就在于文件的日期分辨率。在 ext3 中,時(shí)間戳的最小分辨率為 1 秒。而 Ext4fs 是面向未來(lái)的:那時(shí)處理器和接口的速度會(huì)持續(xù)加快,需要更高的分辨率。因此,ext4 中時(shí)間戳的最小分辨率為 1 納秒。

Ext4fs 已被合并到自 2.6.19 以后的 Linux 內(nèi)核中,但它還是不夠穩(wěn)定。下一代系統(tǒng)的開(kāi)發(fā)將繼續(xù)致力于此;輔之以上一代的優(yōu)勢(shì), 它就會(huì)是下一代的 Linux 日志文件系統(tǒng)。


結(jié)束語(yǔ)

日志文件系統(tǒng)在系統(tǒng)崩潰或斷電時(shí)提供了可靠性,并防止系統(tǒng)崩潰。另外,與較傳統(tǒng)的文件系統(tǒng)方法(比如那些依賴于 fsck 的系統(tǒng))相比,日志文件系統(tǒng)大大地縮短了系統(tǒng)崩潰的恢復(fù)時(shí)間。新的日志記錄功能的開(kāi)發(fā)要指望將來(lái)的新算法與結(jié)構(gòu),也要仰仗以前的算法與結(jié)構(gòu),將 JFS 和 XFS 的功能結(jié)合起來(lái)。將來(lái)日志文件系統(tǒng)到底會(huì)如何發(fā)展還不得而知,但可以確定的是它們會(huì)更具實(shí)用性,并會(huì)成為新的日志文件系統(tǒng)標(biāo)準(zhǔn)

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

CPU親和度通過(guò)限制進(jìn)程或線程可以運(yùn)行的CPU核心集合,使得它們只能在指定的CPU核心上執(zhí)行。這可以減少CPU緩存的失效次數(shù),提高緩存命中率,從而提升系統(tǒng)性能。

關(guān)鍵字: Linux 嵌入式

在Linux系統(tǒng)性能優(yōu)化中,內(nèi)存管理與網(wǎng)絡(luò)連接處理是兩大核心領(lǐng)域。vm.swappiness與net.core.somaxconn作為關(guān)鍵內(nèi)核參數(shù),直接影響系統(tǒng)在高負(fù)載場(chǎng)景下的穩(wěn)定性與響應(yīng)速度。本文通過(guò)實(shí)戰(zhàn)案例解析這兩個(gè)...

關(guān)鍵字: Linux 內(nèi)存管理

對(duì)于LLM,我使用b谷歌Gemini的免費(fèi)層,所以唯一的成本是n8n托管。在使用了n8n Cloud的免費(fèi)積分后,我決定將其托管在Railway上(5美元/月)。然而,由于n8n是開(kāi)源的,您可以在自己的服務(wù)器上托管它,而...

關(guān)鍵字: 人工智能 n8n Linux

在Linux系統(tǒng)管理中,權(quán)限控制是安全運(yùn)維的核心。本文通過(guò)解析/etc/sudoers文件配置與組策略的深度應(yīng)用,結(jié)合某金融企業(yè)生產(chǎn)環(huán)境案例(成功攔截98.7%的非法提權(quán)嘗試),揭示精細(xì)化權(quán)限管理的關(guān)鍵技術(shù)點(diǎn),包括命令別...

關(guān)鍵字: Linux 用戶權(quán)限 sudoers文件

Linux內(nèi)核中的信號(hào)量(Semaphore)是一種用于資源管理的同步原語(yǔ),它允許多個(gè)進(jìn)程或線程對(duì)共享資源進(jìn)行訪問(wèn)控制。信號(hào)量的主要作用是限制對(duì)共享資源的并發(fā)訪問(wèn)數(shù)量,從而防止系統(tǒng)過(guò)載和數(shù)據(jù)不一致的問(wèn)題。

關(guān)鍵字: Linux 嵌入式

在云計(jì)算與容器化技術(shù)蓬勃發(fā)展的今天,Linux網(wǎng)絡(luò)命名空間(Network Namespace)已成為構(gòu)建輕量級(jí)虛擬網(wǎng)絡(luò)的核心組件。某頭部互聯(lián)網(wǎng)企業(yè)通過(guò)命名空間技術(shù)將測(cè)試環(huán)境資源消耗降低75%,故障隔離效率提升90%。本...

關(guān)鍵字: Linux 云計(jì)算

在Linux內(nèi)核4.18+和主流發(fā)行版(RHEL 8/Ubuntu 20.04+)全面轉(zhuǎn)向nftables的背景下,某電商平臺(tái)通過(guò)遷移將防火墻規(guī)則處理效率提升40%,延遲降低65%。本文基于真實(shí)生產(chǎn)環(huán)境案例,詳解從ipt...

關(guān)鍵字: nftables Linux

在Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)中,等待隊(duì)列(Wait Queue)是實(shí)現(xiàn)進(jìn)程睡眠與喚醒的核心機(jī)制,它允許進(jìn)程在資源不可用時(shí)主動(dòng)放棄CPU,進(jìn)入可中斷睡眠狀態(tài),待資源就緒后再被喚醒。本文通過(guò)C語(yǔ)言模型解析等待隊(duì)列的實(shí)現(xiàn)原理,結(jié)合...

關(guān)鍵字: 驅(qū)動(dòng)開(kāi)發(fā) C語(yǔ)言 Linux

在Unix/Linux進(jìn)程間通信中,管道(pipe)因其簡(jiǎn)單高效被廣泛使用,但默認(rèn)的半雙工特性和無(wú)同步機(jī)制容易導(dǎo)致數(shù)據(jù)競(jìng)爭(zhēng)。本文通過(guò)父子進(jìn)程雙向通信案例,深入分析互斥鎖與狀態(tài)機(jī)在管道同步中的應(yīng)用,實(shí)現(xiàn)100%可靠的數(shù)據(jù)傳...

關(guān)鍵字: 管道通信 父子進(jìn)程 Linux

RTOS :RTOS的核心優(yōu)勢(shì)在于其實(shí)時(shí)性。它采用搶占式調(diào)度策略,確保高優(yōu)先級(jí)任務(wù)能夠立即獲得CPU資源,從而在最短時(shí)間內(nèi)完成處理。RTOS的實(shí)時(shí)性是通過(guò)嚴(yán)格的時(shí)間管理和任務(wù)調(diào)度算法實(shí)現(xiàn)的,能夠滿足對(duì)時(shí)間敏感性要求極高的...

關(guān)鍵字: Linux RTOS
關(guān)閉