热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

基于Linux的嵌入式网络存储器设计

基于Linux的嵌入式网络存储器设计--Linux通用技术-Linux编程与内核信息,下面是详情阅读。
  随着现代信息社会的高速发展,各种类型的数据也呈几何指数级地增长,如何更有效、更方便、更完全地存取管理这些数据,成为人们关注的一个问题。新的网络存储技术的出现,给了人们一个很好的解决方案。它把存储设备直接连接到网络上,作为一个瘦的网络客户终端设备给用户提供网络存储服务,而且,Web技术的发展也为其方便、可靠的管理提供了技术保障。

  1 硬件设计

  除CPU单元以外,网络存储器的实现主要包括两个部分:I/O接口和存储器接口。下面以CPU为中心,说明这两个接口的主要功能。

  ①I/O接口。这里指CPU与Ethernet的接口(以太网接口)。它采用PCI的方式与以太网相连,是进入LAN(Local Area Network)的通道,在整个系统中负责发送或接收网络上的数据包。

  ②存储器接口。包括两个方面:一是RAM接口,主要存储数据,采用PCI接口方式;二是Flash接口,主要存储操作系统及应用软件,采用并口形式与CPU相连。

  ③磁盘冗余阵列卡(RAID)接口。包括与CPU的接口和与磁盘阵列的接口。磁盘阵列主要用来存储网络用户资料,CPU通过磁盘阵列卡对磁盘阵列进行管理操作,允许一定的冗余来保证用户数据的安全。

  2 软件设计

  在整个软件设计中,应选择一个合适的操作系统。整个操作系统要求体积比较小、网络功能比较强、适于裁减、能被嵌入到Flash中,并且有网络管理和磁盘管理功能。针对这些要求,我们选择Linux操作系统作为软件平台,对其内核进行裁减,从而实现嵌入式网络存储器的功能。整个软件实现可分为以下几个部分。

  2.1 Linux内核的裁减

  (1)Linux内核简介


  Linux内核主要由五部分构成:进程调度、内存管理、虚拟文件系统、网络接口以及进程间通信。进程调度负责控制进程对CPU的访问,调度程序使用一种策略确保所有的进程都能公平地访问CPU,并且确保内核在任意时刻能执行必要的硬件操作。内存管理负责管理系统的物理内存,实现多进程安全地共享计算机的内存;另外内存管理支持虚拟内存,使进程可以使用大于实际物理内存的内存地址空间,不用的内存址空间被导出到文件系统中,并在需要使用时再导回到物理内存中。虚拟文件系统通过将各种设备抽象为一种公共接口,屏蔽了各种硬件设备的细节。网络接口实现了对各种网络标准网络硬件的访问。进程间通信子系统实现了系统内进程间的多种通信机制。

  (2)Linux内核的配置

  Linux系统的内核采用单块结构,可以动态地加载和卸载模块。系统利用内核模块的可动态装载和卸载功能,可灵活地在内核中添加新的组件或卸载不再需要的内核组件。因此在具体实现过程中,可以针对要实现的功能对其内核进行裁减,以缩小体积。根据网络存储器的硬件实现框图可以知道,整个系统的硬件接口只包括PCI和IDE两种接口。在对Linux内核进行配置时,可把Floppy、SMP、MTRR、SCSI及所有的Block Device和Character Device移除,只留下old IDE Device、PCI。另外,文件系统在内核中占了相当大的比例,VFS简化了档案系统的设计,Buffer cache、Directory cache增加了系统的效率;但这些对嵌入式系统用处不大,可以移除,内核会减小20KB左右,或者跳过整个VFS,直接将文件系统写成一个Driver的型式,这样文件系统可由230KB缩减至50KB左右。在配置Linux内核时,网络协议的支持是必不可少的。现在,大多数网络都是以TCP/IP协议为基础的,并且一般的工作站所选用的操作系统为Windows或Linux系统,因此,要实现其网络功能,并能够在不同平台下实现文件共享,应该选择对TCP/IP协议、NFS以及Samba协议的支持。
推荐阅读
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 【Windows】实现微信双开或多开的方法及步骤详解
    本文介绍了在Windows系统下实现微信双开或多开的方法,通过安装微信电脑版、复制微信程序启动路径、修改文本文件为bat文件等步骤,实现同时登录两个或多个微信的效果。相比于使用虚拟机的方法,本方法更简单易行,适用于任何电脑,并且不会消耗过多系统资源。详细步骤和原理解释请参考本文内容。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
author-avatar
mobiledu2502863483
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有