吳一鵬,孫旭飛,張 斌
(福州大學 物理與信息工程學院,福建 福州 350108)
基于家庭云存儲的設計與實現
吳一鵬,孫旭飛,張 斌
(福州大學 物理與信息工程學院,福建 福州 350108)
為了便于家庭用戶存儲個人隱私數據,提出了一種基于ARM9微處理器S3C2440和嵌入式Linux操作系統構建家庭云存儲的設計方案。所提出的方法可以很好地提高Linux內核和Samba服務器的移植性,同時可以解決Linux與Windows異構平臺之間的文件共享。在Flask框架模型的基礎上,深入研究開發Web程序,拋棄了現有復雜的Web服務器框架,自主搭建了一個在嵌入式ARM9上的Web服務器,它能即時響應家庭用戶通過HTTP發送的請求,通過設計合理的路由響應來實現用戶的上傳、下載、刪除等響應操作,且占用資源少,運行效率高,安全性好,功耗低,成本低。
ARM9;Linux內核;Samba服務器;Flask;Web服務器
隨著互聯網技術的迅速發展,數字化技術的應用產生了大量的存儲需求[1]。大數據時代的來臨,促使更多的企業和私人將數據遷移到云端。雖然這樣減少了數據丟失的狀況,提高了用戶體驗,但是同時增加了用戶信息泄露的風險。當前的家庭云存儲產品通常采用專用的操作系統,芯片被封裝成專用的片上系統,性能就會變得單一,應用功能不夠靈活,同時存在價格高、移動性差和功耗大等缺點[2]。
基于上述背景,家庭個人用戶需要的是既能安全保存個人的隱私數據,又具有操作靈活、移動性好、性價比高和功耗小等優點的存儲產品。嵌入式系統采用ARM平臺來搭建家庭云存儲系統,能夠對軟硬件進行裁剪,滿足應用系統的功能[3]。
于是本文提出把ARM9微處理器S3C2440和嵌入式Linux操作系統應用在網絡存儲方面,利用Flask框架模型搭建的Web服務器存儲用戶的個人信息,既能遠程管理用戶個人信息,又能保證個人隱私數據的安全。
云存儲技術是一個由存儲設備、網絡設備、服務器、應用軟件、訪問接口、客戶端程序等多個部分組成的復雜系統,這個系統的核心就是存儲設備[4]。結構模型由訪問層、應用接口層、基礎管理層、存儲層4個層次組成,低層向高一層提供服務。云存儲模型架構如圖1所示。

圖1 云存儲模型架構

圖3 系統框圖
(1)訪問層:擁有權限的用戶進入云存儲系統的接口就位于該層。
(2)應用接口層:不同的業務會有不同的應用接口提供不同的服務。
(3)云存儲以基礎管理層作為其架構的核心,多個存儲設備之間依靠集群系統、文件系統、網絡計算等技術協調運行。
(4)云存儲架構中最基礎的組成部分便是存儲層。存儲層的設備可以是NAS、光纖通道等。存儲層的存儲設備種類多種多樣,但都是在設備管理系統中對它們進行升級維護和集中管理等。

圖2 NAS系統設計框圖
目前,主要外掛存儲網絡架構方案有三種:直連式存儲(Direct Attached Storage,DAS)、網絡附加存儲(Network Attached Storage,NAS)和存儲區域網絡(Storage Area Network,SAN)。DAS存儲與計算機采用直連方式,當服務器發生故障時,就會出現無法讀取和訪問數據。SAN存儲通常適用于大型企業的專用存儲,對于家庭用戶來說是不適合的,成本過于昂貴,部署復雜。NAS的存儲機制是采用與網絡介質直接相連的特殊設備以實現數據的存儲,由于這些特殊設備均存在IP地址的分配,因此客戶機通過充當數據網關的服務器可以對其進行存取訪問,即插即用,成本低,比較適合家庭用戶。因此,本文選用NAS存儲架構。圖2給出一個基本的NAS系統應包括基本的硬件平臺、操作系統、文件系統、網絡文件共享、Web管理。
本設計采用三星公司的ARM9處理器平臺。32位ARM處理器具有體積小、功耗低、成本低和性能高的特點,系統選用基于ARM9系列的32位S3C2440微處理器,處理能力較好,片上資源和接口資源豐富[5]。系統框圖如圖3所示。
SDRAM內存、CPU處理器、NOR Flash、NAND Flash和外部接口電路一起組成了系統。其中SDRAM內存是同步內存,用戶數據、程序系統的運行空間以及堆棧都存放在SDRAM存儲器內部。NAND Flash是固態硬盤,是大量數據存儲的空間,S3C2440把Bootloader燒到NAND Flash上啟動。NOR Flash用于存儲代碼,用于片上運行;系統上帶有USB接口,可以實現移動硬盤或者U盤連接到計算機的功能;系統一般是通過以太網接口以及串口和外部通信,從而提供一系列的網絡存儲服務。
根據家庭用戶對存儲數據的操作需求,軟件總體設計可以分為3個部分,分別為:操作系統,CIFS協議與Samba,Web客戶端應用程序實現。
嵌入式Linux系統是在原先Linux操作系統的基礎上經過裁剪修改,可以在嵌入式計算機系統上成功工作的一種操作系統。嵌入式Linux系統不止具有嵌入式操作系統的一些特性,同時還具有Internet上的一些開放代碼資源。嵌入式Linux可以根據系統的一些功能,自定義配置和裁剪,使之更加地精簡高效,方便存儲[6]。
3.1.1內核移植

