如何做一台文件服务器
实验16 Windows环境下的文件服务器配置2007年06月12日 星期二 上午 09:001 实验目的与要求
(1) 学会安装和配置文件服务器。
(2) 学会服务器端共享文件夹的配置和管理。
(3) 学会客户端访问共享文件夹的方法。
(4) 学会分布式文件系统的设置方法。
(5) 实验学时:2
2 实验相关理论与知识
计算机网络的基本功能是在计算机间共享信息,文件共享可以说是最基本、最普遍的一种网络服务。虽然越来越多的用户购置专用文件服务器(如NAS),但是通用操作系统提供的文件服务器功能也非常实用,完全能满足一般的文件共享需求,下面主要介绍Windows Server 2003文件服务器的配置、管理和应用。
文件服务器负责共享资源的管理和传送接收,管理存储设备(硬盘、光盘、磁带)中的文件,为网络用户提供文件共享服务,也称文件共享服务器。除了文件管理功能之外,文件服务器还要提供配套的磁盘缓存、访问控制、容错等功能。部署文件服务器,主要要考虑以下3个因素。
·存取速度:快速存取服务器上的文件,例如可提供磁盘缓存加速文件读取。
·存储容量:要有足够的存储空间以容纳众多网络用户的文件,可使用磁盘阵列。
·安全措施:实现网络用户访问控制,确保文件共享安全。
文件服务器主要有两类解决方案,一类是专用文件服务器,另一类是使用PC服务器或PC计算机组建的通用文件服务器。
专用文件服务器是专门设计成文件服务器的专用计算机,以前主要是运行操作系统、提供网络文件系统的大型机、小型机,现在的专用文件服务器则主要指具有文件服务器的网络存储系统,如NAS和 SAN。NAS独立于操作系统平台,可支持多种操作系统和网络文件系统,提供集中化的网络文件服务器和存储环境,比一般的文件服务器的功能更强大,可看作是专用存储服务器,可为那些访问和共享大量文件系统数据的用户提供高效、性能价格比优异的解决方案。SAN全称存储区域网络,是一种用户存储服务的特殊网络,通常由磁盘阵列、光盘库、磁带库和光纤交换机组成。NAS可作为独立的文件服务器,提供文件级的数据访问功能,更适合文件共享。而SAN提供数据块级的数据访问功能,更适合数据库和海量数据。
目前一般用户使用PC服务器或PC计算机,通过网络操作系统来提供文件服务,UNIX、Linux、Novell、 Windows等操作系统都可提供文件共享服务。Windows网络操作系统,如Windows NT Server、Windows2000 Server和最新的Windows Server 2003由于操作管理简单、功能强大,在中小用户群中的普及率非常高,许多文件服务器都运行Windows网络操作系统。下面将重点以Windows Server 2003为例介绍文件服务器的配置、管理和应用。
3 实验环境与设备
C/S模式的网络环境,包括一台Windows XP客户机和一台Windows Server 2003服务器。
两种可选的物理拓扑(交叉线连接或通过集线器/交换机用直连线连接)。
4 实验内容与步骤
40 服务器的基本网络配置,包括IP地址为“192168105XX”、网关为“192168105254”等。(注:“XX”代表你配置机器的主机编号,“nXX”代表你的服务器主机名,例如你坐在5号机上则“XX”代表“05”,“1XX”代表“105”,配置此机的IP地址为“1921681055”、主机名为“n05”,下同)。
41 安装和配置文件服务器
文件服务器提供网络上的中心位置,可供存储文件并通过网络与用户共享文件。当用户需要重要文件时,可以访问文件服务器上的文件,而不必在各自独立的计算机之间传送文件。如果网络用户需要对相同文件和可通过网络访问的应用程序的访问权限,就要将该计算机配置为文件服务器。默认情况下,在安装Windows Server 2003系统时,将自动安装“Microsoft网络的文件和打印共享”网络组件。如果没有该组件,可通过网络连接属性对话框安装。
1.准备工作
在部署文件服务器之前,应当做好以下准备工作。
·划出专门的硬盘分区(卷)用于提供文件共享服务,而且要保证足够的存储空间,必要时使用磁盘阵列。
·磁盘分区(卷)使用NTFS文件系统,因为FAT32缺乏安全性,而且不支持文件和文件夹压缩、磁盘配额、文件加密或单个文件权限等重要特性。
提示:使用Windows Server 2003自带的工具即可将FAT32转换成NTFS格式。该工具名为Convertexe,位于Windows安装目录下的System32目录中。在命令行状态运行该工具即可,如Convert E:/FS:NTFS。
·确定是否要启用磁盘配额,以限制用户使用的磁盘存储空间。
·确定是否要使用索引服务,以提供更快速、更便捷的搜索服务。
2.配置文件服务器
只要将Windows Server 2003计算机上的某个文件夹共享出来,就会自动安装文件服务器,也可通过“配置您的服务器向导”工具来安装文件服务器角色。这两种方法的差别是,第二种方法提供更多的选项,并在程序菜单中提供文件服务器管理台工具。这里介绍采用第二种方法的基本步骤。
(1) 启动“配置您的服务器向导”工具。默认情况下,登录Windows Server 2003时将自动启动“管理您的服务器”(也可从控制面板中选择管理工具→管理您的服务器),单击添加或删除角色。另一种方法是直接从控制面板中选择管理工具→管理您的服务器→配置您的服务器向导。单击下一步按钮。
(2) 在配置选项界面中选择自定义配置,单击下一步按钮。
(3) 在服务器角色界面中,如果文件服务器的已配置状态为“否”,就单击文件服务器,然后单击下一步。
注意:如果文件服务器的已配置状态为“是”,就单击文件服务器,再单击下一步按钮打开角色删除确认界面,并选择删除文件服务器角色复选框,即可删除文件服务器角色,这样该服务器上的文件和文件夹就不再共享,依赖于这些共享资源的网络用户、程序或宿主都将无法与它们连接。
(4) 出现文件服务器磁盘配额对话框中,为服务器上所有NTFS分区设置默认的磁盘配额。勾选为此服务器的新用户设置默认磁盘空间配额和拒绝将磁盘空间给超过配额限制的用户。单击下一步按钮。默认情况下是没有启用磁盘配额。
(5) 出现文件服务器索引服务对话框,确定是否要使用索引服务。单击下一步按钮。一般情况下不需索引服务,只有在用户要经常搜索该服务器上的文件内容时才启用它。
(6) 出现选择总结对话框,查看和确认已经选择的选项,单击下一步按钮。
本例中有“设置默认磁盘配额”、“安装文件服务器管理”和“运行共享文件夹向导来添加一个新的共享文件夹或共享已有文件夹”等选项。
(7) 自动完成相关配置后,出现共享文件夹向导,根据提示配置共享文件夹以供其他用户共享。只有配置了共享文件夹之后,文件服务器才能建立。
(8) 单击下一步按钮,出现文件夹路径对话框,指定要共享的文件夹路径。可通过浏览在C盘目录下新建一个FileShare作为共享目录,此时文件夹路径输入框中将出现C:\FileShare(如果C盘中已经建立过此文件夹,才可以在此输入框中直接输入)。
(9)单击下一步按钮,出现名称、描述和设置对话框,指定共享名。
(10) 单击下一步按钮,出现权限对话框,指定共享权限为管理员有完全访
问权限;其他用户有只读访问权限,单击完成按钮。这里提供了几种预置的权限,也可以自定义权限。
(11)共享成功对话框中显示共享成功,给出新建共享文件夹的信息。如果要继续设置其他共享文件夹,则选中下面的复选框。单击关闭按钮,完成。
至此文件服务器配置就完成了。接下来可执行各项文件管理任务。
3.文件服务器管理工具(以下方法至少掌握一种)
Windows Server 2003提供了用于文件服务器配置管理的多种工具。
·文件服务器管理控制台:打开“管理您的服务器”工具,在文件服务器区域单击管理此文件服务器,打开该控制台。要使用“配置您的服务器向导”工具安装文件服务器,可从程序菜单中选择管理工具→文件服务器管理命令打开该控制台。
·“共享文件夹”管理工具:也可通过“计算机管理”工具中的“共享文件夹”管理工具来执行共享文件夹的配置管理,从程序菜单中选择管理工具→计算机管理,展开共享文件夹节点即可。
·Windows资源管理器:可直接将文件夹配置为共享文件夹。
·命令行工具:如net share可显示有关本地计算机上全部共享资源的信息。
文档管理指文档、电子表格、图形和影象扫描文档的存储、分类和检索。每个文本具有一个类似于索引卡的记录,记录了诸如作者、文档描述、建立日期和使用的应用程序类型之类的信息。这些文档一般归档在较便宜的磁带上,必要时归档在可读写的光盘上。
一般最方便的方法就是使用系统管理,使用易度文档管理系统,将文档集中安全存储在文档服务器上,建立一套以服务器为中心的文档组织、使用、协作、监管机制,主要是系统支持文档的安全和流程管控。
应用服务器
应用服务器是指通过各种协议把商业逻辑曝露给客户端的程序。它提供了访问商业逻辑的途径以供客户端应用程序使用。应用服务器使用此商业逻辑就像调用对象的一个方法一样。
基本信息
中文名
应用服务器
提供
访问商业逻辑的途径
实现
动态网页技术
目录
定义
随着Internet的发展壮大,“主机/终端”或“客户机/服务器”的传统的应用系统模式已经不能适应新的环境,于是就产生了新的分布式应用系统,相应地,新的开发模式也应运而生,即所谓的“浏览器/服务器”结构、“瘦客户机”模式。应用服务器便是一种实现这种模式核心技术。[1]
Web应用程序驻留在应用服务器(ApplicationServer)上。应用服务器为Web应用程序提供一种简单的和可管理的对系统资源的访问机制。它也提供低级的服务,如HTTP协议的实现和数据库连接管理。Servlet容器仅仅是应用服务器的一部分。除了Servlet容器外,应用服务器还可能提供其他的JavaEE(EnterpriseEdition)组件,如EJB容器,JNDI服务器以及JMS服务器等。
市场上可以得到多种应用服务器,其中包括Apache的Tomcat、IBM的WebSphereApplicationServer、CauchoTechnology的Resin、Macromedia的JRun、NECWebOTXApplicationServer、JBossApplicationServer、Oracle(并购了BEA)的WebLogic等。其中有些如NECWebOTXApplicationServer、WebLogic、WebSphere不仅仅是Servlet容器,它们也提供对EJB(EnterpriseJavaBeans)、JMS(JavaMessageService)以及其他JavaEE技术的支持。每种类型的应用服务器都有自己的优点、局限性和适用性。
分类
通常,根据确定文档内容的时间,所有文档可以划分为如下三类。
静态
静态:静态Web文档是一个存储于Web服务器的文件。静态文档的作者在写作的时候确定文档的内容。由于文档内容不会变化,所以对静态文档的每次访问都返回相同结果。
动态
动态:动态web文档不是以一个预先定义的格式存在,而是在浏览器访问web服务器时创建。当一个请求到达时,web服务器运行一个应用程序创建动态文档(dynamicdocuments),服务器返回程序的输出作为应答。由于每次访问都要创建新的文档,动态文档的内容是变化的。
活动
活动:一个活动文档不完全由服务器一端说明,而是包括一个计算并显示值的程序。当浏览器访问活动文档时,服务器返回一个浏览器可以本地执行的程序。当该程序运行时,它可以和用户交互执行并不停地改变显示。这样,活动文档的内容是不固定的-只要用户让程序保持运行,它总是在不停地变化。静态文档的主要优点在于它的简单、可靠性和性能。由于静态文档是直接指定格式。它可以由不懂编程的人创建。更重要的是,在已经创建和测试之后,静态文档永远是正确的。最后,浏览器可以快速存取文档,同时通过把文档放在本地盘上的缓冲区内以加快以后对这些文档的访问速度。静态文档的主要缺点是不灵活-当信息变化时文档必须重新设计。另外,改变是很耗费时间的,因为它需要人工修改文件。因此,静态文档不适合频繁变化的报告信息。动态文档的主要优点是它报告当前信息的能力。例如,一个动态文档可以用来报告股市行情、天气预报或音乐会售票情况等内容。当浏览器申请信息的时候,服务器运行一个应用程序,访问所需要的信息,并创建一个文档,服务器于是将该文档返回给浏览器。动态文档把任务放在服务器一端,浏览器采用和静态文档同样的方法访问动态文档。实际上,从浏览器的角度来看。动态文档和静态文档是无区别的。由于动态文档和静态文档都采用HTML编写,浏览器不知道服务器是从一个磁盘文件还是计算机程序中取得文档。动态文档的主要缺点是增加成本和不能显示变化的信息。和静态文档类似,动态文档在浏览器取得文档后不会再改变。因此在信息发送给浏览器之后,文档就开始过时。例如一个报告股市信息的动态文档,由于股市信息变化迅速,当用户访问时文档很快就过时。动态文档的创建和访问成本比静态文档昂贵。创建动态文档的代价较高,因为动态文档的创建者必须懂得如何写程序。另外,程序必须仔细编写和广泛测试,以保证输出的合法性。验证这样一个程序的正确性是很困难的,因为输入可以包含不同来源的多种数据。动态文档除了创建成本高,所需的硬件成本也较高,因为服务器端需要更强大的计算机。最后取出动态文档需要的时间稍多些,因为服务器需要额外的时间去运行程序创建文档。尽管在申请到达时动态文档才创建,但信息可能很快过时,活动文档相对于动态文档的主要优点在于它持续更改信息的能力。例如,只有活动文档能够快速改变显示以显示动画。更重要的是,活动文档能够直接访问信息源并连续更改显示。例如,一个显示股市行情的活动文档可以连续读取股市信息,并且不需要用户干预而自动修改显示。活动文档的主要缺点是创建和运行这种文档所需的额外费用,同时缺少安全性。首先,活动文档的显示需要更复杂的浏览器软件和一个强有力的计算机运行浏览器。另外,写正确的活动文档比写其他画面需要更多的编程技巧,所得到的结果文档更难于测试。而且,由于活动文档必须运行在客户端而不是服务器端,程序必须解决在不同客户上的兼容性问题,最后,活动文档存在着潜在的安全性问题,因为文档既输入信息又输出信息。
文件服务器一般都是存文件的
web服务器一般是放系统的,例如ERP系统,wms系统,也可以放企业门户网站
数据库服务器就是数据库服务器了,目前市面上国内使用较多的三大数据库分别是sqlserver,Oracle,MySQL
应用服务器就是给应用程序做一个服务端,例如web服务器也属于应用服务器的一种,因为应用除了web应用还有c/s架构的应用。
在面向架构编程一文中,我阐述了自己对架构和代码之间的关系的看法:「 代码需要反映出架构 」!
本文通过对文件服务 核心功能 的设计与实现,来验证这一观点。设计过程融合了「用例驱动设计」和「领域驱动设计」!
文件服务器的核心功能就两个:「 文件上传 」和「 文件下载 」!其中上传可能需要支持断点续传、分片上传。而下载可能需要进行下载保护,例如非指定客户端无法下载。
除了这两个核心功能,一般都会有一个额外功能,就是「转换」!转换包括:
除了上面的业务功能外,还包括如下非功能性约束:
根据功能,可划分如下功能模块:
首先通过分层架构对模块进行一个大致的划分,按照领域设计的分层方式:
从上面的流程可以看到「上传模块」对「转换模块」有一定的依赖,像下面这样:
但是,「上传模块」是核心模块,而「转换模块」是非核心模块。核心模块的功能相对稳定,非核心模块的功能相对不稳定。让稳定的模块去依赖不稳定的模块,会导致稳定的模块也不稳定,所以需要对依赖进行「倒置」。
「依赖倒置」解决了模块依赖问题。但是转换是个很耗时的过程,例如用户上传视频,在不转换的情况下,只要上传完成就可以得到响应,但是如果转换的话,可能就需要双倍甚至三四倍的时间才能得到反馈,体验非常的不好。且一般上传和观看的时效性并不需要即时性,所以转换应该是个异步的过程。
异步执行的方式很多,比如基于事件,自定义线程等。这里通过事件的方式来进行处理。(领域事件可参考领域设计:领域事件)
文件上传会创建UploadEvent,UploadListener监听UploadEvent事件,当监听到了UploadEvent,则执行转换。
转换流程异步化后,如何告知客户端转换结果呢?有几种方案:
另外对于下载来说,实际直接通过Nginx这样的web服务器就可以了,所以下载模块可以直接独立。
对于配置模块来说,配置可以分为两种:
「静态配置」可以使用属性文件进行配置即可。「动态配置」需要根据不同的系统进行相应的配置,故针对和视频等资源配置,创建对应的配置类,根据参数通过Respository动态构建。
整体结构如下:
基于上面的设计,流程需要进行相应的调整。
下载流程不变,多了一个获取转换后文件链接的流程:
相应的模块也有调整,新增了一个 消息模块 ,用于处理消息的发送与监听。这个消息属于领域事件,所以也放在领域层。
上传流程 :
下载流程 :
获取真实链接流程 :
例如,现在要新增一个「秒传功能」,即对于服务器已经存在的文件,不再进行上传操作,直接返回文件URL!那么需要做如下扩展:
上面的修改不需要对现有流程做任何改动。
事件串联了整个上传流程:
由于目前大部分是内部事件,故使用Spring事件来处理,代码逻辑如下:
为了提高文件服务器的灵活性,对于转换逻辑可进行配置。如果没有进行相应的配置,则不会进行对应的处理。
下面的四个类是对各个文件类型的配置:
对应的Respository是对其保存与恢复的仓储类:
此处基于属性配置来实现(原因请见「技术选型」)!以VideoConfigRespository为例:
通过Spring的ConfigurationProperties注解,将属性文件中的属性配置到videoConfigList中。
转换结果通过ConvertResult和ConvertFileInfo表示:
ConvertResultRespository是这个聚合的仓储,用于保存与恢复此聚合。此处没有使用数据库,而是直接使用的文本形式保存(原因见「技术选型」)。
转换服务根据配置委托对应的工具类来进行相应的操作(代码略):
提供两个接口:
本文给出了一个文件服务相对完整的架构设计与实现过程。整个架构设计流程如下:
整个过程对各个约束做出了对应的决策,并进行了验证。代码结构与架构设计完全匹配。从架构设计图依图索骥即可理解代码逻辑。
如有不妥或纰漏之处,欢迎大家探讨指教!
0条评论