从Windows Server文件服务到分布式文件服务

一、序言
 
不知道大家是否考虑过服务器与终端机或者叫桌面机、工作站等的区别都有什么?也许你会说体积不同,也许你会说功能不同,甚至有些人会拉一个清单出来说说硬件上面的区别等。其实我最想说的是,两者最大的区别之一:服务器是给多个人用的,属于共享型设备,而终端机也好,桌面机也罢,大部分情况下都是给个人用的,属于独享型设备。从高层应用层来看,无论是WEB服务器、邮件服务器、代理服务器、数据库服务器、无论提供的是什么服务,这些服务都是共享资源型,从硬件的角度上看,都是属于共享型的设备。提出这个观点 ,忽悠你接受这个概念,是为了下面更好的说明。www.it165.net
 
二、文件服务
  
文件服务是服务器最古老的服务之一。现在的操作系统无论是WINDOWS 还是LINUX本身都提供了很强大的服务组件,用来将服务器部署成各种需求的应用服务、基础服务、存储。或集群服务等。在文件或文件夹共享中,LINUX系统使用了大名鼎鼎的SAMBA服务。而在WINDOWS SERVER中叫“文件服务”。不过很多人还是对文件服务有一点点小小的误区。所谓文件服务,其实说白了就是文件或文件夹共享或者用我的观点叫共享文件管理。很多人把文件服务同时理解为文件管理。实际上并不是文件管理。(基础的文件管理是基于文件系统来进行的)。如果文件或文件夹没有集中共享的需求,那么分散到各个客户端由创造者独自使用是理所当然的,但是如果有共享文件或文件夹,甚至不止一个共享文件后文件夹群集,分散的存放和管理就会带来很多问题。不仅仅是网络环境变的更复杂,管理起来也变的非常麻烦。如下图2.1

\
 
(图2.1)
相反如果服务器作为文件或文件夹共享设备,那么也就意味着一种集中资源管理的模式出现了,将文件或文件夹做为共享资源集中在一起进行管理,无疑从成本还是可操作性都是非常可行的。所以我们可以将共享的文件集中放在一台服务器上,以方便大家存取,这就是文件服务出现的必要性。如下图2.2
 
\

(图2.2)

当然有些人可能会提出质疑,因为在WINDOWS下,无论是WINDOWS XP还是WINDOWS 7、甚至是WINDOWS8我们都可以进行文件的共享。那么我们是否非要使用WINDOWS SERVER系统中的文件服务组件呢?如下图2.3
\

 
(图2.3 WIN7利用”计算机管理”查看到共享文件夹)
 
答案是仍然需要。因为首先WINDOWS系统的文件共享并发连接有限制,比如XP只允许10个并发。Windows 7的限制是20个,如下图,2.3-1
\
 
(图2.3-1 WIN7系统共享用户数量限制20 无法增大,只能减少)
 
Windows系统的共享文件夹,目的是为了提供了2或更多用户之间共享文件的方便,而不是共享文件的集中存储与管理。但仍然有很多人拿WINDOWS系统做共享文件的集中管理。所以就会出现问题。所以很多人提出了如何突破的办法,通过修改注册表等,其实最简单的办法就是使用WINDOWS SERVER的文件服务。其次,使用文件服务后,除了“计算机管理”中的共享文件夹选项可以提供强大的管理功能,安装“文件服务”组件后还提供了强大的“文件服务管理器”如下图2.4
 
\
 
(图2.4 WINDOWS 2003 “计算机管理”与“文件服务器管理”)
再者,使用文件服务组件后,可以灵活的设置用户配额,可以方便的进行共享管理,而且可以备份文件服务器,甚至进行文件服务角色迁移,还可以使用分布式文件服务功能(这个下面会继续讲到) 这些都是WINDOWS系统中简单的文件夹共享不能比拟的。如下图2.5
 
\
 
(图2.5 WINDOWS 2008R2系统 “计算机管理”与“文件服务”组件差异)
将DFS(分布式文件系统)管理整合了进来。实际上也有变化,后文会介绍)所以windows server的文件服务组件不容小视。
 
 
三、文件服务与服务器消息块
 