圖4 內核移植流程圖
嵌入式Linux是一個高度模塊化、可裁減的操作系統,通過配置剪除冗余功能代碼,使其內核具有本課題所需的功能,從而減小內核大小。圖4展示了將內核移植到開發板上的過程。(1)針對內核源碼的底層部分,添加ARM9芯片對系統的支持代碼;(2)修改系統的時鐘頻率,以滿足系統的處理速度;(3)在內核配置文件中置換自己所需的配置單;(4)在開發板中使用uboot設定自身的機器碼。若想成功開啟開發板,首先要修正存于自身內核文件中的機器碼,讓它與uboot中所存儲的機器碼完全一樣。然后,編譯并生成“zImage.bin”的鏡像文件,并將其燒寫到開發板中。
3.1.2YAFFS2文件系統
YAFFS(Yet Another Flash File System)文件系統是一個專門為NAND Flash存儲器設計的開源的嵌入式文件系統, 適用于大容量的存儲設備。它具有損耗平衡和掉電保護兩種功能,這在意外掉電情況下,可將對文件系統的危害降低很多[7]。目前有YAFFS 和YAFFS2 兩個版本,兩個版本的主要區別之一在于YAFFS2相較于YAFFS ,可以更好地支持大容量的NAND Flash芯片。與此同時, 對于內存空間占用大、垃圾回收速度慢、讀/寫速度慢這些方面,YAFFS2均做了大幅的優化,有很大的提升。

圖5 Flask程序流程圖
通用網絡文件系統 (Common Internet File System, CIFS)協議是網絡存儲在應用層的核心協議,是應用于異構平臺之間文件共享的通信協議[8]。CIFS是一種新提出來的通信協議,它使客戶程序能夠訪問遠程Internet計算機上的文件,而且可以開啟此計算機的服務。CIFS使用客戶/服務器(C/S)模式。當客戶程序請求遠在服務器上的服務器程序為它提供服務,服務器得到請求后,先檢查請求的是否合法,驗證客戶端的權限,最后執行客戶的請求,返回響應給客戶端[9]。
CIFS是開放的SMB協議版本,Samba則是在UNIX/Linux上實現它的一套應用程序,這從根本上解決了Windows系統與Linux系統之間的共享問題。Samba主要包括smbd和nmbd兩個程序。Samba提供了基于CIFS的四個服務:文件和打印服務、授權與被授權、名字解析、瀏覽服務。文件和打印服務和授權與被授權是由smbd提供,而名字解析及瀏覽服務則由nmbd提供。換句話來講,收到的SMB軟件包通過smbd進程進行處理。在此過程中,該進程通過與Linux進行協商是為了使用SMB軟件包資源。nmbd進程則使主機可以訪問Linux服務器。在Samba安裝完成之后,要對其配置文件smb.conf進行相應的修改,才可以使Samba正常工作[10]。配置文件smb.conf的語法結構與Windows的*.ini文件極其相似,它們的結構主要包括三個方面,分別是:全局參數、目錄共享、打印共享。通過使用不同的參數,可以修改和添加用戶/密碼,配置網絡存儲的文件夾目錄和訪問權限[11]。當運行Samba服務器時,Windows用戶可以登錄至Linux機器并且用賦予的權限與UNIX文件系統進行雙向的交流。
Flask 是一個輕量級Web應用框架,采用Python語言編寫。其 WSGI 工具箱采用 Werkzeug ,模板引擎則使用 Jinja2 。Flask 沒有默認使用的數據庫、窗體驗證工具,它使用簡單的核心,用加載擴展的方式增加其他功能。Flask保留了擴增的彈性,可以用Flask-extension加入這些功能:對象關系映射(Object Relational Mapping ,ORM)、窗體驗證工具、文件上傳、開放式身份驗證技術,這使得Flask成為具有高度擴展性和靈活性的 Python Web 框架[12]。本設計采用Flask的網絡框架,可以快速開發網站應用,允許家庭用戶通過HTTP請求訪問系統,實現對系統的遠程控制。在Flask框架中主要通過配置網頁中路由響應用戶的請求,通過設計合理的路由響應來實現用戶的上傳、下載、刪除等響應操作。Flask程序流程圖如圖5所示。
在Web客戶端設計如下功能:用戶認證、網絡配置、網絡共享管理。
用戶認證:支持新用戶注冊,重置密碼,支持郵箱確認賬戶。
網絡配置:在ARM9開發板上利用TQBoardDNW軟件在串口控制命令行設置IP、DNS等。
網絡共享管理:提供了文件上傳、下載、刪除等操作,管理用戶對共享文件夾的訪問和讀寫權限。
首先在ARM9開發板進行Linux內核移植,然后進行YAFFS2文件系統的移植,并將其作為根文件系統。之后移植Samba, 使Windows用戶可以訪問開發板。將編譯成功的Flask程序燒寫到開發板上。連接好硬件,啟動應用程序,進行測試。本文對基于 ARM9平臺的家庭云存儲設計方案進行了驗證,在測試過程中用戶可以進行正常的登入登出,在登錄成功后便可進行網絡共享管理,對文件實行上傳、下載、刪除等操作。如圖6所示,利用內網映射軟件將自己本地的內網的 IP解析成通過外網可以訪問的 IP,這樣家庭用戶才能使用瀏覽器隨時隨地通過網絡來訪問ARM9服務器中的資源。

