當前位置:首頁 > 嵌入式 > 嵌入式軟件
[導讀]基于Linux的嵌入式網(wǎng)絡存儲器設計

摘要:在簡要介紹網(wǎng)絡存儲器硬件原理的基礎上,詳細說明軟件平臺的構建,并對不同網(wǎng)絡、不同平臺之間實現(xiàn)文件存儲提出了相應的解決方法。

    關鍵詞:Linux 網(wǎng)絡存儲器 Samba NFS

隨著現(xiàn)代信息社會的高速發(fā)展,各種類型的數(shù)據(jù)也呈幾何指數(shù)級地增長,如何更有效、更方便、更完全地存取管理這些數(shù)據(jù),成為人們關注的一個問題。新的網(wǎng)絡存儲技術的出現(xiàn),給了人們一個很好的解決方案。它把存儲設備直接連接到網(wǎng)絡上,作為一個瘦的網(wǎng)絡客戶終端設備給用戶提供網(wǎng)絡存儲服務,而且,Web技術的發(fā)展也為其方便、可靠的管理提供了技術保障。

1 硬件設計

硬件設計方框圖如圖1所示。

從圖1可看到,除CPU單元以外,網(wǎng)絡存儲器的實現(xiàn)主要包括兩個部分:I/O接口和存儲器接口。下面以CPU為中心,說明這兩個接口的主要功能。

①I/O接口。這里指CPU與Ethernet的接口(以太網(wǎng)接口)。它采用PCI的方式與以太網(wǎng)相連,是進入LAN(Local Area Network)的通道,在整個系統(tǒng)中負責發(fā)送或接收網(wǎng)絡上的數(shù)據(jù)包。

②存儲器接口。包括兩個方面:一是RAM接口,主要存儲數(shù)據(jù),采用PCI接口方式;二是Flash接口,主要存儲操作系統(tǒng)及應用軟件,采用并口形式與CPU相連。

③磁盤冗余陣列卡(RAID)接口。包括與CPU的接口和與磁盤陣列的接口。磁盤陣列主要用來存儲網(wǎng)絡用戶資料,CPU通過磁盤陣列卡對磁盤陣列進行管理操作,允許一定的冗余來保證用戶數(shù)據(jù)的安全。

2 軟件設計

在整個軟件設計中,應選擇一個合適的操作系統(tǒng)。整個操作系統(tǒng)要求體積比較小、網(wǎng)絡功能比較強、適于裁減、能被嵌入到Flash中,并且有網(wǎng)絡管理和磁盤管理功能。針對這些要求,我們選擇Linux操作系統(tǒng)作為軟件平臺,對其內(nèi)核進行裁減,從而實現(xiàn)嵌入式網(wǎng)絡存儲器的功能。整個軟件實現(xiàn)可分為以下幾個部分。

2.1 Linux內(nèi)核的裁減

(1)Linux內(nèi)核簡介

Linux內(nèi)核主要由五部分構成:進程調度、內(nèi)存管理、虛擬文件系統(tǒng)、網(wǎng)絡接口以及進程間通信。進程調度負責控制進程對CPU的訪問,調度程序使用一種策略確保所有的進程都能公平地訪問CPU,并且確保內(nèi)核在任意時刻能執(zhí)行必要的硬件操作。內(nèi)存管理負責管理系統(tǒng)的物理內(nèi)存,實現(xiàn)多進程安全地共享計算機的內(nèi)存;另外內(nèi)存管理支持虛擬內(nèi)存,使進程可以使用大于實際物理內(nèi)存的內(nèi)存地址空間,不用的內(nèi)存址空間被導出到文件系統(tǒng)中,并在需要使用時再導回到物理內(nèi)存中。虛擬文件系統(tǒng)通過將各種設備抽象為一種公共接口,屏蔽了各種硬件設備的細節(jié)。網(wǎng)絡接口實現(xiàn)了對各種網(wǎng)絡標準網(wǎng)絡硬件的訪問。進程間通信子系統(tǒng)實現(xiàn)了系統(tǒng)內(nèi)進程間的多種通信機制。