先问大家几个问题:无论是windows还是windows server为什么都要提供”共享文件夹”服务?如果说windows server提供文件服务是把文件集中起来进行共享管理,那么windows提供文件夹共享是为了什么?如果功能与SERVER系统的功能一样,而为什么还要windows系统的文件夹共享做并发连接限制?以下两种情况说明了原因的所在。第一种:远程访问一些文件资源。这种情况就是你有一台A计算机,远程有一台B计算机,现在你要通过A计算机网络访问B计算机上的一些文件,很显然,共享文件夹远程访问就很方便了。文件共享到底使用了什么样的协议进行文件传输呢?它不使用文件传输协议FTP,也不是用远程登录协议TELNET,而是使用windows内置的SMB协议共享出我们需要访问的文件或文件夹。如下图3.1
 
\
 
(图3.1)
第二种情况就更好解释了,有些应用程序需要在文件共享上存储数据如 Microsoft SQL Server)或虚拟化软件(如 Hyper-V)。还有AD中经典的SYSVOL就是一个共享文件夹。微软在早先的WINDOWS和windows server系统中内置SMB协议用于文件共享服务,在VISTA和WINDOWS2008时代微软引进了SMB2.0,增加了缓存容量、提高了打开文件句柄数、提高了网络复制不中断等问题。而到了windows server 2012时代,SMB3.0出现了,提供了更加丰富的功能。
 
四、默认共享描述

除非使用GHOST系统安装,当使用原版的系统光盘安装系统,默认安装会启动共享功能。说到共享,微软实际上提供了两种共享服务,一个就是打印机的共享服务,被称为”打印和文件服务“,另一个就是我们一直在吵吵的文件共享服务,被称为”文件服务“。有一点,我对微软是不太满意的,因为微软的服务组件总是更换名字,从03到08R2,名字就发生了很大的变化,不过还好,这两种服务还是各自独立的。看下图4.1
\

(图4.1 windows server 2003里叫文件服务器和打印服务器)
 
\
 
