从事服务器管理工作多年,多次实施了Windows文件服务器的迁移项目,有一些心得和体会,今天写下来和大家分享一下。

 

一般来说,文件服务器主要有以下两大类数据需要迁移

1.   提供给各部门的共享目录

2.   提供给用户的个人盘

首先,介绍微软提供的文件迁移专用工具,它可以帮助我们迁移共享目录和用户个人盘的数据。然后,我们需要对个人盘的共享做一些特殊操作让它能够满足我们的使用要求。闲话少说,让我们马上来看一下吧。

PART1对提供给部门使用的共享目录迁移,面临的最大问题是要把共享目录(包含所属的目录权限设置)完全转移到新的服务器上。手工复制,粘贴文件非常繁琐,既不能把文件所属的权限信息复制到新服务器,需要事后手工添加权限。而且极可能出现复制到一半,因个别文件出错,导致整个进程意外中断的问题,要返工重新来过,那就悲催了。

微软为我们提供了一个文件迁移的专用工具,FSMT(File Server Migration Toolkits)。最新版本是v1.2,可以到这个地址下载 (http://www.microsoft.com/en-us/download/details.aspx?id=10268 )。这个工具可以迁移微软DFS文件夹和普通的共享文件夹,迁移所有内容和对应的权限到新的服务器上面。

首先把FSMT安装到目标服务器上,软件的主界面如下图,

FSMT软件截图

我们可以利用向导创建一个迁移项目,主要步骤如下:

1.  指定需要迁移的共享目录,一般是旧的文件服务器的共享目录

2. 复制文件到新服务器,复制时间由文件数量和大小决定,复制过程中共享目录仍然可以继续使用,不受影响。这也是为了帮我们减少中断服务的时间。全部复制完成后会进入“Ready to finalize”步骤,见上图

3.   确认进行迁移切换( Finalize )。在这个步骤在旧服务器上的共享被取消,系统扫描新旧服务器,对比所有不同,进行数据修正并最终执行迁移切换,为新服务器启动目录共享。到这一步才真正出现文件服务的中断。

4.  完成所有任务 ,你可以查看迁移报告。

完成上面所有步骤以后,只要在客户端电脑上验证一下共享目录是否可用就大功告成了。

这里不想过多介绍操作细节,具体FSMT文件服务迁移工具的使用,可以参阅下面的文章 http://hi.baidu.com/ysljejvwbhbijnd/item/b518e72410905c8e6f2cc313

当然上面所有操作的前提是新旧服务器必须能通过网络连通,你必须是新旧两台服务器的本地管理员,否则无法进行迁移操作。

小提示:在域环境下,我们通常会利用脚本为客户端电脑映射一个网络盘,方便用户使用共享目录。在你完成文件服务器的迁移以后,记得更新你的脚本,把它映射到新的服务器上面。具体命令如下:

Net Use P: \\MyServer\MyShare

PART2有些公司会为每个用户开通一个个人盘,配上磁盘配额(例如:1GB),让用户保存自己的重要数据。如果所有用户都应用相同的磁盘配额那还好。把数据迁移好以后,在新服务器上重新设定磁盘配额就可以。可是,如果为不同用户设定了不同的配额值,那么迁移后要为每个用户添加配额信息绝对是一件很繁琐的事情。

磁盘配额截图

还好,微软也想到了这个问题,它在“Quote Entries”里面为我们设计了配额信息导入/导出功能,这样只要在旧服务器上“导出”配额数据,然后把导出的配额信息文件复制到新服务器上,选择“导入”即可。

如果公司使用Net Use S: \\MyServer \%USERNAME%$ 来映射上面提到的个人盘,那么个人盘的共享名称必须和用户在AD中的用户名相同。使用FSMT迁移以后, 微软会多手给每个迁移过来的共享目录添加一个前缀,旧服务器名加上一个下划线“ServerName_FolderName”。这时候我们要用脚本导出新旧文件服务器上的目录名。导出目录名称的参考代码(.vbs) 如下:

strComputer = "."

Const ForAppending = 8

Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objTextFile = objFSO.OpenTextFile _

    ("ScriptLog.txt", ForAppending, True)

Set objWMIService = GetObject("winmgmts:" _

    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colSubfolders = objWMIService.ExecQuery _

    ("Associators of {Win32_Directory.Name='u:\users'} " _

    & "Where AssocClass = Win32_Subdirectory " _

    & "ResultRole = PartComponent")

For Each objFolder in colSubfolders

objTextFile.WriteLine(objFolder.Name)

Next

接着,利用EXCEL处理导出的内容,用Net Share命令把用户和他的个人目录做一一对应,作成以下命令格式,并保存成bat文件。到新的文件服务器上执行。这个命令会帮我们开启共享并设置共享权限。

Net Share Username$=u:\users\<目录名> /Grant:Everyone,CHANGE /Unlimited

上面介绍的方法是基于传统的文件服务器迁移,我们需要安装新的文件服务器,然后执行迁移操作。当文件和目录数量较多时,需要投入大量的人力和时间来做迁移。我曾经使用上述方法迁移过2.5TB数据,花费了大约3天多的时间。当进入云时代,虚拟化技术可以帮我们使迁移过程更简单。下次再和大家探讨吧。