鐘明輝 朱守元
摘 要:隨著嵌入式系統(tǒng)使用越來越廣泛,嵌入式系統(tǒng)越來越多地遇到大量數(shù)據(jù)保存的需求,而硬盤是大數(shù)據(jù)量保存的第一選擇,在這種情況下,硬盤的穩(wěn)定性及使用壽命就成為設(shè)計系統(tǒng)時需要考慮的一個重要要素。該文主要描述了一種對于在嵌入式Linux下使用ext3格式的硬盤的使用與維護機制,其關(guān)鍵在于結(jié)合了在實際使用過程中較常見的問題,然后相應(yīng)的給出了解決方法。通過添加這些硬盤處理機制,有效提升了硬盤的工作穩(wěn)定性。
關(guān)鍵詞:嵌入式系統(tǒng);Linux;硬盤維護;文件系統(tǒng);ext3
中圖分類號:TP31 文獻標識碼:B
1 引言(Introduction)
1.1 硬盤保護機制研究的背景和意義
隨著嵌入式系統(tǒng)使用越來越廣泛,嵌入式系統(tǒng)越來越多的遇到大量數(shù)據(jù)保存的需求。硬盤是計算機系統(tǒng)中最重要的存儲設(shè)備之一,是大數(shù)據(jù)量保存的第一選擇。此時,硬盤的穩(wěn)定性及使用壽命就成為設(shè)計嵌入式系統(tǒng)時需要考慮的一個重要要素。本文主要描述了一種對于在嵌入式Linux下使用ext3格式的硬盤的使用與維護機制。
1.1.1 嵌入式系統(tǒng)的特點
嵌入式Linux操作系統(tǒng)是針對不同的應(yīng)用需求,對Linux內(nèi)核進行裁剪修改使之能在嵌入式計算機系統(tǒng)上運行的一種操作系統(tǒng)。嵌入式系統(tǒng)一般包含嵌入式微處理器、外圍硬件設(shè)備、嵌入式操作系統(tǒng)和應(yīng)用程序四個部分[1]。
相比于通用電腦,嵌入式系統(tǒng)的優(yōu)勢表現(xiàn)為如下幾個方面:(1)體積小,易于安放;(2)采用專用芯片,有更高的效率與可靠性;(3)豐富的外設(shè)接口;(4)可裁剪的軟件系統(tǒng);(5)更強的實時性。
1.1.2 硬盤的特性介紹
下面我們從兩個方面來介紹硬盤:硬盤的內(nèi)部物理結(jié)構(gòu)、硬盤分區(qū)介紹。
一、硬盤的內(nèi)部物理結(jié)構(gòu)
首先分析硬盤的內(nèi)部物理結(jié)構(gòu),可以分為四部分:磁頭、磁道、扇區(qū)、柱面,下面分別介紹。
(1)磁頭:磁頭是硬盤讀取數(shù)據(jù)的重要部件,磁頭的主要作用是實現(xiàn)磁信息與電信號之間的轉(zhuǎn)換,實現(xiàn)數(shù)據(jù)傳輸[2]。
(2)磁道:當(dāng)磁盤旋轉(zhuǎn)時,磁頭若保持在一個位置上,則每個磁頭都會在磁盤表面劃出一個圓形軌跡,這些圓形軌跡就叫做磁道[3]。
(3)扇區(qū):將磁盤圓形的盤片劃分成若干個扇形區(qū)域,這就是扇區(qū),磁盤驅(qū)動器在向磁盤讀取和寫入數(shù)據(jù)時,要以扇區(qū)為單位。
(4)柱面:硬盤通常由重疊的一組盤片構(gòu)成,每個盤面都被劃分為同等數(shù)目的磁道,并從外向內(nèi)進行編號,具有相同編號的磁道就形成一個圓柱,稱為磁盤的柱面。我們通常所說的硬盤的CHS參數(shù),即Cylinder(柱面)、Head(磁頭)、Sector(扇區(qū)),只要知道了硬盤的CHS參數(shù),就可以確定硬盤的容量。
二、硬盤分區(qū)介紹
硬盤分區(qū)是指對硬盤的物理存儲空間進行邏輯劃分,將一個較大容量的硬盤分成多個大小不等的邏輯區(qū)間。將一個硬盤劃分出若干個分區(qū),分區(qū)的數(shù)量和每一個分區(qū)的容量大小是由用戶根據(jù)自己的需要來設(shè)定的[4]。
硬盤分區(qū)的概念細分,又可以分為主引導(dǎo)分區(qū)(master boot recorder,MBR)、主分區(qū)、擴展分區(qū)、邏輯分區(qū)。主引導(dǎo)分區(qū)就是指整個硬盤的信息區(qū),主分區(qū)、擴展分區(qū)、邏輯分區(qū)都是指實際文件數(shù)據(jù)放置的地方。
我們使用Linux下常用的ext3文件系統(tǒng)為例,來描述一個分區(qū)的內(nèi)部結(jié)構(gòu)。硬盤分區(qū)首先被劃分為一個個的塊(block)。這些塊被聚在一起分成幾個大的塊組(block group)。
每個塊組都相對應(yīng)一個組描述(group descriptor),這些組描述被聚在一起放在硬盤分區(qū)的開頭部分,跟在超級塊(super block)的后面[5]。
在塊組的組描述中,其中有一個塊指針指向這個塊組的塊位圖(block bit-map),塊位圖中的每個位表示一個塊。在塊組的組描述中另外有一個塊指針指向節(jié)點位圖(inode bitmap),里面的每一個位相對應(yīng)一個文件節(jié)點。在塊組的描述中還有一個重要的塊指針,是指向節(jié)點表。這個節(jié)點表就是這個塊組中所聚集到的全部節(jié)點放在一起形成的。
一個節(jié)點當(dāng)中記載的最關(guān)鍵的信息,是這個節(jié)點中的用戶數(shù)據(jù)存放在什么地方。用戶文件的內(nèi)容存放在什么地方,這就是一個節(jié)點包含的信息。ext3文件系統(tǒng)的硬盤布局圖,如圖1所示。
1.1.3 保護機制的必要性
硬件都存在一個使用壽命的問題,硬盤也是如此。
硬盤對于環(huán)境有較高的要求,振動、溫度、灰塵都對硬盤的使用壽命有嚴重影響。特別是在操作硬盤的過程中,突然斷電,極有可能損壞硬盤。另外,對硬盤不正確的操作,例如,過于頻繁的讀寫硬盤,沒有設(shè)置正確的硬盤工作模式,也會影響硬盤的使用期限。
所以,在硬盤的使用過程中,有一些需要注意的事項,這也就是我們要進一步說明的硬盤的保護機制,本文主要是針對軟件方面的維護機制進行描述。
1.2 本文的主要內(nèi)容和安排
本課題的研發(fā)目標是開發(fā)出對嵌入式系統(tǒng)下硬盤的保護機制,通過多層次的保護,提升硬盤使用壽命,提供存儲系統(tǒng)的穩(wěn)定性。
2 硬盤問題類型介紹(Introduction of problem of hard disk)
硬盤在使用過程中,由于使用環(huán)境、使用過于頻繁或使用方式不當(dāng),會導(dǎo)致出現(xiàn)多種問題。
下面,我們先了解一下硬盤在Linux系統(tǒng)下是如何使用的,然后詳細描述硬盤使用過程中的常見問題。
2.1 Linux下硬盤加載使用過程
Linux下硬盤加載使用過程,大體上可以分為四部分:識別硬盤、分區(qū)管理、建立文件系統(tǒng)、讀寫文件。
2.1.1 Linux系統(tǒng)識別硬盤endprint
系統(tǒng)初始時根據(jù)MBR的信息來識別硬盤,其中包括了一些執(zhí)行文件用來載入系統(tǒng)。在分區(qū)表中,主要儲存了以下信息:分區(qū)號、分區(qū)的起始磁柱、磁柱的總數(shù)。所以在系統(tǒng)初始化時,就根據(jù)分區(qū)表中的這三項信息來識別硬盤。
2.1.2 硬盤分區(qū)管理
要對硬盤進行分區(qū)管理與維護,首先需要有一個分區(qū)方案。如今的硬盤基本上都在200GB以上,如果將這樣的海量硬盤只分一個區(qū)或者分成很多個小區(qū),在一定程度上都會影響硬盤的易用性和性能。不同的用戶有不同的實際需要,分區(qū)方案也各不相同。
2.1.3 建立文件系統(tǒng)
我們剛建立的分區(qū),還不能直接用來存放資料,必須先對這個分區(qū)做格式化的工作,格式化就是將分區(qū)劃分成一格一格的塊,而每個塊就是文件系統(tǒng)存取資料的最小單位,所以才可以將資料存放在這些塊中。多個塊會組成一個組;除了啟動扇區(qū)之外,第一個塊稱為超級塊。在超級塊中包含了磁盤的信息,例如塊的大小、片斷大小、塊組數(shù)、每個塊組包含的塊數(shù)、每組節(jié)點數(shù)、總字節(jié)數(shù)和總塊數(shù)等[6]。一個分區(qū)就是由超級塊及多個塊組構(gòu)成。
2.1.4 讀寫文件
最常見的文件操作是讀、寫,另外還有一些文件屬性相關(guān)訪問,例如文件相關(guān)信息,例如目錄、訪問時間、文件大小等信息的查詢與修改等。
對文件的讀寫,基本上是依據(jù)文件系統(tǒng)格式,進行相應(yīng)規(guī)則下的操作,與具體的文件格式相關(guān),不同文件系統(tǒng)格式的操作,會有很大差異。然而,對于用戶而言,卻不必關(guān)心具體操作系統(tǒng)如何操作硬盤,只需要依據(jù)系統(tǒng)提供的通用的文件訪問方式,進行操作即可。
2.2 硬盤常見問題
在硬盤使用過程中,有如下常見問題:訪問失敗、分區(qū)掛載失敗、找不到硬盤分區(qū)、探測不到硬盤、硬盤物理損壞,下面分別進行介紹。
2.2.1 訪問失敗
訪問失敗,這是最為常見的硬盤訪問問題,也是修復(fù)可能性相對比較高的問題。按訪問失敗的類型來劃分,包括五種情況:(1)創(chuàng)建文件失??;(2)打開文件失??;(3)打開目錄失敗;(4)讀文件失??;(5)寫文件失敗。
可能導(dǎo)致訪問失敗的原因,大體上可以分為沒有硬盤分區(qū)的訪問權(quán)限,文件路徑不存在,磁盤分區(qū)已滿,硬盤損壞等。
2.2.2 分區(qū)掛載失敗
在訪問硬盤分區(qū)之前,需要先掛載分區(qū)到文件系統(tǒng),在Linux下,是使用mount命令,mount命令的作用是加載文件系統(tǒng)[7],映射到相應(yīng)的掛載點上去。在某些情況下,掛載會出現(xiàn)失敗。
2.2.3 找不到硬盤分區(qū)
在掛載硬盤分區(qū)之前,需要先找到硬盤分區(qū)。在Linux下,硬盤分區(qū)的存在路徑,第一個硬盤對應(yīng)的設(shè)備名稱為/dev/hda,第一個硬盤的分區(qū)對應(yīng)設(shè)備名稱通常為/dev/hdax(x為分區(qū)號)。若分區(qū)本身有問題,就可能導(dǎo)致找不到相應(yīng)設(shè)備名稱了。
2.2.4 探測不到硬盤
在Linux系統(tǒng)啟動過程中,會進行硬盤的探測。IDE接口的探測流程如下:
(1)先加載通用的IDE驅(qū)動程序。
(2)初始化IDE的控制器,IDE控制芯片驅(qū)動加載后,進行初始化傳輸模式。
(3)接著使用IDE控制器查找連接在IDE接口上的設(shè)備,如果檢查到硬盤則加載IDE硬盤的驅(qū)動程序,設(shè)置該硬盤的基本參數(shù)。
這里每一步出錯,都會導(dǎo)致探測不到硬盤。
2.2.5 硬盤物理損壞
最嚴重的硬盤問題,是硬盤物理損壞。
物理硬盤損壞是指硬盤本身的構(gòu)成器件損壞,如盤片、磁頭、控制電路等,最大的特點是硬盤有咔嗒咔嗒的響聲或者根本就不轉(zhuǎn)了,并且不能讀盤或者是根本就在計算機上查找不到硬盤。
對于物理損壞,就不是軟件上可以解決的了,只能是通過專業(yè)硬件維修人員來維修。
3 硬盤維護機制(Maintenance mechanism of hard disk)
由于硬盤本身的工作機理,同時嵌入式系統(tǒng)經(jīng)常工作于極其不同的環(huán)境下,就會導(dǎo)致在使用過程種,不可避免會出現(xiàn)一些問題。那么,我們就可以根據(jù)這些可能出現(xiàn)的問題,提前進行預(yù)防,對于已經(jīng)出現(xiàn)的問題,預(yù)先提供處理機制,或進行修復(fù)處理。
下面介紹本課題采用的硬盤保護的方式,然后具體描述硬盤維護機制的軟件架構(gòu)。
3.1 硬盤保護方式
硬盤保護方式與我們使用硬盤的方式及硬盤運行環(huán)境有著密切的關(guān)系。我們考慮的嵌入式系統(tǒng),其啟動程序存儲于flash上,大量數(shù)據(jù)則存儲于硬盤里面。在有數(shù)據(jù)寫入時,啟動硬盤進行寫入,在查詢讀出時進行讀硬盤,其他時候,不對硬盤進行操作。雖然出于對系統(tǒng)穩(wěn)定性的考慮,沒有使用硬盤作為系統(tǒng)啟動部分,但是本文下面描述的方法,大部分也同樣適用于使用硬盤做啟動存儲的系統(tǒng)。
3.1.1 選擇恰當(dāng)?shù)挠脖P工作模式
硬盤的工作模式,由于考慮到節(jié)電、延長壽命,各硬盤廠家都提供了多種工作模式,這些工作模式有所不同,不過大體上,可以分為空閑模式和睡眠模式。
空閑模式,就是在硬盤不工作的時候,由于沒有進行讀寫操作,相比較讀寫時,功耗有所降低。這種模式下,硬盤電機仍然在轉(zhuǎn)動,當(dāng)需要再次開始工作時,可以快速恢復(fù)工作。
睡眠模式是一種節(jié)能狀態(tài)。進入睡眠模式,實際上就是磁頭停放在啟停區(qū),然后讓硬盤電機停轉(zhuǎn),由于電機是硬盤耗電的主要部分,停止電機能讓整個硬盤的功耗大幅度降低。
3.1.2 減少訪問硬盤的頻率
對硬盤過于頻繁的訪問也會影響硬盤的壽命,這里說的訪問,不僅僅是寫文件、讀文件,還包括對文件的打開與關(guān)閉,對硬盤容量、目錄內(nèi)容等的查詢,對目錄的操作,對文件屬性的更改等。
減少硬盤訪問的技巧,主要是要進行整體的梳理硬盤訪問相關(guān)代碼,去掉不必要的訪問,優(yōu)化訪問流程。要盡量減少不必要的打開關(guān)閉操作,對于硬盤上的文件,最好是能做到只打開一次,然后進行讀寫操作,在所有操作完成后進行一次性關(guān)閉。只在必要的時候,才查詢硬盤容量、目錄內(nèi)容等。endprint
還有很重要的一點,就是盡量不要使用無緩沖寫文件模式。在Linux系統(tǒng)下,向硬盤寫入的數(shù)據(jù),是暫存在系統(tǒng)緩沖中的,這樣是為了減少請求寫硬盤的次數(shù)并改進程序的性能。只有在緩沖已經(jīng)寫滿或者一段時間后,系統(tǒng)統(tǒng)一進行一次刷新,此時才真正寫入硬盤。延遲寫減少了磁盤讀寫次數(shù),但是卻降低了文件內(nèi)容的更新速度,使得欲寫到文件中的數(shù)據(jù)在一段時間內(nèi)并沒有寫到磁盤上[8]。對于某些關(guān)鍵的不能丟失的文件,需要設(shè)置寫硬盤的方式為無緩沖模式,即一旦發(fā)出寫命令,就阻塞等待真正的寫入硬盤完成才返回。除了那些特別關(guān)鍵不能丟失的文件之外,其他的文件,最好是不要使用無緩沖模式,因為無緩沖模式也會大幅增加對硬盤的實際操作次數(shù)。
3.1.3 修復(fù)硬盤分區(qū)信息
雖然上面我們已經(jīng)做了多方面的預(yù)防措施,但是由于實際工作環(huán)境的各不相同,還是有可能導(dǎo)致硬盤的異常,所以我們還需要考慮,在硬盤確實遇到異常之后,如何恢復(fù)丟失的數(shù)據(jù)。
分區(qū)掛載失敗,是我們比較常見的問題之一,那么,我們掛載硬盤分區(qū)失敗后,是否就沒有方法恢復(fù)里面的數(shù)據(jù)了呢?
答案是有可能恢復(fù)的!
這里我們先了解一下數(shù)據(jù)的存放方式,要使用硬盤等介質(zhì)上的數(shù)據(jù)文件,通常需要依靠操作系統(tǒng)所提供的文件系統(tǒng)功能,文件系統(tǒng)維護著存儲介質(zhì)上所有文件的索引[9]。因為效率等諸多方面的考慮,在我們利用操作系統(tǒng)提供的指令刪除數(shù)據(jù)文件或進行格式化操作的時候,磁介質(zhì)上的磁粒子極性并不會被清除,操作系統(tǒng)只是對文件系統(tǒng)的索引部分進行了修改。正是操作系統(tǒng)這樣處理存儲的方式,為我們進行數(shù)據(jù)恢復(fù)提供了可能。
下面我們分析一下硬盤分區(qū)掛載的過程,對于Linux系統(tǒng),掛載就是采用mount命令,mount把現(xiàn)有的文件樹中的一個目錄映射為新加入的文件系統(tǒng)的根[10]。對于一個設(shè)備,例如我們的硬盤分區(qū),它本身是已經(jīng)指定了文件系統(tǒng)格式的,是ext3格式,而根文件系統(tǒng),不一定與設(shè)備文件系統(tǒng)格式一致,例如,在flash上比較常見的文件系統(tǒng)如jffs2、yaffs2等。Linux系統(tǒng)如何管理不同的文件系統(tǒng),是內(nèi)核里面的事情,我們只需要知道是哪個目錄對應(yīng)于我們的設(shè)備就行了。
讓我們關(guān)注一下mount的操作過程,mount的過程就是把設(shè)備的文件系統(tǒng)加入到linux的虛擬文件系統(tǒng)vfs框架中,主要分三個步驟:
(1)首先,要mount一個新的設(shè)備,需要創(chuàng)建一個新的超級塊(super block)。這通過要mount的文件系統(tǒng)的文件系統(tǒng)類型,例如我們的ext3來調(diào)用相關(guān)函數(shù)創(chuàng)建一個新的super block。
(2)對于任何一個準備mount的文件系統(tǒng),都要有一個虛擬文件系統(tǒng)的掛載點(vfsmount), 創(chuàng)建這個vfsmount,并設(shè)置好其屬性。當(dāng)文件系統(tǒng)被實際安裝時,將有一個vfsmount結(jié)構(gòu)體在安裝點被創(chuàng)建[11]。
(3)將創(chuàng)建好的vfsmount加入到系統(tǒng)中。
由上面的mount過程可知,在Linux系統(tǒng)本身運行正常的情況下,掛載的成功與否,很大程度上與分區(qū)的超級塊信息相關(guān)。而硬盤分區(qū)的超級塊信息基本上就是直接來源于分區(qū)表信息,所以我們首先關(guān)注的就是分區(qū)表的修復(fù)。
當(dāng)然,Linux系統(tǒng)已經(jīng)提供了修復(fù)硬盤的工具:fsck。但是在嵌入式系統(tǒng)實際使用過程中,我們卻遇到了問題:內(nèi)存不夠用!原來是fsck在修復(fù)過程中,會占用較多的內(nèi)存,特別是在分區(qū)較大的情況下,對內(nèi)存的要求是非常高的,而嵌入式系統(tǒng)的內(nèi)存,通常都是按照需求配備,不會留下很多的空閑內(nèi)存。
下面,介紹我們的應(yīng)對策略:
首先,硬盤分區(qū)正常的情況下,備份硬盤分區(qū)信息。通常,這個信息量不大。
其次,在系統(tǒng)啟動時,檢查硬盤加載情況,若是有設(shè)備存在,而且mount失敗,則極有可能是分區(qū)信息損壞,然后就進行硬盤分區(qū)信息的修復(fù)。
這個策略的主體部分,是進行硬盤分區(qū)信息的修復(fù),其中又要分步驟描述:
(1)首先,讀取硬盤備份信息,獲取硬盤分區(qū)基本信息。
(2)然后讀取每個硬盤分區(qū)的塊使用情況、節(jié)點使用情況,更新到備份分區(qū)信息里。
(3)使用更新后的備份分區(qū)信息,替換掉硬盤里損壞的分區(qū)信息。
(4)最后,重新mount該分區(qū)。
這樣一個過程,內(nèi)存使用是非常有限的,完全能實現(xiàn)使用較小的內(nèi)存實現(xiàn)分區(qū)表的修復(fù)工作。
3.1.4 修復(fù)日志信息
掛載過程失敗的原因,也有可能是由于ext3文件系統(tǒng)的日志部分損壞。由于具體到日志的更新機制,比較復(fù)雜,本文不進行討論,此處的修復(fù)機制,是從應(yīng)用層面上來說的,使用比較簡單的操作來嘗試修復(fù)ext3文件系統(tǒng)的日志部分。
如此操作之后,若之前存在因為日志文件異常而訪問ext3格式的硬盤異常,會因為轉(zhuǎn)換到ext2格式,而清理掉了所有日志信息,在再次轉(zhuǎn)換到ext3格式時,建立了一個新的日志信息,這樣就解決了日志信息異常的問題了。
3.1.5 修復(fù)只讀文件系統(tǒng)
對于ext3文件系統(tǒng)格式,有時會由于硬盤分區(qū)信息的異常,在系統(tǒng)啟動后,將分區(qū)設(shè)置為只讀模式。此時,若判斷的程序中,沒有考慮到,會導(dǎo)致寫硬盤操作異常。
其實導(dǎo)致只讀文件系統(tǒng),通常就是分區(qū)信息異常導(dǎo)致的問題。在這里特意提出來,就是在實際使用過程中,極有可能忽略此問題,往往在發(fā)現(xiàn)讀取硬盤狀態(tài)成功后,就以為對硬盤的訪問都是正常的了,而在后續(xù)的使用過程中,卻遇到寫失敗的錯誤。
所以,在我們注意到這個問題之后,解決問題也是比較簡單的,就是在判斷文件系統(tǒng)狀態(tài)時,添加一個寫操作,如果寫操作成功了,則此分區(qū)就是可寫的,若寫操作失敗了,就是只讀文件系統(tǒng)了。遇到只讀文件系統(tǒng)的處理,也是修改硬盤分區(qū)信息,前面已經(jīng)說過了,就不再贅述。endprint
3.1.6 格式化
3.1.7 動態(tài)適應(yīng)不同容量的硬盤
設(shè)計硬盤使用機制時,是必須要考慮到對不同容量的支持的,有三個原因。
(1)在市面上存在著多種容量的硬盤,嵌入式產(chǎn)品的使用場景比較復(fù)雜,需要支持市面上不同容量的硬盤。
(2)在現(xiàn)場使用過程中,用戶可能需要即時更換硬盤,此時可能導(dǎo)入不同容量的硬盤,此時就需要系統(tǒng)能動態(tài)適應(yīng)不同容量的硬盤。
(3)我們還要看到將來硬盤存儲容量的變化:硬盤的存儲容量每年都在增長,其增長速度基本符合摩爾定律,大約每5年就能提高至10倍,我們必須提前考慮到對可預(yù)見的將來會出現(xiàn)的新的大容量硬盤的支持。
由于以上的幾個原因,所以我們需要在硬盤維護機制中添加對不同硬盤容量的支持。只有充分考慮到可能會發(fā)生的變化,我們的系統(tǒng)才能是比較穩(wěn)定的。
3.1.8 動態(tài)切換分區(qū)
考慮到可能會遇到修復(fù)分區(qū)信息也不能修復(fù)的分區(qū)的情況,會導(dǎo)致整個分區(qū)被格式化的情況,這里,我們就需要考慮到若分區(qū)的損壞,我們?nèi)绾螌p失減少的問題。
若是整個系統(tǒng)只有一個分區(qū),則發(fā)生這種情況,一旦格式化,就是整個硬盤的數(shù)據(jù)都丟失了。所以,可以考慮將一個硬盤分為幾個區(qū),這樣,就將數(shù)據(jù)丟失的風(fēng)險降低了。使用多個分區(qū),就帶來了一個新的需求:分區(qū)切換。在當(dāng)前使用硬盤分區(qū)將滿之前,預(yù)先進行分區(qū)切換。另外要考慮的一點是,當(dāng)遇到一個分區(qū)不能進行正常訪問時,也需要進行分區(qū)切換。
3.2 硬盤維護軟件架構(gòu)
將上面提出的多種硬盤處理方式進行綜合,就構(gòu)成了我們的硬盤維護軟件的主框架,硬盤維護軟件的主流程如圖2所示。
通過以上硬盤維護軟件框架,可以實現(xiàn)對硬盤的狀態(tài)判斷,在遇到異常時進行各種異常處理,并能支持分區(qū)的動態(tài)切換等功能。
4 測試結(jié)果(Test results)
對于硬盤工作穩(wěn)定性的測試,我們首先是讓系統(tǒng)工作一段時間,然后查看系統(tǒng)整體是否正常運行,然后跟蹤硬盤是否出現(xiàn)異常情況。通過三個月的連續(xù)運行情況,對比是否啟用硬盤維護方式的系統(tǒng),測試結(jié)果見表1。
測試結(jié)果分析:在對分區(qū)的統(tǒng)計中,使用了硬盤維護機制的系統(tǒng)只出現(xiàn)了一次分區(qū)的異常,其異常情況相比較未啟用硬盤維護機制的系統(tǒng)減小到之前的25%。從總體運行情況上看,啟用硬盤維護機制的系統(tǒng)發(fā)生的異常明顯減少。測試結(jié)果清楚的顯示了使用硬盤維護機制之后的硬盤,其工作穩(wěn)定性得到了極大的提高。
5 結(jié)論(Conclusion)
本課題是從實際應(yīng)用出發(fā),研究并開發(fā)了一套硬盤維護機制,提升嵌入式系統(tǒng)下硬盤的工作穩(wěn)定性。經(jīng)過一年多的開發(fā),已經(jīng)基本實現(xiàn)了這一目標。
本文先描述了硬盤的概念,及在Linux下使用過程中比較常見的問題,然后給出了相應(yīng)的一些解決方法,并具體描述了硬盤維護的幾個方面,通過這幾個方面對硬盤進行的管理與維護,有效的提升了硬盤的工作穩(wěn)定性。
由于硬盤的使用范圍非常廣泛,硬盤廠家眾多,且硬盤新技術(shù)也在不斷開發(fā)中,所以在硬盤穩(wěn)定性這方面的研究還有非常大的空間,是一個可以持續(xù)研究的大課題。
參考文獻(References)
[1] 孫紀坤,張小全.嵌入式Linux系統(tǒng)開發(fā)技術(shù)詳解—基于ARM[M].北京:人民郵電出版社,2006:2-4.
[2] 謝霞玲,滕先偉.硬盤維修從入門到精通[M].北京:機械工業(yè)出版社,2009:6-7.
[3] 硬盤-百科名片[Z].http://baike.baidu.com/view/4480.htm.
[4] 趙彪.硬盤分區(qū)與故障排解速查手冊[J].電腦報,2006,06(7):29-31.
[5] 趙蔚.Ext2 文件系統(tǒng)的硬盤布局[Z].http://www.ibm.com/developerworks/cn/linux/filesystem/ext2/index.html.
[6] 陶利軍.Linux系統(tǒng)文件安全實戰(zhàn)全攻略[M].北京:人民郵電出版社,2011,(10):70-75.
[7] 曹江華,方建國.Linux核心應(yīng)用命令速查[M].北京:電子工業(yè)出版社,2010,(08):213-215.
[8] [美]W.Richard Stevens,Stephen A.Rago.UNIX環(huán)境高級編程(第二版)[M].北京:人民郵電出版社,2006,(05):87-88.
[9] 李曉中,喬晗,馬鑫.數(shù)據(jù)恢復(fù)原理與實踐[M].北京:國防工業(yè)出版社,2011,(05):16-18.
[10] Evi Nemeth,Garth Snyder,Trent R.Hein[美].Linux系統(tǒng)管理技術(shù)手冊[M].北京:人民郵電出版社,2008:65-67.
[11] Robert Love[美].Linux內(nèi)核設(shè)計與實現(xiàn)[M].北京:機械工業(yè)出版社,2011:230-232.
作者簡介:
鐘明輝(1977-),男,本科,工程師.研究領(lǐng)域:嵌入式Linux軟件設(shè)計.
朱守元(1981-),女,???,設(shè)計師.研究領(lǐng)域:計算機圖像設(shè)計.endprint
3.1.6 格式化
3.1.7 動態(tài)適應(yīng)不同容量的硬盤
設(shè)計硬盤使用機制時,是必須要考慮到對不同容量的支持的,有三個原因。
(1)在市面上存在著多種容量的硬盤,嵌入式產(chǎn)品的使用場景比較復(fù)雜,需要支持市面上不同容量的硬盤。
(2)在現(xiàn)場使用過程中,用戶可能需要即時更換硬盤,此時可能導(dǎo)入不同容量的硬盤,此時就需要系統(tǒng)能動態(tài)適應(yīng)不同容量的硬盤。
(3)我們還要看到將來硬盤存儲容量的變化:硬盤的存儲容量每年都在增長,其增長速度基本符合摩爾定律,大約每5年就能提高至10倍,我們必須提前考慮到對可預(yù)見的將來會出現(xiàn)的新的大容量硬盤的支持。
由于以上的幾個原因,所以我們需要在硬盤維護機制中添加對不同硬盤容量的支持。只有充分考慮到可能會發(fā)生的變化,我們的系統(tǒng)才能是比較穩(wěn)定的。
3.1.8 動態(tài)切換分區(qū)
考慮到可能會遇到修復(fù)分區(qū)信息也不能修復(fù)的分區(qū)的情況,會導(dǎo)致整個分區(qū)被格式化的情況,這里,我們就需要考慮到若分區(qū)的損壞,我們?nèi)绾螌p失減少的問題。
若是整個系統(tǒng)只有一個分區(qū),則發(fā)生這種情況,一旦格式化,就是整個硬盤的數(shù)據(jù)都丟失了。所以,可以考慮將一個硬盤分為幾個區(qū),這樣,就將數(shù)據(jù)丟失的風(fēng)險降低了。使用多個分區(qū),就帶來了一個新的需求:分區(qū)切換。在當(dāng)前使用硬盤分區(qū)將滿之前,預(yù)先進行分區(qū)切換。另外要考慮的一點是,當(dāng)遇到一個分區(qū)不能進行正常訪問時,也需要進行分區(qū)切換。
3.2 硬盤維護軟件架構(gòu)
將上面提出的多種硬盤處理方式進行綜合,就構(gòu)成了我們的硬盤維護軟件的主框架,硬盤維護軟件的主流程如圖2所示。
通過以上硬盤維護軟件框架,可以實現(xiàn)對硬盤的狀態(tài)判斷,在遇到異常時進行各種異常處理,并能支持分區(qū)的動態(tài)切換等功能。
4 測試結(jié)果(Test results)
對于硬盤工作穩(wěn)定性的測試,我們首先是讓系統(tǒng)工作一段時間,然后查看系統(tǒng)整體是否正常運行,然后跟蹤硬盤是否出現(xiàn)異常情況。通過三個月的連續(xù)運行情況,對比是否啟用硬盤維護方式的系統(tǒng),測試結(jié)果見表1。
測試結(jié)果分析:在對分區(qū)的統(tǒng)計中,使用了硬盤維護機制的系統(tǒng)只出現(xiàn)了一次分區(qū)的異常,其異常情況相比較未啟用硬盤維護機制的系統(tǒng)減小到之前的25%。從總體運行情況上看,啟用硬盤維護機制的系統(tǒng)發(fā)生的異常明顯減少。測試結(jié)果清楚的顯示了使用硬盤維護機制之后的硬盤,其工作穩(wěn)定性得到了極大的提高。
5 結(jié)論(Conclusion)
本課題是從實際應(yīng)用出發(fā),研究并開發(fā)了一套硬盤維護機制,提升嵌入式系統(tǒng)下硬盤的工作穩(wěn)定性。經(jīng)過一年多的開發(fā),已經(jīng)基本實現(xiàn)了這一目標。
本文先描述了硬盤的概念,及在Linux下使用過程中比較常見的問題,然后給出了相應(yīng)的一些解決方法,并具體描述了硬盤維護的幾個方面,通過這幾個方面對硬盤進行的管理與維護,有效的提升了硬盤的工作穩(wěn)定性。
由于硬盤的使用范圍非常廣泛,硬盤廠家眾多,且硬盤新技術(shù)也在不斷開發(fā)中,所以在硬盤穩(wěn)定性這方面的研究還有非常大的空間,是一個可以持續(xù)研究的大課題。
參考文獻(References)
[1] 孫紀坤,張小全.嵌入式Linux系統(tǒng)開發(fā)技術(shù)詳解—基于ARM[M].北京:人民郵電出版社,2006:2-4.
[2] 謝霞玲,滕先偉.硬盤維修從入門到精通[M].北京:機械工業(yè)出版社,2009:6-7.
[3] 硬盤-百科名片[Z].http://baike.baidu.com/view/4480.htm.
[4] 趙彪.硬盤分區(qū)與故障排解速查手冊[J].電腦報,2006,06(7):29-31.
[5] 趙蔚.Ext2 文件系統(tǒng)的硬盤布局[Z].http://www.ibm.com/developerworks/cn/linux/filesystem/ext2/index.html.
[6] 陶利軍.Linux系統(tǒng)文件安全實戰(zhàn)全攻略[M].北京:人民郵電出版社,2011,(10):70-75.
[7] 曹江華,方建國.Linux核心應(yīng)用命令速查[M].北京:電子工業(yè)出版社,2010,(08):213-215.
[8] [美]W.Richard Stevens,Stephen A.Rago.UNIX環(huán)境高級編程(第二版)[M].北京:人民郵電出版社,2006,(05):87-88.
[9] 李曉中,喬晗,馬鑫.數(shù)據(jù)恢復(fù)原理與實踐[M].北京:國防工業(yè)出版社,2011,(05):16-18.
[10] Evi Nemeth,Garth Snyder,Trent R.Hein[美].Linux系統(tǒng)管理技術(shù)手冊[M].北京:人民郵電出版社,2008:65-67.
[11] Robert Love[美].Linux內(nèi)核設(shè)計與實現(xiàn)[M].北京:機械工業(yè)出版社,2011:230-232.
作者簡介:
鐘明輝(1977-),男,本科,工程師.研究領(lǐng)域:嵌入式Linux軟件設(shè)計.
朱守元(1981-),女,???,設(shè)計師.研究領(lǐng)域:計算機圖像設(shè)計.endprint
3.1.6 格式化
3.1.7 動態(tài)適應(yīng)不同容量的硬盤
設(shè)計硬盤使用機制時,是必須要考慮到對不同容量的支持的,有三個原因。
(1)在市面上存在著多種容量的硬盤,嵌入式產(chǎn)品的使用場景比較復(fù)雜,需要支持市面上不同容量的硬盤。
(2)在現(xiàn)場使用過程中,用戶可能需要即時更換硬盤,此時可能導(dǎo)入不同容量的硬盤,此時就需要系統(tǒng)能動態(tài)適應(yīng)不同容量的硬盤。
(3)我們還要看到將來硬盤存儲容量的變化:硬盤的存儲容量每年都在增長,其增長速度基本符合摩爾定律,大約每5年就能提高至10倍,我們必須提前考慮到對可預(yù)見的將來會出現(xiàn)的新的大容量硬盤的支持。
由于以上的幾個原因,所以我們需要在硬盤維護機制中添加對不同硬盤容量的支持。只有充分考慮到可能會發(fā)生的變化,我們的系統(tǒng)才能是比較穩(wěn)定的。
3.1.8 動態(tài)切換分區(qū)
考慮到可能會遇到修復(fù)分區(qū)信息也不能修復(fù)的分區(qū)的情況,會導(dǎo)致整個分區(qū)被格式化的情況,這里,我們就需要考慮到若分區(qū)的損壞,我們?nèi)绾螌p失減少的問題。
若是整個系統(tǒng)只有一個分區(qū),則發(fā)生這種情況,一旦格式化,就是整個硬盤的數(shù)據(jù)都丟失了。所以,可以考慮將一個硬盤分為幾個區(qū),這樣,就將數(shù)據(jù)丟失的風(fēng)險降低了。使用多個分區(qū),就帶來了一個新的需求:分區(qū)切換。在當(dāng)前使用硬盤分區(qū)將滿之前,預(yù)先進行分區(qū)切換。另外要考慮的一點是,當(dāng)遇到一個分區(qū)不能進行正常訪問時,也需要進行分區(qū)切換。
3.2 硬盤維護軟件架構(gòu)
將上面提出的多種硬盤處理方式進行綜合,就構(gòu)成了我們的硬盤維護軟件的主框架,硬盤維護軟件的主流程如圖2所示。
通過以上硬盤維護軟件框架,可以實現(xiàn)對硬盤的狀態(tài)判斷,在遇到異常時進行各種異常處理,并能支持分區(qū)的動態(tài)切換等功能。
4 測試結(jié)果(Test results)
對于硬盤工作穩(wěn)定性的測試,我們首先是讓系統(tǒng)工作一段時間,然后查看系統(tǒng)整體是否正常運行,然后跟蹤硬盤是否出現(xiàn)異常情況。通過三個月的連續(xù)運行情況,對比是否啟用硬盤維護方式的系統(tǒng),測試結(jié)果見表1。
測試結(jié)果分析:在對分區(qū)的統(tǒng)計中,使用了硬盤維護機制的系統(tǒng)只出現(xiàn)了一次分區(qū)的異常,其異常情況相比較未啟用硬盤維護機制的系統(tǒng)減小到之前的25%。從總體運行情況上看,啟用硬盤維護機制的系統(tǒng)發(fā)生的異常明顯減少。測試結(jié)果清楚的顯示了使用硬盤維護機制之后的硬盤,其工作穩(wěn)定性得到了極大的提高。
5 結(jié)論(Conclusion)
本課題是從實際應(yīng)用出發(fā),研究并開發(fā)了一套硬盤維護機制,提升嵌入式系統(tǒng)下硬盤的工作穩(wěn)定性。經(jīng)過一年多的開發(fā),已經(jīng)基本實現(xiàn)了這一目標。
本文先描述了硬盤的概念,及在Linux下使用過程中比較常見的問題,然后給出了相應(yīng)的一些解決方法,并具體描述了硬盤維護的幾個方面,通過這幾個方面對硬盤進行的管理與維護,有效的提升了硬盤的工作穩(wěn)定性。
由于硬盤的使用范圍非常廣泛,硬盤廠家眾多,且硬盤新技術(shù)也在不斷開發(fā)中,所以在硬盤穩(wěn)定性這方面的研究還有非常大的空間,是一個可以持續(xù)研究的大課題。
參考文獻(References)
[1] 孫紀坤,張小全.嵌入式Linux系統(tǒng)開發(fā)技術(shù)詳解—基于ARM[M].北京:人民郵電出版社,2006:2-4.
[2] 謝霞玲,滕先偉.硬盤維修從入門到精通[M].北京:機械工業(yè)出版社,2009:6-7.
[3] 硬盤-百科名片[Z].http://baike.baidu.com/view/4480.htm.
[4] 趙彪.硬盤分區(qū)與故障排解速查手冊[J].電腦報,2006,06(7):29-31.
[5] 趙蔚.Ext2 文件系統(tǒng)的硬盤布局[Z].http://www.ibm.com/developerworks/cn/linux/filesystem/ext2/index.html.
[6] 陶利軍.Linux系統(tǒng)文件安全實戰(zhàn)全攻略[M].北京:人民郵電出版社,2011,(10):70-75.
[7] 曹江華,方建國.Linux核心應(yīng)用命令速查[M].北京:電子工業(yè)出版社,2010,(08):213-215.
[8] [美]W.Richard Stevens,Stephen A.Rago.UNIX環(huán)境高級編程(第二版)[M].北京:人民郵電出版社,2006,(05):87-88.
[9] 李曉中,喬晗,馬鑫.數(shù)據(jù)恢復(fù)原理與實踐[M].北京:國防工業(yè)出版社,2011,(05):16-18.
[10] Evi Nemeth,Garth Snyder,Trent R.Hein[美].Linux系統(tǒng)管理技術(shù)手冊[M].北京:人民郵電出版社,2008:65-67.
[11] Robert Love[美].Linux內(nèi)核設(shè)計與實現(xiàn)[M].北京:機械工業(yè)出版社,2011:230-232.
作者簡介:
鐘明輝(1977-),男,本科,工程師.研究領(lǐng)域:嵌入式Linux軟件設(shè)計.
朱守元(1981-),女,???,設(shè)計師.研究領(lǐng)域:計算機圖像設(shè)計.endprint