武 一,王佳欣,王月侖
(河北工業大學 信息工程學院,天津 300401)
基于Raspberry Pi的家庭附網存儲系統的設計與實現
武一,王佳欣,王月侖
(河北工業大學 信息工程學院,天津 300401)
摘要:為解決當前家庭用戶大量數據下載、存儲和共享的問題,提出了一種新的基于樹莓派硬件平臺的家庭附網存儲系統。設計搭載了基于Debian 的Linux操作系統,提供了基于CIFS/SMB、NFS和FTP協議的網絡異構系統的文件共享,并實現了多種方式的脫機下載。系統將RAID技術和LVM技術相結合,并且利用Bypy同步百度云空間,提高了設備中數據的讀寫速率和系統的安全性,同時采用B/S模式的Web管理系統,用戶可以通過瀏覽器對NAS設備進行控制和管理。通過測試數據表明,系統穩定可靠,具有數據傳輸速度快、安全性高、可擴展性好等優點。
關鍵詞:附網存儲;樹莓派;RAID;LVM;云存儲
隨著互聯網技術的發展,數據以爆炸式的方式不斷增長,越來越多的家庭用戶對高效、安全的下載、存儲和分享數據提出了更高的要求,存儲設備已經從傳統的基于服務器的模式轉變成基于網絡的存儲模式。附網存儲(Network Attached Storage,NAS)技術以數據為中心,將獨立、分布的數據集中化管理,通過網絡接口與網絡直接相連,實現了服務器與存儲設備的分離,大大降低了服務器的成本,具有更高的數據帶寬和更快的響應速度[1]。當前的NAS產品通常采用專用的操作系統,芯片被封裝成專用的SoC,一旦遇到芯片沒有支持到的功能,性能就會大打折扣,應用功能不夠靈活和豐富,同時存在價格高、移動性差和功耗大等缺點。而基于樹莓派平臺的NAS家庭網絡存儲系統結合了NAS網絡存儲技術和樹莓派體積小、功耗低、靈活性好和性價比高等優點,采用嵌入式ARM平臺,搭載基于Debian的Raspbian操作系統,對浮點運算有很好的支持,大大降低了串流所需的頻寬,提高了NAS的存儲性能。
1系統總體設計
系統由樹莓派嵌入式硬件平臺和軟件系統構成。軟件系統分為內核模塊、協議模塊、應用模塊和Web管理模塊4部分,如圖1所示。內核模塊包括設備的驅動、基本網絡協議棧和卷管理,對磁盤熱插拔功能的支持;協議模塊包括通信協議TCP/IP和網絡文件系統協議;應用模塊包括磁盤組件RAID、卷管理、脫機下載以及百度云存儲;Web管理包括文件共享管理、用戶/用戶組管理、下載管理、RAID管理、磁盤管理等。

