武 一,王佳欣,王月仑
(河北工业大学 信息工程学院,天津 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.