(图4.2 windows server 2008r2叫打印和文件服务与文件服务(已安装)

从上面两张图中我们发现,服务组件的名称发生了一些变化,实际上一些功能也发现了变化。鉴于windows server 2008R2已步入主流,下面的内容尽量以windows server 2008r2进行举例。还是回到正题,其实我们即便是不安装”文件服务“  windows和windows server系统都会默认安装有“Microsoft 网络客户端”、“Microsoft 网络的文件和打印机共享”和 TCP/IP。前者允许您访问网络资源,后者用于文件和打印机的共享。如下图4.3
 
\
 
(图4.3 windows server 2008r2未安装文件服务 )

我们可以很清楚的看到默认三类共享:远程管理、默认共享和远程IPC。其实上系统会把磁盘包括光驱根分区作为默认共享,比如C$ 从$这个符我们可以看出这是一个隐藏共享,不过这个秘密已经不是什么秘密了。这个隐藏共享就是默认共享,无法修改其权限,无法删除。即使当时停止了这个共享,实际上下一次启动还会出现,这就是所谓的默认共享。将WINDOWS系统文件共享出来就叫远程管理共享,就是ADMIN$ 默认的文件夹地址为c:\windows,那么共享就指向这里。IPC$(Internet Process Connection) 是共享 " 命名管道 " 的资源。它是为了让进程间通信而开放的命名管道。由于微软在WIN2000时代的一些严重漏洞和默认初始安装的较低安全性,这个本来只是为了方便管理员远程管理计算机的功能成为了很多企业的噩梦。于是如何关闭默认共享网上的文章铺天盖地而来。其实我们不用对这个默认共享产生恐惧,因为这几个共享只有管理员权限和备份操作员权限的用户才可以共享,普通用户是无法使用的。
  一个为power user组的用户z00w00 试图去访问c$,如下图4.4
 
\

(图4.4)其结果必然是拒绝访问。
 
所以只要不擅自交付administrator权限和把普通用户加入administrators组,那么用户就不可能访问到默认共享。对于单机用户,关闭共享是无可厚非的问题,而对于企业用户来说,关闭默认共享并不是明智之举,网上流行的方法主要有三种:第一种,利用命令行net use  /delete开机启动删除默认共享,不过下次重启系统会重建默认共享。(关于net use命令在后面访问共享文件夹内容详述)第二种,修改注册表,通过修改注册表默认共享的值禁止共享,不过我发现08R2的系统注册表值已经与2003不太一样了。第三种,停止SERVER服务,这个比较彻底,也无法共享其它文件夹了,同时也停止了打印机的共享。常见错误提示如下图4.5
 
\

(图4.5)
 
五、  添加文件服务组件及创建共享文件夹
使用“服务器管理器”添加“角色”任务就可以很方便的添加“文件服务”角色,如下图5.1
 
\
 
(图5.1)

勾选“文件服务”然后选择下一步,可以看出很多组件,2008R2角色只能一次创建,我们先不选择分布式文件系统,选择的内容我们会逐步介绍。如下图5.2
 
\
 
(图5.2)
计算机可以监控每个卷的磁盘空间情况。选择你要共享的卷,这里我选择了C和D分区卷。如下图5.3
 
\
 

(图5.3)

当监控的卷到达阀值时,会生成一个报道,下面就是提示报告的位置。如下图5.4

\
 
(图5.4)
 
接下来会产生安装汇总,确定没有问题,然后开始安装,注意“计算机会提示安装完毕后重启计算机”
重启计算机后就可以正常使用了。创建共享文件夹的方法有好几种,下面介绍两种第一种:是大家最常用的,在WINDOWS系统下也这么做,就是右键要共享的文件夹,然后选择属性,如下图5.5
 
\
 
(图5.5.)WINDOWS7和WINDOWS 2008R2时代(实际上应该是VISTA时代)微软提供了简单共享和高级共享功能。简单共享默认管理员账号具备该文件夹的读写权限,所有者是管理员组,可以添加需要共享的用户,可以授权读或读写权限。如下图5.6
 
\
 
(图5.6)
 
高级共享除了可以修改共享名外,方便大家记忆或更直观描述。(简单共享不可以修改,共享文件夹名就是本身)注释可以详细描述该共享文件夹的用途,便于查找和今后的管理。还可以设置共享用户的数量(默认是下图就是一个天文数字,比WINDOWS 7系统提供的20用户大的多)还可以详细设置用户的访问权限。如下图5.7
 
\
 
(图5.7)
创建完毕后即可以通过\\主机名\共享文件夹名 访问了,如下图5.8
 
\
 
图5.8)注意:通过主机名访问共享文件夹:如果是同网段的计算机正常情况下没有任何问题,但是如果是跨网段的计算机如果没有WINS或DNS服务器提供主机名解析,就会产生问题。下图5.9
 
\
 
(图5.9 同网段计算机通过主机名访问共享文件夹,提示输入授权账号)

请看下面跨网段计算机通过主机名访问共享文件夹的结果,如下图5.10  www.it165.net
 
\
 
(图5.10 跨网段计算机利用主机名访问共享文件夹无法访问)

原因很简单,因为主机名无法解析,域环境用户无此问题,如果遇到该问题,说明DNS解析有问题了。我会在以后的文章中介绍。关于授权访问共享文件夹账号的具体设置,在稍后的文章中介绍。
  第二种方法就是安装了“文件服务”后利用“服务器管理器”的“文件服务”角色管理,我个人更喜欢这种方法,因为不但是管理,查看更方便。如下图5.11
 
\
 
(图5.11)

图中很直观的列举了所有共享文件的内容(包括上文提到的默认共享等),点击右侧操作—设置共享,就可以创建共享文件夹了。我之所以喜欢这样设置,是因为这样提供了一个共享文件夹设置向导的功能,可以一步步的进行设置,非常全面。所以我个人推荐使用这种方式设置共享文件夹,如下图5.12
 
\
 
  (图5.12)
 
具体设置会在下面的介绍中详细说明。
 
六、如何连接和访问共享文件或文件夹

当我们创建完共享文件或文件夹后,第一个需要思考的问题就是如何访问这些共享文件或文件夹。一般来说,我们最常使用的方法有三种:
(一)   使用“开始”----“运行”或“资源管理器”
如果我们并不是经常访问这些共享文件夹或者一台计算机有多个人使用,我们不想让其它人知道有这样一个或几个共享文件夹存在,通常使用这种方法。如下图6.1
\
 