圖1 系統總體框圖
當客戶端向NAS發出文件I/O請求時,通過虛擬文件系統進行訪問判斷,如果是對NAS文件的訪問,則通過網絡文件協議將文件I/O請求重定向為對NAS文件系統的請求,NAS文件系統將客戶端應用程序的數據進行解析和緩沖維護,如果數據不在緩沖中,將向磁盤控制器發出請求,進而從磁盤中獲得數據,最后將數據返回客戶端。
2系統硬件平臺
系統采用樹莓派(Raspberry Pi)作為硬件開發平臺。它是基于Linux系統、只有一張信用卡大小的卡片式計算機[2]。樹莓派2的處理器采用Broadcom BCM2836,主頻達到900 MHz的4核Cortex-A7,配有1 Gbyte的獨立內存顆粒和VideoCore IV雙核GPU支持OPEN GL和硬件加速,具有比當前雙核CPU更高的處理速度和多媒體運算效能。為了減小體積和重量,樹莓派采用Micro SD卡作為硬盤,用戶可以使用高速的Micro SD卡,獲得最大的讀寫速度[3]。樹莓派配有RJ-45網絡接口和4個USB接口,可用來連接網絡、鼠標鍵盤或者磁盤,還配有HDMI高清視頻接口,可以外接顯示器直觀地對整個NAS系統進行操作。
3系統軟件架構與設計
NAS系統軟件主要包括操作系統、文件系統、網絡文件系統、RAID管理軟件、卷管理軟件、脫機下載軟件、同步百度云軟件和Web管理系統。
3.1操作系統與文件系統
NAS系統的核心采用基于Debian的Raspbian操作系統,它針對樹莓派的硬件進行了專門的優化[4],集合了Linux強大的網絡支持功能和廣泛的軟件支持特性的同時,具有更小的內存占用和易用性,由于對浮點單元的支持使Raspbian有更高的多媒體運算效能,通過剪裁與網絡通信、文件存儲無關的冗余模塊,提高了文件共享和文件訪問的性能,非常適合作為NAS的操作系統。
文件系統組織管理系統中的數據,是NAS重要的組成部分。系統采用EXT4文件系統,它是一種高性能的日志文件系統,支持超大文件、集成卷管理并且提供快速的I/O與恢復技術。
3.2網絡文件系統
NAS系統支持不同的網絡協議,使不同平臺的用戶可以在文件級以不同的方式進行數據共享。
NFS(Network File System)是Unix/Linux系統間實現磁盤文件共享的一種方法。NFS采用C/S結構和TCP/IP協議族,通過RPC(Remote Procedure Call)和XDR(External Data Representation)實現異構平臺的網絡共享。NFS的體系結構如圖2所示。當客戶端發出文件請求時,通過VFS判斷是對NFS服務器端文件的請求還是對本地文件的請求,如果是對NFS服務器端文件的請求則交由NFS服務器文件系統處理,否則,交由本地文件系統處理。

圖2 NFS體系結構圖
CIFS/SMB(Common Internet File System/Server Message Block)是廣泛應用于NT/Windows環境下的共享文件、打印機的通信協議。它屬于高層協議,處在OSI模型的應用層和表示層。CIFS采用C/S模型,即客戶端向服務器發送請求,遠程服務器接受并解釋后向客戶端發送應答。
系統采用Samba軟件包實現CIFS/SMB服務器,通過配置文件smb.conf控制系統訪問的權限以及資源的分享。文件有多個段組成,每個段描述一種共享服務,參量定義服務的屬性,段的名字就是服務名。可以修改和添加用戶/密碼,配置網絡存儲的文件夾目錄和訪問權限,重啟samba完成配置。
FTP(File Transfer Protocol)協議支持用戶在Internet上連接遠程計算機進行文件的雙向傳輸,vsftpd是Linux下最常用的FTP服務器架設軟件,提供3種遠程登錄方式,根據系統針對家庭用戶的需求采用本地用戶方式配置vsftpd.conf文件,設置訪問權限。
3.3RAID管理與卷管理
NAS系統中對存儲空間的管理,采用RAID技術和LVM技術相結合的方式,大大提高了NAS的性能。
3.3.1磁盤陣列
獨立磁盤冗余陣列(Redundant Arrays of Independent Disks,RAID)技術是將多個單獨的磁盤以不同的方式組合成一個邏輯硬盤,從而提高了數據的安全性和系統的存儲性能[5]。系統采用2塊硬盤組建RAID0,支持在線熱插拔[6],通過stripe的方式來組織數據,將數據以數據塊(Block)為單位進行分割并行的存放在不同的獨立物理硬盤上,因此成倍地提高了數據的讀寫速度。
首先通過fdisk-l命令查看磁盤的設備號為sda、sdb,然后執行fdisk命令在兩塊硬盤上創建分區,再用mdadm命令創建RAID0陣列,新的分區設備號為md0,格式化md0分區,最后修改/etc/fstab文件將/dev/md0自動掛載到/raid0disk目錄下。mdadm軟件能夠診斷、監控和收集詳細的陣列信息,當有設備損壞時,發送郵件給用戶。
3.3.2邏輯卷管理
LVM(Logical Volume Manager)技術就是將多個物理磁盤、物理磁盤分區和磁盤陣列組合成一個虛擬磁盤,然后動態的劃分空間建立邏輯卷[7],實現零停機下動態的擴展邏輯卷,彈性的調整存儲空間的大小。同時快照功能也提供了數據備份的通道,彌補了RAID0沒有數據冗余信息的缺陷。系統采用一個單獨的磁盤(由于LVM組成虛擬磁盤與RAID組成磁盤陣列不同,大小可與組成RAID0的磁盤不一致)與RAID0組成一個卷組,在數據結構lv_t中保存著每個LE和對應的PE映射關系,將快照LV的COW(Cope On Write)區域的LE對應這個單獨磁盤的PE,當RAID0陣列中任意個磁盤損壞都能快速的恢復數據,相比于其他RAID級別有更高的可靠性。
首先將創建LVM分區,進入分區管理將格式改為8e,然后創建PV(Physical Volume)和VG(Volume Group),從VG中劃分LV,最后對LV進行格式化和掛載,當系統添加新磁盤時,管理員可直接將擴展文件系統跨越磁盤。如圖3基于LVM創建邏輯卷。

