APP下载

基于家庭云存储的设计与实现

2017-11-02吴一鹏孙旭飞

网络安全与数据管理 2017年20期
关键词:家庭用户开发板内核

吴一鹏,孙旭飞,张 斌

(福州大学 物理与信息工程学院,福建 福州 350108)

基于家庭云存储的设计与实现

吴一鹏,孙旭飞,张 斌

(福州大学 物理与信息工程学院,福建 福州 350108)

为了便于家庭用户存储个人隐私数据,提出了一种基于ARM9微处理器S3C2440和嵌入式Linux操作系统构建家庭云存储的设计方案。所提出的方法可以很好地提高Linux内核和Samba服务器的移植性,同时可以解决Linux与Windows异构平台之间的文件共享。在Flask框架模型的基础上,深入研究开发Web程序,抛弃了现有复杂的Web服务器框架,自主搭建了一个在嵌入式ARM9上的Web服务器,它能即时响应家庭用户通过HTTP发送的请求,通过设计合理的路由响应来实现用户的上传、下载、删除等响应操作,且占用资源少,运行效率高,安全性好,功耗低,成本低。

ARM9;Linux内核;Samba服务器;Flask;Web服务器

0 引言

随着互联网技术的迅速发展,数字化技术的应用产生了大量的存储需求[1]。大数据时代的来临,促使更多的企业和私人将数据迁移到云端。虽然这样减少了数据丢失的状况,提高了用户体验,但是同时增加了用户信息泄露的风险。当前的家庭云存储产品通常采用专用的操作系统,芯片被封装成专用的片上系统,性能就会变得单一,应用功能不够灵活,同时存在价格高、移动性差和功耗大等缺点[2]。

基于上述背景,家庭个人用户需要的是既能安全保存个人的隐私数据,又具有操作灵活、移动性好、性价比高和功耗小等优点的存储产品。嵌入式系统采用ARM平台来搭建家庭云存储系统,能够对软硬件进行裁剪,满足应用系统的功能[3]。

于是本文提出把ARM9微处理器S3C2440和嵌入式Linux操作系统应用在网络存储方面,利用Flask框架模型搭建的Web服务器存储用户的个人信息,既能远程管理用户个人信息,又能保证个人隐私数据的安全。

1 系统结构

云存储技术是一个由存储设备、网络设备、服务器、应用软件、访问接口、客户端程序等多个部分组成的复杂系统,这个系统的核心就是存储设备[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管理。

2 系统硬件平台

本设计采用三星公司的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 系统软件设计

根据家庭用户对存储数据的操作需求,软件总体设计可以分为3个部分,分别为:操作系统,CIFS协议与Samba,Web客户端应用程序实现。

3.1 操作系统

嵌入式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均做了大幅的优化,有很大的提升。

3.2 CIFS协议与Samba

图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文件系统进行双向的交流。

3.3 Web客户端应用程序

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等。

网络共享管理:提供了文件上传、下载、删除等操作,管理用户对共享文件夹的访问和读写权限。

4 测试结果

首先在ARM9开发板进行Linux内核移植,然后进行YAFFS2文件系统的移植,并将其作为根文件系统。之后移植Samba, 使Windows用户可以访问开发板。将编译成功的Flask程序烧写到开发板上。连接好硬件,启动应用程序,进行测试。本文对基于 ARM9平台的家庭云存储设计方案进行了验证,在测试过程中用户可以进行正常的登入登出,在登录成功后便可进行网络共享管理,对文件实行上传、下载、删除等操作。如图6所示,利用内网映射软件将自己本地的内网的 IP解析成通过外网可以访问的 IP,这样家庭用户才能使用浏览器随时随地通过网络来访问ARM9服务器中的资源。

图6 目录回显信息

5 结论

本文设计了一种基于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-),男,硕士研究生,主要研究方向:智能交通、嵌入式系统。

猜你喜欢

家庭用户开发板内核
万物皆可IP的时代,我们当夯实的IP内核是什么?
强化『高新』内核 打造农业『硅谷』
基于嵌入式Linux内核的自恢复设计
Linux内核mmap保护机制研究
电力市场环境下家庭智慧能源网关概念及设计
Microchip最新推出两款PIC32 Curiosity开发板
浅析单片机开发板的设计与制作
家庭用户的宽带网络接入技术分析
家庭基站系统中的联合信道与功率控制算法
Mouser为您呈上开发关键之STMicroelectronics Nucleo开发板