(图6.1)
其实前言已提及,连接共享使用\\服务器名或IP\共享文件夹 的通用命名约定(Universal naming convention,简称UNC)来访问,可能一说到简称UNC很多人都听说过。
还有一种方法就是使用资源管理。当你双击“我的电脑”打开一个窗口的时候,实际上就是启动了资源管理(Windows Explorer)然后在地址栏中输入共享文件夹的UNC。如下图6.2
 
\
 
(图6.2)
(二)   利用映射网络驱动器
如果用户每天甚至更频繁的要访问这些共享文件夹,每次都要在“开始”-”运行“中输入共享文件夹的UNC,显然很麻烦。将远程计算机的共享文件夹映射成一个本地驱动器盘符。这样,就感觉是本地计算机的一个逻辑磁盘。如下图6.2-A
 
\
 
(图6.2-A)
设置远程共享文件夹的地址,如下图6.2-B
 
\
 
(图6.2-B)
我们可以在“我的电脑中”看到映射的图标和地址,如下图6.2-C
 
\
 
(图6.3-C)
 
(三)   利用NET USE命令

这是很多系统管理员喜欢使用的方法。甚至在AD中,就是利用NET USE命令结合组策略,可以给相关的计算机或账户将远程计算机的共享文件夹映射驱动器。(关于这一点,在稍后介绍)
命令语法:net use Driveletter(Z:)  \\servername\sharename      如下图6.3
 
\
 

(图6.3)

七、  共享文件夹的匿名访问与授权访问