圖3 基于LVM創建邏輯卷
當有用戶的I/O請求時,根據請求中的設備號得到LV對應的lv_t數據結構,根據lv_t中PE和LE的映射關系,可得出對應PE的起始扇區號和物理設備號,根據請求中的扇區號算得LE偏移量和編號,再由數據在PE的起始扇區號和LE上的偏移量,得出物理設備上的扇區號,最后將得到的扇區號和物理設備號返回給操作系統,操作系統根據返回的信息調用對應的驅動程序來完成完整I/O操作。
LVM中實現快照的方法是“寫時復制”。當原始卷上有寫請求時,首先應根據chunk的起始扇區號(_org_start)和設備號(org_dev)通過hash表查找匹配的COW表,如果在COW表項中沒有與之相同的起始扇區號和設備號,則需要進行COW操作。首先根據映射表中的lv_remap_ptr的值找到未使用的第一個表項并賦值rsector_org和rdev_org為請求塊的起始扇區號和設備號;然后在相應的循環鏈表中按hash值插入表項,最后將塊的數據讀出并寫入到相應的物理設備地址中。COW操作保證了原始卷對應的每個物理扇區在修改前被復制到COW區域,保留了原始卷在創建snapshot時的數據映像。
而對于快照的讀請求,如果請求的數據塊沒有被修改過的,就會將讀操作重定向到原始卷上,如果數據塊被修改并且在COW映射表中有對應的表項,則需要把請求中對應的物理設備號和扇區號修改為COW區域的物理設備號(rdev_new)和扇區號(rsector_new),最后完成讀操作。
3.4百度云存儲
系統采用Bypy同步百度云盤空間進行數據備份。Bypy是百度云的python客戶端,要求在python2.7以上的版本運行,安裝setuptools和pip,并將系統的區域編碼設置為UTF-8,在文件/etc/sysconfig/i18n中設置LANG="zh_CN.UTF-8";SYSFONT=latarcyrheb-sun16,運行bypy.py程序,獲得授權碼code并復制到程序,程序會根據使用授權碼方式、API Key以及Secret Key利用不同的服務器進行認證,認證成功會顯示百度網盤的容量并在“我的應用管理”下形成bypy文件夾。通過自動備份腳本,用戶數據可定時在百度云盤中備份,提高了系統中數據的安全性。
3.5脫機下載
系統采用Mldonkey、Transmission以及Aria2與YAAW相結合的方式實現eMule、BT/PT和HTTP/FTP多線程的下載。BT/PT和eMule下載方式都基于p2p文件傳輸協議,從不同用戶下載文件不同的部分,而自己本身同時也向其他用戶提供下載,這樣大大提高了文件的下載速度。使用apt-get命令安裝transmission-daemon和mldonkey-server作為下載客戶端,對配置文件/etc/transmission-daemon/settings.json和/var/lib/mldonkey/downloads.ini進行修改,設置目錄讀寫權限以及用戶的訪問權限,修改用戶名和密碼以及下載路徑等。
HTTP/FTP多線程下載方式采用C/S模式,支持多鏈接下載和斷點續傳,使用apt-get命令安裝aria2軟件,創建aria2.session和aria2.conf兩個配置文件,分別作為實現斷點續傳的下載任務保存文件和aria2的啟動配置文件,然后對aria2.conf文件進行配置,設置下載路徑以及訪問權限,在etc/init.d下創建并編輯aria2的初始化腳本文件,實現開機自動啟動aria2,YAAW(Yet Another Aria2 Web Frontend)是一個aria2的Web管理前端,用戶通過瀏覽器可以直接控制和管理。如圖4所示BT/PT,eMule和HTTP/FTP的下載管理界面。

