1、硬件设计
本文引用地址:
硬件设计方框图如图1所示。
620)this.width=620;"src=""alt=""/>
从图1可看见,除CPU单元以外,网路储存器的实现主要包括两个部份:I/O插口和储存器插口。下边以CPU为中心,说明这两个插口的主要功能。
①I/O插口。这儿指CPU与Ethernet的插口(以太网插口)。它采用PCI的形式与以太网相连,是步入LAN(LocalAreaNetwork)的通道,在整个系统中负责发送或接收网路上的数据包。
②存储器插口。包括两个方面:一是RAM插口,主要储存数据,采用PCI插口形式;二是Flash插口,主要储存操作系统及应用软件,采用串口方式与CPU相连。
③磁盘冗余阵列卡(RAID)插口。包括与CPU的插口和与c盘阵列的插口。c盘阵列主要拿来储存网路用户资料,CPU通过c盘阵列卡对c盘阵列进行管理操作,容许一定的冗余来保证用户数据的安全。
2、软件设计
在整个软件设计中,应选择一个合适的操作系统。整个操作系统要求容积比较小、网络功能比较强、适于裁减、能被嵌入到Flash中,而且有网路管理和c盘管理功能。针对那些要求,我们选择Linux操作系统作为软件平台,对其内核进行裁减,因而实现嵌入式网路储存器的功能。整个软件实现可分为以下几个部份。
2.1Linux内核的裁减
(1)Linux内核简介
Linux内核主要由五部份构成:进程调度、内存管理、虚拟文件系统、网络插口以及进程间通讯。进程调度负责控制进程对CPU的访问,调度程序使用一种策略确保所有的进程都能公正地访问CPU,而且确保内核在任意时刻能执行必要的硬件操作。显存管理负责管理系统的数学显存,实现多进程安全地共享计算机的显存;另外显存管理支持虚拟显存,使进程可以使用小于实际化学显存的显存地址空间,不用的显存址空间被导入到文件系统中,并在须要使用时再导回到化学显存中。虚拟文件系统通过将各类设备具象为一种公共插口,屏蔽了各类硬件设备的细节。网路插口实现了对各类网路标准网路硬件的访问。进程间通讯子系统实现了系统内进程间的多种通讯机制。
linux操作系统文章专题:linux操作系统解读(linux不再难懂)
(2)Linux内核的配置
Linux系统的内核采用单块结构,可以动态地加载和卸载模块。系统借助内核模块的可动态装载和卸载功能,可灵活地在内核中添加新的组件或卸载不再须要的内核组件。因而在具体实现过程中,可以针对要实现的功能对其内核进行裁减,以缩小容积。按照网路储存器的硬件实现框图可以晓得,整个系统的硬件插口只包括PCI和IDE两种插口。在对Linux内核进行配置时,可把Floppy、SMP、MTRR、SCSI及所有的BlockDevice和CharacterDevice移除,只留下oldIDEDevice、PCI。另外,文件系统在内核中占了相当大的比列,VFS简化了档案系统的设计,Buffercache、Directorycache降低了系统的效率;但这种对嵌入式系统好处不大,可以移除,内核会降低20KB左右,或则跳过整个VFS,直接将文件系统写成一个Driver的方式,这样文件系统可由230KB削减至50KB左右。在配置Linux内核时,网路合同的支持是必不可少的。现今,大多数网路都是以TCP/IP合同为基础的,但是通常的工作站所选用的操作系统为Windows或Linux系统,因而,要实现其网路功能,并才能在不同平台下实现文件共享,应当选择对TCP/IP合同、NFS以及Samba合同的支持。
2.2不同平台下文件共享的实现
现代PC机中广为流行的操作系统有两种:Windows和Linux。这两种操作系统是依赖于完全不同的技术来提供网路服务的:Linux操作系统是以传输控制合同/网路合同(TCP/IP)、网络文件系统(NFS)以及网路信息服务(NIS)为基础,提供网路服务的;而Microsoft则依赖于NetBIOS和服务信息块(SMB)来提供把数据从服务器传输至顾客机的服务。因而,我们选用Samba工具来实现这两种不同平台下的文件共享。
(1)Samba简介
Samba从根本上清除了Windows与Linux之间的屏障,可以提供以下4个方面的服务:共享资源和复印机、名字解析、浏览、用户身分认证。通过让NetBIOS(Windows网路邻居的通讯合同)和SMB(ServerMessegeBlock)两个合同运行于TCP/IP
通讯合同之上实现文件共享linux内核,但是使用NetBEUI合同,可以让Windows通过网路邻居听到Linux服务器。
①NetBIOS合同:NetBIOS是一个对话层通讯服务,通过一种公共的方式为访问提供应用程序,而且对整个网路提供服务。它是一个针对怎样访问数据的规范,借助更低一级的合同,如NetBEUI或TCP/IP等,提供实际传输服务的。NetBIOS规范把合同分成三种服务:名子服务、对话服务、数据报服务。名子服务主要校准该NetBIOS名子是惟一的,删掉不再须要的NetBIOS名子,在NetBIOS名子基础上确定服务器的网路地址;对话服务在两个应用程序之间,提供横越NetBIOS网路的实现通讯通道;数据报服务提供广播信息或在应用程序之间发送信息而无需应答。因为NetBIOS和TCP/IP在主机命名方面使用的是完全不同的系统,后者以字符为基础linux虚拟网络设备,前者以数据为基础,所以必须把每位NetBIOS名子与IP地址进行匹配。
Samba使用TCP/IP合同来传输NetBIOS,把NetBIOS名子解析或IP地址,一般通过三种匹配方法:第一种是把每位对IP地址的恳求广播到节点名字解析的原始NetBIOS,依赖于每位顾客机和服务器,通过网路去找寻对方;第二种使用本地文件,并加载步入高速缓冲储存器,便于每位顾客机可以了解那个名子解析成那个IP地址;第三种使用NetBIOS名子服务(NBNS),一个NBNS是一个中央主机,它为一个工作组储存NetBIOS名子以及与其相对应的IP地址列表,因而,每位工作组上的NetBIOS节点都可以向NBNS恳求为它们把名子解析成IP地址。
②SMB合同:SMB合同是一个通过网路提供并获得资源的合同,依赖于NetBIOS进行名子解析,为网路上使用资源提供一个标准的插口。SMB合同对服务器定义了两种安全模式:共享级和用户级。共享级服务器在硬碟设备上构建了一些可被访问的目录,用户须要一个密码来获得访问权。因而,网路上的任何用户只要晓得服务器的名子、资源的名子以及密码就可以访问资源了。共享级服务器通过对同一个资源设定不同的密码,控制用户的访问权限。用户级服务器在硬碟设备上构建可被访问的目录,须要用户提供用户名及相应的密码来获得访问权。NT服务器和LM/U服务器采用这些方法而不支持共享级访问。相对共享级模式,用户级更容易管理用户。
(2)Samba的配置
一个Samba服务器实际包含了两个服务器程序:smbd和nmbd。Smbd是Samba的核心,负责构建对话进程、验证用户身分、提供对文件系统和复印机的访问机掉;nmbd实际网路浏览服务器的功能,作用是对外发布Samba服务器可以提供的服务。Nmbd可以使Samba服务器出现在Windows95或WindowsNT的“NetworkNeighborhood”(网路邻居)中,而且顾客机可浏览到Samba服务器所共享的资源。启动Samba服务器进程时,可以完全不运行nmbd,这样顾客只能看见Samba服务器的NetBIOS名子,却看不到Samba服务器所提供的服务。
linux操作系统文章专题:linux操作系统解读(linux不再难懂)
在Samba的软件包中存在一个smb.cONf配置文件,其结构类似于Windows的*.ini文件。RedHat和Debian中,smb.conf文件的缺省位置是在/etc/下,所有的Samba程序都要参照这个配置文件。整个配置文件分为三节:[global]、[home]、[printers]。[global]节设置全局选项和一些缺省的服务选项;[home]节拿来动态地映射到每位用户的home目录下;[printers]节拿来设置将根据系统printcap文件配置的复印机共享至指定用户。其中每一节中的配置参数都是一个全局参数或是一个服务参数,全局参数影响或控制整个服务器,服务参数影响或控制服务器提供的某项服务。Samba的配置文件见网路补充版。管理员可通过Samba的一些命令来管理用户及用户的访问权限,如添加用户、删除用户、改变目录的访问权限,也中直接更改smb.conf进行管理。
2.3不同结构网路之间文件共享的实现
(1)NFS合同简介
NFS网路文件系统是由SunMicrosySTems公司最早实现的,用于在不同的操作系统、不同的网路结构及不同的传输合同之间共享文件。NFS合同组包括NFS、RPC、XDR。NFS本身没提供其它程序可调用的过程linux嵌入式开发,它通过远程过程调用和通用外部数据表示来实现。远程过程调用为远程服务提供一个插口,包括主机地址、程序号及一个远端进程的进程号,而外部数据表示提供了一套通过网路描述数据类型的方式。在不同的操作系统中,文件系统的管理方法不同,对于目录树的深度、名字的使用以及路径的表示方式也都有不同的规定。有些操作系统的文件系统处于特定的目录下边,而有些操作系统用mount操作使所有的文件系统看上去在一个单独的目录下。虽然目录和文件在好多方面都比较类似,并且访问它们却须调用不同的程序,因而,NFS假设文件系统是分等级的,但是文件处于最低等级,NFS为目录提供一个标准的网路格式便于访问。在远程调用中,每次调用只返回一个目录,这样解决了不同文件系统之间结构不同的问题。
(2)NFS服务的配置
NFS服务器使用了5个守护进程来提供NFS服务。最基本的提供NFS服务的系统起码要运行nfsd用于处理NFS合同,而mountd用于处理顾客的mount恳求。据悉,因为NFS使用RPC远程调用,其它三个RPC守护进程portmap、rpc_lockd、rpc_statd可以拿来帮助提供更高效的服务。为了使其它系统也能使用Linux系统上的硬碟空间,在系统启动时,应载入NFS的守护进程。这须要在rc.conf中修改相应关的参数:nfs_server_enable、rpc_statd_enable、rpc_lockd.enable和portmap_enable,这种参数对应相应的守护进程。这样,系统启动以后就具备了能共享文件的能力,接出来的工作是通过修改/etc/exports文件来设置须要共享的目录以及那些目录的访问权了,以保证其安全性。Exports文件的设置如下:
/usr/src/sys-maproot=guest1nshost2
/usr/ports-ro-network202.114.1.0
在这儿我们使用绝对路径的方法定义了两个共享目录usr/src/sys和/usr/ports,但是对这两个目录的访问权限分别作了不同的限制,以保证其安全性。对于第一个目录,限制了顾客机上的root用户等价于本机上的guest1用户,以防止顾客机上的root用户拥有这个服务器上的root权利,进行非法操作linux虚拟网络设备,随后的ns和host2参数是主机名,只有ns和host2能够共享这个/usr/sys/src目录。第二行设置共享了/usr/ports目录,限制为只容许读取,但是也只有202.114.1.0网路上的计算机能够访问这个共享目录。在修改了exports文件以后,向mountd进程发送一个SIGHUP讯号,使其重读exports文件的内容,这样关于exports文件的设置才开始生效。
3、结语
本文提出了一个网路储存器的基本解决方案,实现了网路储存器的基本功能。整个系统便于安装,具有可靠性较高,跨平台、跨网路的优点;同时也存在着一些不足的地方,例如对用户、磁盘的管理不太便捷,这种可通过数据库技术加以改进。
linux操作系统文章专题:linux操作系统解读(linux不再难懂)