吳一鵬,孫旭飛,張 斌
(福州大學(xué) 物理與信息工程學(xué)院,福建 福州 350108)
基于家庭云存儲的設(shè)計與實現(xiàn)
吳一鵬,孫旭飛,張 斌
(福州大學(xué) 物理與信息工程學(xué)院,福建 福州 350108)
為了便于家庭用戶存儲個人隱私數(shù)據(jù),提出了一種基于ARM9微處理器S3C2440和嵌入式Linux操作系統(tǒng)構(gòu)建家庭云存儲的設(shè)計方案。所提出的方法可以很好地提高Linux內(nèi)核和Samba服務(wù)器的移植性,同時可以解決Linux與Windows異構(gòu)平臺之間的文件共享。在Flask框架模型的基礎(chǔ)上,深入研究開發(fā)Web程序,拋棄了現(xiàn)有復(fù)雜的Web服務(wù)器框架,自主搭建了一個在嵌入式ARM9上的Web服務(wù)器,它能即時響應(yīng)家庭用戶通過HTTP發(fā)送的請求,通過設(shè)計合理的路由響應(yīng)來實現(xiàn)用戶的上傳、下載、刪除等響應(yīng)操作,且占用資源少,運行效率高,安全性好,功耗低,成本低。
ARM9;Linux內(nèi)核;Samba服務(wù)器;Flask;Web服務(wù)器
隨著互聯(lián)網(wǎng)技術(shù)的迅速發(fā)展,數(shù)字化技術(shù)的應(yīng)用產(chǎn)生了大量的存儲需求[1]。大數(shù)據(jù)時代的來臨,促使更多的企業(yè)和私人將數(shù)據(jù)遷移到云端。雖然這樣減少了數(shù)據(jù)丟失的狀況,提高了用戶體驗,但是同時增加了用戶信息泄露的風(fēng)險。當(dāng)前的家庭云存儲產(chǎn)品通常采用專用的操作系統(tǒng),芯片被封裝成專用的片上系統(tǒng),性能就會變得單一,應(yīng)用功能不夠靈活,同時存在價格高、移動性差和功耗大等缺點[2]。
基于上述背景,家庭個人用戶需要的是既能安全保存?zhèn)€人的隱私數(shù)據(jù),又具有操作靈活、移動性好、性價比高和功耗小等優(yōu)點的存儲產(chǎn)品。嵌入式系統(tǒng)采用ARM平臺來搭建家庭云存儲系統(tǒng),能夠?qū)浻布M行裁剪,滿足應(yīng)用系統(tǒng)的功能[3]。
于是本文提出把ARM9微處理器S3C2440和嵌入式Linux操作系統(tǒng)應(yīng)用在網(wǎng)絡(luò)存儲方面,利用Flask框架模型搭建的Web服務(wù)器存儲用戶的個人信息,既能遠程管理用戶個人信息,又能保證個人隱私數(shù)據(jù)的安全。
云存儲技術(shù)是一個由存儲設(shè)備、網(wǎng)絡(luò)設(shè)備、服務(wù)器、應(yīng)用軟件、訪問接口、客戶端程序等多個部分組成的復(fù)雜系統(tǒng),這個系統(tǒng)的核心就是存儲設(shè)備[4]。結(jié)構(gòu)模型由訪問層、應(yīng)用接口層、基礎(chǔ)管理層、存儲層4個層次組成,低層向高一層提供服務(wù)。云存儲模型架構(gòu)如圖1所示。
圖1 云存儲模型架構(gòu)
圖3 系統(tǒng)框圖
(1)訪問層:擁有權(quán)限的用戶進入云存儲系統(tǒng)的接口就位于該層。
(2)應(yīng)用接口層:不同的業(yè)務(wù)會有不同的應(yīng)用接口提供不同的服務(wù)。
(3)云存儲以基礎(chǔ)管理層作為其架構(gòu)的核心,多個存儲設(shè)備之間依靠集群系統(tǒng)、文件系統(tǒng)、網(wǎng)絡(luò)計算等技術(shù)協(xié)調(diào)運行。
(4)云存儲架構(gòu)中最基礎(chǔ)的組成部分便是存儲層。存儲層的設(shè)備可以是NAS、光纖通道等。存儲層的存儲設(shè)備種類多種多樣,但都是在設(shè)備管理系統(tǒng)中對它們進行升級維護和集中管理等。
圖2 NAS系統(tǒng)設(shè)計框圖
目前,主要外掛存儲網(wǎng)絡(luò)架構(gòu)方案有三種:直連式存儲(Direct Attached Storage,DAS)、網(wǎng)絡(luò)附加存儲(Network Attached Storage,NAS)和存儲區(qū)域網(wǎng)絡(luò)(Storage Area Network,SAN)。DAS存儲與計算機采用直連方式,當(dāng)服務(wù)器發(fā)生故障時,就會出現(xiàn)無法讀取和訪問數(shù)據(jù)。SAN存儲通常適用于大型企業(yè)的專用存儲,對于家庭用戶來說是不適合的,成本過于昂貴,部署復(fù)雜。NAS的存儲機制是采用與網(wǎng)絡(luò)介質(zhì)直接相連的特殊設(shè)備以實現(xiàn)數(shù)據(jù)的存儲,由于這些特殊設(shè)備均存在IP地址的分配,因此客戶機通過充當(dāng)數(shù)據(jù)網(wǎng)關(guān)的服務(wù)器可以對其進行存取訪問,即插即用,成本低,比較適合家庭用戶。因此,本文選用NAS存儲架構(gòu)。圖2給出一個基本的NAS系統(tǒng)應(yīng)包括基本的硬件平臺、操作系統(tǒng)、文件系統(tǒng)、網(wǎng)絡(luò)文件共享、Web管理。
本設(shè)計采用三星公司的ARM9處理器平臺。32位ARM處理器具有體積小、功耗低、成本低和性能高的特點,系統(tǒng)選用基于ARM9系列的32位S3C2440微處理器,處理能力較好,片上資源和接口資源豐富[5]。系統(tǒng)框圖如圖3所示。
SDRAM內(nèi)存、CPU處理器、NOR Flash、NAND Flash和外部接口電路一起組成了系統(tǒng)。其中SDRAM內(nèi)存是同步內(nèi)存,用戶數(shù)據(jù)、程序系統(tǒng)的運行空間以及堆棧都存放在SDRAM存儲器內(nèi)部。NAND Flash是固態(tài)硬盤,是大量數(shù)據(jù)存儲的空間,S3C2440把Bootloader燒到NAND Flash上啟動。NOR Flash用于存儲代碼,用于片上運行;系統(tǒng)上帶有USB接口,可以實現(xiàn)移動硬盤或者U盤連接到計算機的功能;系統(tǒng)一般是通過以太網(wǎng)接口以及串口和外部通信,從而提供一系列的網(wǎng)絡(luò)存儲服務(wù)。
根據(jù)家庭用戶對存儲數(shù)據(jù)的操作需求,軟件總體設(shè)計可以分為3個部分,分別為:操作系統(tǒng),CIFS協(xié)議與Samba,Web客戶端應(yīng)用程序?qū)崿F(xiàn)。
嵌入式Linux系統(tǒng)是在原先Linux操作系統(tǒng)的基礎(chǔ)上經(jīng)過裁剪修改,可以在嵌入式計算機系統(tǒng)上成功工作的一種操作系統(tǒng)。嵌入式Linux系統(tǒng)不止具有嵌入式操作系統(tǒng)的一些特性,同時還具有Internet上的一些開放代碼資源。嵌入式Linux可以根據(jù)系統(tǒng)的一些功能,自定義配置和裁剪,使之更加地精簡高效,方便存儲[6]。
3.1.1內(nèi)核移植
圖4 內(nèi)核移植流程圖
嵌入式Linux是一個高度模塊化、可裁減的操作系統(tǒng),通過配置剪除冗余功能代碼,使其內(nèi)核具有本課題所需的功能,從而減小內(nèi)核大小。圖4展示了將內(nèi)核移植到開發(fā)板上的過程。(1)針對內(nèi)核源碼的底層部分,添加ARM9芯片對系統(tǒng)的支持代碼;(2)修改系統(tǒng)的時鐘頻率,以滿足系統(tǒng)的處理速度;(3)在內(nèi)核配置文件中置換自己所需的配置單;(4)在開發(fā)板中使用uboot設(shè)定自身的機器碼。若想成功開啟開發(fā)板,首先要修正存于自身內(nèi)核文件中的機器碼,讓它與uboot中所存儲的機器碼完全一樣。然后,編譯并生成“zImage.bin”的鏡像文件,并將其燒寫到開發(fā)板中。
3.1.2YAFFS2文件系統(tǒng)
YAFFS(Yet Another Flash File System)文件系統(tǒng)是一個專門為NAND Flash存儲器設(shè)計的開源的嵌入式文件系統(tǒng), 適用于大容量的存儲設(shè)備。它具有損耗平衡和掉電保護兩種功能,這在意外掉電情況下,可將對文件系統(tǒng)的危害降低很多[7]。目前有YAFFS 和YAFFS2 兩個版本,兩個版本的主要區(qū)別之一在于YAFFS2相較于YAFFS ,可以更好地支持大容量的NAND Flash芯片。與此同時, 對于內(nèi)存空間占用大、垃圾回收速度慢、讀/寫速度慢這些方面,YAFFS2均做了大幅的優(yōu)化,有很大的提升。
圖5 Flask程序流程圖
通用網(wǎng)絡(luò)文件系統(tǒng) (Common Internet File System, CIFS)協(xié)議是網(wǎng)絡(luò)存儲在應(yīng)用層的核心協(xié)議,是應(yīng)用于異構(gòu)平臺之間文件共享的通信協(xié)議[8]。CIFS是一種新提出來的通信協(xié)議,它使客戶程序能夠訪問遠程Internet計算機上的文件,而且可以開啟此計算機的服務(wù)。CIFS使用客戶/服務(wù)器(C/S)模式。當(dāng)客戶程序請求遠在服務(wù)器上的服務(wù)器程序為它提供服務(wù),服務(wù)器得到請求后,先檢查請求的是否合法,驗證客戶端的權(quán)限,最后執(zhí)行客戶的請求,返回響應(yīng)給客戶端[9]。
CIFS是開放的SMB協(xié)議版本,Samba則是在UNIX/Linux上實現(xiàn)它的一套應(yīng)用程序,這從根本上解決了Windows系統(tǒng)與Linux系統(tǒng)之間的共享問題。Samba主要包括smbd和nmbd兩個程序。Samba提供了基于CIFS的四個服務(wù):文件和打印服務(wù)、授權(quán)與被授權(quán)、名字解析、瀏覽服務(wù)。文件和打印服務(wù)和授權(quán)與被授權(quán)是由smbd提供,而名字解析及瀏覽服務(wù)則由nmbd提供。換句話來講,收到的SMB軟件包通過smbd進程進行處理。在此過程中,該進程通過與Linux進行協(xié)商是為了使用SMB軟件包資源。nmbd進程則使主機可以訪問Linux服務(wù)器。在Samba安裝完成之后,要對其配置文件smb.conf進行相應(yīng)的修改,才可以使Samba正常工作[10]。配置文件smb.conf的語法結(jié)構(gòu)與Windows的*.ini文件極其相似,它們的結(jié)構(gòu)主要包括三個方面,分別是:全局參數(shù)、目錄共享、打印共享。通過使用不同的參數(shù),可以修改和添加用戶/密碼,配置網(wǎng)絡(luò)存儲的文件夾目錄和訪問權(quán)限[11]。當(dāng)運行Samba服務(wù)器時,Windows用戶可以登錄至Linux機器并且用賦予的權(quán)限與UNIX文件系統(tǒng)進行雙向的交流。
Flask 是一個輕量級Web應(yīng)用框架,采用Python語言編寫。其 WSGI 工具箱采用 Werkzeug ,模板引擎則使用 Jinja2 。Flask 沒有默認使用的數(shù)據(jù)庫、窗體驗證工具,它使用簡單的核心,用加載擴展的方式增加其他功能。Flask保留了擴增的彈性,可以用Flask-extension加入這些功能:對象關(guān)系映射(Object Relational Mapping ,ORM)、窗體驗證工具、文件上傳、開放式身份驗證技術(shù),這使得Flask成為具有高度擴展性和靈活性的 Python Web 框架[12]。本設(shè)計采用Flask的網(wǎng)絡(luò)框架,可以快速開發(fā)網(wǎng)站應(yīng)用,允許家庭用戶通過HTTP請求訪問系統(tǒng),實現(xiàn)對系統(tǒng)的遠程控制。在Flask框架中主要通過配置網(wǎng)頁中路由響應(yīng)用戶的請求,通過設(shè)計合理的路由響應(yīng)來實現(xiàn)用戶的上傳、下載、刪除等響應(yīng)操作。Flask程序流程圖如圖5所示。
在Web客戶端設(shè)計如下功能:用戶認證、網(wǎng)絡(luò)配置、網(wǎng)絡(luò)共享管理。
用戶認證:支持新用戶注冊,重置密碼,支持郵箱確認賬戶。
網(wǎng)絡(luò)配置:在ARM9開發(fā)板上利用TQBoardDNW軟件在串口控制命令行設(shè)置IP、DNS等。
網(wǎng)絡(luò)共享管理:提供了文件上傳、下載、刪除等操作,管理用戶對共享文件夾的訪問和讀寫權(quán)限。
首先在ARM9開發(fā)板進行Linux內(nèi)核移植,然后進行YAFFS2文件系統(tǒng)的移植,并將其作為根文件系統(tǒng)。之后移植Samba, 使Windows用戶可以訪問開發(fā)板。將編譯成功的Flask程序燒寫到開發(fā)板上。連接好硬件,啟動應(yīng)用程序,進行測試。本文對基于 ARM9平臺的家庭云存儲設(shè)計方案進行了驗證,在測試過程中用戶可以進行正常的登入登出,在登錄成功后便可進行網(wǎng)絡(luò)共享管理,對文件實行上傳、下載、刪除等操作。如圖6所示,利用內(nèi)網(wǎng)映射軟件將自己本地的內(nèi)網(wǎng)的 IP解析成通過外網(wǎng)可以訪問的 IP,這樣家庭用戶才能使用瀏覽器隨時隨地通過網(wǎng)絡(luò)來訪問ARM9服務(wù)器中的資源。
圖6 目錄回顯信息
本文設(shè)計了一種基于ARM9平臺的家庭云存儲系統(tǒng),對Linux內(nèi)核進行了編譯和移植。采用CIFS協(xié)議對網(wǎng)絡(luò)異構(gòu)系統(tǒng)的文件實現(xiàn)了共享,并且利用Flask框架構(gòu)建Web客戶端,用戶可以通過瀏覽器對ARM9設(shè)備進行控制和管理。基于家庭云存儲的服務(wù)器搭建好之后,用戶可以在家里實現(xiàn)數(shù)據(jù)的訪問和管理等工作,此時家庭數(shù)據(jù)的存儲和共享將變得十分便利。家庭用戶可以隨時隨地通過網(wǎng)絡(luò)對數(shù)據(jù)進行訪問和存取,管理云服務(wù)器中的文件,進而有效地解決家庭用戶中存在的大量數(shù)據(jù)存儲以及個人數(shù)據(jù)安全的問題。
[1] 傅明麗. 數(shù)據(jù)存儲技術(shù)的應(yīng)用[J]. 山東工業(yè)技術(shù), 2016(15):117.
[2] 武一,王佳欣,王月侖.基于Raspberry Pi的家庭附網(wǎng)存儲系統(tǒng)的設(shè)計與實現(xiàn)[J].電視技術(shù),2016,40(2):79-83.
[3] 肖永生,王明江. 基于ARM的嵌入式開發(fā)平臺設(shè)計[D].哈爾濱:哈爾濱工業(yè)大學(xué),2008.
[4] 付丹丹,祝裕璞,蘇丹.云存儲技術(shù)架構(gòu)與結(jié)構(gòu)模型分析[J].信息通信, 2014(5):86.
[5] 吳曼林. 嵌入式NAS系統(tǒng)的設(shè)計與實現(xiàn)[D]. 武漢:華中科技大學(xué), 2007.
[6] 李維成, 劉曉平, 孔兵. 基于EP9315的附網(wǎng)絡(luò)存儲NAS系統(tǒng)設(shè)計[J]. 單片機與嵌入式系統(tǒng)應(yīng)用, 2007(2):64-67.
[7] 冷玉林, 鐘將. 基于ARM的嵌入式Linux系統(tǒng)構(gòu)建[J]. 計算機系統(tǒng)應(yīng)用, 2010, 19(11):23-26.
[8] 郝斐,王雷,荊繼武,等.基于CIFS協(xié)議的云存儲安全網(wǎng)關(guān)的設(shè)計與實現(xiàn)[J]. 計算機應(yīng)用與軟件, 2013, 30(4):11-14.
[9] 王勇. 基于CIFS協(xié)議的文件屬性信息掃描方法研究與實現(xiàn)[J]. 硅谷, 2013(1):84-85.
[10] 張衛(wèi)芳, 張永堅, 高賽. Linux系統(tǒng)實現(xiàn)資源網(wǎng)絡(luò)共享方法的研究[J]. 微型機與應(yīng)用, 2014,33(15):47-49.
[11] 程延鋒.基于Linux的NAS系統(tǒng)設(shè)計[D].西安:西安電子科技大學(xué),2009.
[12] 翁志寧. Flask框架Web開發(fā)在SAE上的部署與研究[J]. 華東科技(學(xué)術(shù)版), 2016(6):14-26.
Design and implementation of family Cloud storage
Wu Yipeng, Sun Xufei, Zhang Bin
(College Physics and Information Engineering, Fuzhou University, Fuzhou 350108, China)
In order to facilitate the storage of personal privacy data for home users, this paper presents a design scheme for building home Cloud storage with ARM9 microprocessor S3C2440 and embedded Linux operating system. The proposed method can improve the portability of Linux kernel and Samba server, and can solve the file sharing between Linux and Windows heterogeneous platform. Based on the Flask framework model, this paper studies the development of Web program, abandons the existing complex Web server framework, and builds a Web server on embedded ARM9. It can immediately respond to home users through the HTTP request, and through the design of a reasonable routing response it can achieve the user’s upload, download, delete and other response operations. It takes up less resources, and has high efficiency and security, low power consumption, and low cost.
ARM9; Linux kernel; Samba server; Flask; Web server
TP393
A
10.19358/j.issn.1674- 7720.2017.20.031
吳一鵬,孫旭飛,張斌.基于家庭云存儲的設(shè)計與實現(xiàn)[J].微型機與應(yīng)用,2017,36(20):111-114.
2017-03-29)
吳一鵬(1991-),通信作者,男,碩士研究生,主要研究方向:智能交通、嵌入式系統(tǒng)。E-mail:346639361@qq.com。
孫旭飛(1961-),男,碩士,副教授,主要研究方向:嵌入式系統(tǒng)、智能交通技術(shù)、電力線擴頻載波技術(shù)。
張斌(1992-),男,碩士研究生,主要研究方向:智能交通、嵌入式系統(tǒng)。