圖4 BT/PT、eMule和HTTP/FTP的下載管理界面(截圖)
3.6Web管理系統的設計
系統包括兩種管理方式,一種是基于樹莓派硬件平臺可以直接外接顯示器、鍵盤、鼠標等外設的優點,用戶可以實現人機交互,直接對其管理;另一種是通過Web進行控制管理。Web管理頁面如圖5所示。

圖5 Web管理界面(截圖)
Web管理系統由Web服務器、PHP和數據庫來架構[8],采用B/S管理模式,功能模塊包括用戶/用戶組管理、共享文件夾管理、空間配額管理、NAS資源管理、脫機下載管理、百度云存儲管理以及系統監控。
用戶/用戶組管理:提供了管理用戶/用戶組的接口,包括增加和刪除訪問共享文件的合法用戶(即Samba用戶、NFS用戶和FTP用戶)和用戶組。
共享文件夾管理:提供了創建、刪除共享文件夾的接口,并負責管理用戶/用戶組對共享文件夾的訪問和讀寫權限。
空間配額的管理:提供了創建、修改和刪除配額的接口,通過配額數據解析和配額命令下發模塊,最終在NAS資源的配額功能生效。
NAS資源管理:提供對NAS資源的創建、擴容、刪除、格式化、掛載和卸載的接口,方便對磁盤空間進行有效地管理。
脫機下載管理:提供對不同下載方式(即BT/PT、eMule以及HTTP/FTP多線程)的監控和管理。
系統監控:提供對系統CPU溫度及使用率、CIFS服務或NFS服務進程狀態的監控。
4系統性能測試及可行性分析
測試環境由文中設計的家庭NAS系統(配有2塊500 Gbyte的硬盤組成RAID0和一塊100 Gbyte的硬盤),一款常用的NAS系統(雙核800 MHz、512 Mbyte系統內存,配有3塊500 Gbyte硬盤組成RAID1)用于對比測試,兩臺測試機(分別裝有Windows XP操作系統和Linux操作系統)和5臺其他主機(用于模擬真實環境,正常連接到網絡工作但不進行NAS訪問)構成。測試采用Iometer測試工具[9],通過對存取類型、讀寫比例和讀寫塊的大小設置不同的測試參數來模擬實際應用的讀寫環境進行測試。
影響NAS系統的兩個關鍵性能指標分別是IOPS(Input/Output Per Second)和數據吞吐量。下面分別對IOPS和數據吞吐量進行了測試。
IOPS指單位時間內處理I/O請求的數量,主要受系統CPU和內存資源的影響,它是衡量頻繁隨機讀寫性能的關鍵指標,針對用戶的小文件存儲,因此選取較小的數據塊對隨機只讀和只寫進行測試。如圖6所示,R標為文中設計的NAS系統,C標為測試的NAS系統,由測試結果可知,隨著數據塊的增大,隨機只讀和只寫IOPS均下降,但設計系統的IOPS一直高于測試系統;IOPS的最大值均出現在4 kbyte只讀模式下,設計系統的最大值為16 952 OPS/s,測試系統的最大值為15 201 OPS/s,說明系統有較高的I/O速率。
在NAS系統中CPU、內存等固定硬件的配置對于存儲系統性能的影響是最直接的,樹莓派的處理器和內存資源略高于測試的NAS,所以系統的I/O速率高于測試系統,但樹莓派的價格卻遠低于測試中常用的NAS系統。

圖6 隨機只讀和只寫的IOPS