(2)Linux內(nèi)核的配置

Linux系統(tǒng)的內(nèi)核采用單塊結構,可以動態(tài)地加載和卸載模塊。系統(tǒng)利用內(nèi)核模塊的可動態(tài)裝載和卸載功能,可靈活地在內(nèi)核中添加新的組件或卸載不再需要的內(nèi)核組件。因此在具體實現(xiàn)過程中,可以針對要實現(xiàn)的功能對其內(nèi)核進行裁減,以縮小體積。根據(jù)網(wǎng)絡存儲器的硬件實現(xiàn)框圖可以知道,整個系統(tǒng)的硬件接口只包括PCI和IDE兩種接口。在對Linux內(nèi)核進行配置時,可把Floppy、SMP、MTRR、SCSI及所有的Block Device和Character Device移除,只留下old IDE Device、PCI。另外,文件系統(tǒng)在內(nèi)核中占了相當大的比例,VFS簡化了檔案系統(tǒng)的設計,Buffer cache、Directory cache增加了系統(tǒng)的效率;但這些對嵌入式系統(tǒng)用處不大,可以移除,內(nèi)核會減小20KB左右,或者跳過整個VFS,直接將文件系統(tǒng)寫成一個Driver的型式,這樣文件系統(tǒng)可由230KB縮減至50KB左右。在配置Linux內(nèi)核時,網(wǎng)絡協(xié)議的支持是必不可少的?,F(xiàn)在,大多數(shù)網(wǎng)絡都是以TCP/IP協(xié)議為基礎的,并且一般的工作站所選用的操作系統(tǒng)為Windows或Linux系統(tǒng),因此,要實現(xiàn)其網(wǎng)絡功能,并能夠在不同平臺下實現(xiàn)文件共享,應該選擇對TCP/IP協(xié)議、NFS以及Samba協(xié)議的支持。

2.2 不同平臺下文件共享的實現(xiàn)

現(xiàn)代PC機中廣為流行的操作系統(tǒng)有兩種:Windows和Linux。這兩種操作系統(tǒng)是依賴于完全不同的技術來提供網(wǎng)絡服務的:Linux操作系統(tǒng)是以傳輸控制協(xié)議/網(wǎng)絡協(xié)議(TCP/IP)、網(wǎng)絡文件系統(tǒng)(NFS)以及網(wǎng)絡信息服務(NIS)為基礎,提供網(wǎng)絡服務的;而Microsoft則依賴于NetBIOS和服務信息塊(SMB)來提供把數(shù)據(jù)從服務器傳輸至客戶機的服務。因此,我們選用Samba工具來實現(xiàn)這兩種不同平臺下的文件共享。

(1)Samba簡介

Samba從根本上消除了Windows與Linux之間的屏障,可以提供以下4個方面的服務:共享資源和打印機、名字解析、瀏覽、用戶身份認證。通過讓NetBIOS(Windows網(wǎng)絡鄰居的通信協(xié)議)和SMB(Server Messege Block)兩個協(xié)議運行于TCP/IP通信協(xié)議之上實現(xiàn)文件共享,并且使用NetBEUI協(xié)議,可以讓Windows通過網(wǎng)絡鄰居看到Linux服務器。

①NetBIOS協(xié)議。NetBIOS是一個對話層通信服務,通過一種公共的方法為訪問提供應用程序,并且對整個網(wǎng)絡提供服務。它是一個針對如何訪問數(shù)據(jù)的規(guī)范,依靠更低一級的協(xié)議,如NetBEUI或TCP/IP等,提供實際傳輸服務的。NetBIOS規(guī)范把協(xié)議分成三種服務:名字服務、對話服務、數(shù)據(jù)報服務。名字服務主要校驗該NetBIOS名字是唯一的,刪除不再需要的NetBIOS名字,在NetBIOS名字基礎上確定服務器的網(wǎng)絡地址;對話服務在兩個應用程序之間,提供橫跨NetBIOS網(wǎng)絡的實現(xiàn)通信通道;數(shù)據(jù)報服務提供廣播信息或在應用程序之間發(fā)送信息而無需應答。