((一)匿名访问
我们共享文件或文件夹通常处于两种目的:第一种,类似集中发放的文件或文件夹共享。比如你有一个文档或电子书,任何人都可以远程访问你共享的文件夹下载这个文档或电子书。这种情况下是谁来访问并不重要。因为任何人都可以,如下图7.1

\
 
(图7.1)
我们并不关心是用户A还是用户G取走了共享文件夹X中的内容。因为里面的内容就是给大家共享使用的。这种情况下使用匿名访问就很方便了。WINDOWS SERVER系统中有一个匿名用户GUEST,默认情况下这个账号是禁用的,不要为了要想匿名访问,就需要启用这个账号了。如下图7.2
 
\
 
    (图7.2)
在WINDOWS SERVER 2008 R2中,被禁用的账号由一个向下的黑色箭头,我们只要在账户属性中勾选“禁用该账号”取消掉就可以了。实际上单单启动匿名账号还不能完成匿名访问,我们需要设置文件夹的共享权限和NTFS权限。我们拿“WL”共享文件夹举例,如下图7.3 www.it165.net
 
\
 
(图7.3)
 
实际上我们之前说了WIN7&2008R2的时代有两种设置共享的方法,一种是普通共享,一种是高级共享,今天还要强调的是,文件夹共享同时受到共享权限和NTFS权限双重联合控制。通过图7.3的上文我们可以了解到,通过网络访问共享文件夹的时候首先要通过“共享权限”的验证,然后再通过“NTFS权限”的验证。(NTFS权限控制本地访问)只有通过两者的授权才能正常的访问被共享的文件夹,很多人就是在这里设置不当,造成共享文件夹无法访问。匿名访问的设置其实很简单,就是“共享权限”和“NTFS权限”中设置”everyone”组读权限即可,如下图7.4-A和7.4-B
 
\
 
(图7.4-A 共享文件夹“WL”的共享权限设置,everyone组可读)
 
\
 
(图7.4-B “WL”共享文件夹的NTFS权限设置,everyone组可读)
按照这样设置后,只要访问“WL”共享文件夹就不需要身份认证了,不会弹出身份认证的窗口。如下图7.5
 
\
 
(图7.5)
 
由于设置了只读模式,所以只能读取和运行文件夹中的文件和目录,无法删除该目录中的文件和新增文件。我们测试一下,如下图7.6-A和7.6-B
 
\
 
(图7.6-A试图添加一个文件到该WL中,失败)
 
\
 
(图7.6-B试图删除一个文件,失败,注意看提示呦!)
如果是匿名共享,我认为上面的方法从安全的角度来说是可取的。我们不需要知道谁来取得共享文件夹中的文件,我们允许任何人读取共享文件中的文件,并且可以复制到本机。但是不允许修改共享文件夹中的内容,包括删除。

(二)可怕的Everyone组
 
我思考了一下,觉得还是要先说一下这个everyone组,并且给了“可怕的”这个定语,因为这个everyone组确实很可怕。可能有人会问我为什么?很抱歉,我一直想写一篇关于WINDOWS用户组管理方面的博文,但是一直还没有,我将来会在那个文章中详述,因为这个everyone组实际上是组嵌套中那个最大的容器。通俗一点说,这个EVERYONE组包含了默认的管理员账号、来宾账号和计算机默认所有的组。所以在设置权限的时候一个不小心,就会出问题。很多人在设置共享权限的时候就是喜欢用EVERYONE组,但是又没有搞清楚这个组的恐怖所在,贸然使用,最后导致始终无法设置成自己想要的权限。现在我们来看一个小小的实验,下面有一个用户z00w00,在共享权限和NTFS权限中都设置了可读/写权限,按理说修改个文件名不在话下吧,我就是在看似八竿子打不着的everyone组中设置了写入拒绝,结果z00w00就不能改用户名了。看下图7.7-A和7.7-B
 
\
 
(图7.7-A 注意看下图7.7-B read me.txt)
 
\
 
(图7.7-B 文件名Read me.txt 改为”read me111.txt”)
我们来看一下权限的设置,我是用z00w00这个账号通过网络访问这个WL文件夹的。如下图7.8-A和7.8-B
 
\
 
(图7.8-A WL的共享权限)
注意:我只给了z00w00这个账号读写权限,everyone组只有读权限
 
\
 
(图7.8-B WL文件夹的针对Z00W00账号的NTFS权限)
注意:z00w00我都给了修改权限,所以上面就可以修改文件名,Everyone组权限是什么不重要。接下来就是见证奇迹的时刻,我就修改Everyone组权限写入拒绝,那么结果就是z00w00通过网络访问共享文件夹WL的时候,无法修改文件名了。如下图7.9
 
\
 
(图7.9)
 
下面我们把read me111.txt改为read me222.txt结果就是拒绝访问,如下图7.10
\
 
(图7.10)
 
非常有意思的windows的NTFS权限和LINUX是不同的,既然我们领略到everyone组的拒绝写入权限已经造成了该文件不可更名,实际上它还禁止了在这个文件(实际上包括所有的三个文件)中写入,和保存在WL文件夹中。我们现在实验一下印证理论,如下图7.11-A和7.11-B
 
\
 
(图7.11-A 因为没有拒绝读权限,所以可以打开该文档)
 
\
 
图7.11-B 写入”9. Bye”)
现在我们保存一下看看,如下图7.12
 
\
 
(图7.12 保存原文本文件)
结果就是拒绝访问,如下图7.13
 
\
 
(图7.13)
好吧,我们现在另存一下,如下图7.14
 
\
 
(图7.14 另存为Read me222.txt)
结果仍然是拒绝好不啦,如下图7.15
 
\
 
(图7.15)
但是,我们是可以删除这个文件的,现在我们尝试删除一下,如下图7.16
 
\
 
(图7.16)
结果证明已经删除了,如下图7.17,神奇吧!
 
\
 
(图7.17)
等等,我还没有说完,还记得我刚才说的Everyone组是很恐怖的,默认所有账号和组都是它的成员,这一点连administraotr都不会放过的。怎么不相信,我利用远程桌面用administrator账号登录进去,现在把一个新Read me.txt文件复制到WL文件夹中去,如下图7.18
 
\
 
(图7.18)哈哈,怎么样,知道厉害了吧。所以,我们一定要慎用Everyone组,特别是“拒绝权限” 一旦拒绝,所有账号和组都是被牵连的呦!
 
转自:http://www.it165.net/
 
原文地址:https://www.cnblogs.com/simplty/p/2822102.html