圖7 順序只讀和只寫的吞吐量
數據吞吐量是計算每秒在I/O流中傳輸的數據總量,針對大量連續數據的順序讀寫,因此選取較大的數據塊對順序只讀和只寫進行測試。由圖7可知,隨著數據塊的增大,最大數據吞吐量均出現在512 kbyte順序只讀模式下,設計系統最大為64 Mbit/s,測試系統的最大59 Mbit/s,說明系統有較高的數據傳輸率。
制約大數據傳輸速率的主要是磁盤性能、磁盤數量以及RAID類型,系統采用相同類型和相等數量的磁盤,但由于測試系統為了保證數據的安全性采用RAID1,大大降低了只寫的速率,而設計系統采用RAID0并結合快照和云存儲的方式來保護數據,提高了大數據的傳輸速率。
5結論
本文設計了一種基于樹莓派平臺的家庭附網存儲系統,采用CIFS/SMB、NFS和FTP協議提供網絡異構系統的文件共享,同時實現了多種方式的脫機下載和管理模式。設計將RAID技術和LVM技術相結合,同時同步百度云空間,提高了數據傳輸速度的同時也保證了數據的安全性。本系統有效地解決了家庭用戶大量數據存儲和共享的問題,同時脫機下載的功能也大大提高了家庭網絡的閑時利用率。由測試數據表明,本系統可以安全、高效存儲、共享和下載數據,并且由樹莓派低功耗的優點可24 h開機使用。
參考文獻:
[1]韓旭東.淺析計算機網絡中常見的存儲技術[J].信息通信,2015,146(2):164.
[2]RICHARDON M,WALLACE S.愛上Raspberry Pi [M].北京: 科學出版社,2013.
[3]UPTON E, HALFACREE G. Raspberry Pi用戶指南[M].北京: 人民郵電出版社,2013.
[4]李文勝.基于樹莓派的嵌入式Linux開發教學探索[J].電子技術與軟件工程,2014,9(3):219-220.
[5]DENG Y.Deconstructing network attached storage systems[J].Journal of network and computer applications,2009,32(7):1064-1072.
[6]施春霞.數字電視硬盤播出系統技術改造實踐 [J].電視技術,2012,36(22):87-89.
[7]HEINRICH K.邏輯卷管理.[EB/OL].[2015-07-11].http://www.ibm.com/developerworks/cn/linux/l-lvm2/
[8]DUCKETT J. Web編程入門經典[M].北京: 清華大學出版社,2011.
[9]陽小珊,邱全偉.NAS存儲系統性能測評方法研究[J].計算機研究與發展,2012,49(9):346-351.
武一(1964— ),女,博士,教授,碩士生導師,主要研究方向為嵌入式智能應用;
王佳欣(1991— ),女,碩士生,主要研究方向為嵌入式智能應用;
王月侖(1989— ),碩士生,主要研究方向為嵌入式智能應用。
責任編輯:時雯
Design of home network attached storage system based on Raspberry Pi
WU Yi,WANG Jiaxin,WANG Yuelun
(SchoolofInformationEngineering,HebeiUniversityofTechnology,Tianjin300401,China)
Abstract:To solve the current problems of large amounts of data downloading, storing and sharing, a novel home network attached storage system based on Raspberry Pi hardware platform is proposed. The design builds up a Debian-based Linux operating system,provides File sharing between different operating systems based on CIFS / SMB, NFS, and FTP protocols, and supports multiple ways of offline download. The system combines RAID technology and LVM technology,and synchronizes Baidu cloud space using Bypy, which improves the rate of data reading and writing in the equipment and the safety of the system, as well as the use of B/S mode of Web management system, makes the clients capable of controlling and managing the NAS device through a browser. The final data shows that the system is stable and reliable, and the data transmission is of high speed, high security and good scalability.
Key words:network attached storage;Raspberry Pi;RAID;LVM;cloud storage
中圖分類號:TN949
文獻標志碼:A
DOI:10.16280/j.videoe.2016.02.015
作者簡介:
收稿日期:2015-08-05
文獻引用格式:武一,王佳欣,王月侖.基于Raspberry Pi的家庭附網存儲系統的設計與實現[J].電視技術,2016,40(2):79-83.
WU Y,WANG J X,WANG Y L.Design of home network attached storage system based on Raspberry Pi[J].Video engineering,2016,40(2):79-83.