由于NetBIOS和TCP/IP在主機命名方面使用的是完全不同的系統(tǒng),前者以字符為基礎,后者以數(shù)據(jù)為基礎,所以必須把每個NetBIOS名字與IP地址進行匹配。Samba使用TCP/IP協(xié)議來傳輸NetBIOS,把NetBIOS名字解析或IP地址,通常通過三種匹配方式:第一種是把每個對IP地址的請求廣播到節(jié)點名字解析的原始NetBIOS,依賴于每個客戶機和服務器,通過網(wǎng)絡去尋找對方;第二種使用本地文件,并加載進入高速緩沖存儲器,以便每個客戶機可以了解哪個名字解析成哪個IP地址;第三種使用NetBIOS名字服務(NBNS),一個NBNS是一個中央主機,它為一個工作組存儲NetBIOS名字以及與其相對應的IP地址列表,因此,每個工作組上的NetBIOS節(jié)點都可以向NBNS請求為它們把名字解析成IP地址。

②SMB協(xié)議。SMB協(xié)議是一個通過網(wǎng)絡提供并獲得資源的協(xié)議,依賴于NetBIOS進行名字解析,為網(wǎng)絡上使用資源提供一個標準的接口。SMB協(xié)議對服務器定義了兩種安全模式:共享級和用戶級。

共享級服務器在硬盤設備上建立了一些可被訪問的目錄,用戶需要一個密碼來獲得訪問權。因此,網(wǎng)絡上的任何用戶只要知道服務器的名字、資源的名字以及密碼就可以訪問資源了。共享級服務器通過對同一個資源設定不同的密碼,控制用戶的訪問權限。

用戶級服務器在硬盤設備上建立可被訪問的目錄,需要用戶提供用戶名及相應的密碼來獲得訪問權。NT服務器和LM/U服務器采用這種方式而不支持共享級訪問。相對共享級模式,用戶級更容易管理用戶。

(2)Samba的配置

一個Samba服務器實際包含了兩個服務器程序:smbd和nmbd。Smbd是Samba的核心,負責建立對話進程、驗證用戶身份、提供對文件系統(tǒng)和打印機的訪問機掉;nmbd實際網(wǎng)絡瀏覽服務器的功能,作用是對外發(fā)布Samba服務器可以提供的服務。Nmbd可以使Samba服務器出現(xiàn)在Windows95或WindowsNT的“Network Neighborhood”(網(wǎng)絡鄰居)中,并且客戶機可瀏覽到Samba服務器所共享的資源。啟動Samba服務器進程時,可以完全不運行nmbd,這樣客戶只能看到Samba服務器的NetBIOS名字,看不到Samba服務器所提供的些服務。

在Samba的軟件包中存在一個smb.conf配置文件,其結構類似于Windows的*.ini文件。RedHat和Debian中,smb.conf文件的缺省位置是在/etc/下,所有的Samba程序都要參照這個配置文件。整個配置文件分為三節(jié):[global]、[home]、[printers]。[global]節(jié)設置全局選項和一些缺省的服務選項;[home]節(jié)用來動態(tài)地映射到每個用戶的home目錄下;[printers]節(jié)用來設置將按照系統(tǒng)printcap文件配置的打印機共享至指定用戶。其中每一節(jié)中的配置參數(shù)都是一個全局參數(shù)或是一個服務參數(shù),全局參數(shù)影響或控制整個服務器,服務參數(shù)影響或控制服務器提供的某項服務。Samba的配置文件見網(wǎng)絡補充版。

管理員可通過Samba的一些命令來管理用戶及用戶的訪問權限,如添加用戶、刪除用戶、改變目錄的訪問權限,也中直接修改smb.conf進行管理。