圖6 目錄回顯信息
本文設計了一種基于ARM9平臺的家庭云存儲系統,對Linux內核進行了編譯和移植。采用CIFS協議對網絡異構系統的文件實現了共享,并且利用Flask框架構建Web客戶端,用戶可以通過瀏覽器對ARM9設備進行控制和管理。基于家庭云存儲的服務器搭建好之后,用戶可以在家里實現數據的訪問和管理等工作,此時家庭數據的存儲和共享將變得十分便利。家庭用戶可以隨時隨地通過網絡對數據進行訪問和存取,管理云服務器中的文件,進而有效地解決家庭用戶中存在的大量數據存儲以及個人數據安全的問題。
[1] 傅明麗. 數據存儲技術的應用[J]. 山東工業技術, 2016(15):117.
[2] 武一,王佳欣,王月侖.基于Raspberry Pi的家庭附網存儲系統的設計與實現[J].電視技術,2016,40(2):79-83.
[3] 肖永生,王明江. 基于ARM的嵌入式開發平臺設計[D].哈爾濱:哈爾濱工業大學,2008.
[4] 付丹丹,祝裕璞,蘇丹.云存儲技術架構與結構模型分析[J].信息通信, 2014(5):86.
[5] 吳曼林. 嵌入式NAS系統的設計與實現[D]. 武漢:華中科技大學, 2007.
[6] 李維成, 劉曉平, 孔兵. 基于EP9315的附網絡存儲NAS系統設計[J]. 單片機與嵌入式系統應用, 2007(2):64-67.
[7] 冷玉林, 鐘將. 基于ARM的嵌入式Linux系統構建[J]. 計算機系統應用, 2010, 19(11):23-26.
[8] 郝斐,王雷,荊繼武,等.基于CIFS協議的云存儲安全網關的設計與實現[J]. 計算機應用與軟件, 2013, 30(4):11-14.
[9] 王勇. 基于CIFS協議的文件屬性信息掃描方法研究與實現[J]. 硅谷, 2013(1):84-85.
[10] 張衛芳, 張永堅, 高賽. Linux系統實現資源網絡共享方法的研究[J]. 微型機與應用, 2014,33(15):47-49.
[11] 程延鋒.基于Linux的NAS系統設計[D].西安:西安電子科技大學,2009.
[12] 翁志寧. Flask框架Web開發在SAE上的部署與研究[J]. 華東科技(學術版), 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
吳一鵬,孫旭飛,張斌.基于家庭云存儲的設計與實現[J].微型機與應用,2017,36(20):111-114.
2017-03-29)
吳一鵬(1991-),通信作者,男,碩士研究生,主要研究方向:智能交通、嵌入式系統。E-mail:346639361@qq.com。
孫旭飛(1961-),男,碩士,副教授,主要研究方向:嵌入式系統、智能交通技術、電力線擴頻載波技術。
張斌(1992-),男,碩士研究生,主要研究方向:智能交通、嵌入式系統。