2.3 不同結構網(wǎng)絡之間文件共享的實現(xiàn)

(1)NFS協(xié)議簡介

NFS網(wǎng)絡文件系統(tǒng)是由Sun Microsystems公司最早實現(xiàn)的,用于在不同的操作系統(tǒng)、不同的網(wǎng)絡結構及不同的傳輸協(xié)議之間共享文件。NFS協(xié)議組包括NFS、RPC、XDR。NFS本身沒提供其它程序可調用的過程,它通過遠程過程調用和通用外部數(shù)據(jù)表示來實現(xiàn)。遠程過程調用為遠程服務提供一個接口,包括主機地址、程序號及一個遠端進程的進程號,而外部數(shù)據(jù)表示提供了一套通過網(wǎng)絡描述數(shù)據(jù)類型的方法。

在不同的操作系統(tǒng)中,文件系統(tǒng)的管理方式不同,對于目錄樹的深度、名字的使用以及路徑的表示方法也都有不同的規(guī)定。有些操作系統(tǒng)的文件系統(tǒng)處于特定的目錄下面,而有些操作系統(tǒng)用mount操作使所有的文件系統(tǒng)看起來在一個單獨的目錄下。盡管目錄和文件在很多方面都比較類似,但是訪問它們卻須調用不同的程序,因此,NFS假定文件系統(tǒng)是分等級的,并且文件處于最低等級,NFS為目錄提供一個標準的網(wǎng)絡格式以便訪問。在遠程調用中,每次調用只返回一個目錄,這樣解決了不同文件系統(tǒng)之間結構不同的問題。

(2)NFS服務的配置

NFS服務器使用了5個守護進程來提供NFS服務。最基本的提供NFS服務的系統(tǒng)至少要運行nfsd用于處理NFS協(xié)議,而mountd用于處理客戶的mount請求。此外,由于NFS使用RPC遠程調用,其它三個RPC守護進程portmap、rpc_lockd、rpc_statd可以用來幫助提供更高效的服務。為了使其它系統(tǒng)也能使用Linux系統(tǒng)上的硬盤空間,在系統(tǒng)啟動時,應載入NFS的守護進程。這需要在rc.conf中更改相應關的參數(shù):nfs_server_enable、rpc_statd_enable、rpc_lockd.enable和portmap_enable,這些參數(shù)對應相應的守護進程。這樣,系統(tǒng)啟動之后就具備了能共享文件的能力 ,接下來的工作是通過更改/etc/exports文件來設置需要共享的目錄以及這些目錄的訪問權了,以保證其安全性。Exports文件的設置如下:

/usr/src/sys-maproot=guest1 ns host2

/usr/ports-ro-network 202.114.1.0

在這里我們使用絕對路徑的方式定義了兩個共享目錄—/usr/src/sys和/usr/ports,并且對這兩個目錄的訪問權限分別作了不同的限制,以保證其安全性。對于第一個目錄,限制了客戶機上的root用戶等價于本機上的guest1用戶,以避免客戶機上的root用戶擁有這個服務器上的root權力,進行非法操作,此后的ns和host2參數(shù)是主機名,只有ns和host2才能共享這個/usr/sys/src目錄。第二行設置共享了/usr/ports目錄,限制為只允許讀取,并且也只有202.114.1.0網(wǎng)絡上的計算機才能訪問這個共享目錄。在更改了exports文件之后,向mountd進程發(fā)送一個SIGHUP信號,使其重讀exports文件的內(nèi)容,這樣關于exports文件的設置才開始生效。

結語

本文提出了一個網(wǎng)絡存儲器的基本解決方案,實現(xiàn)了網(wǎng)絡存儲器的基本功能。整個系統(tǒng)易于安裝,具有可靠性較高,跨平臺、跨網(wǎng)絡的優(yōu)點;同時也存在著一些不足的地方,比如對用戶、磁盤的管理不太方便,這些可通過數(shù)據(jù)庫技術加以改進。

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

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