草庐IT

利用Azure存储同步服务构建垮分支机构的文件服务器资料同步

ZJUNSEN 2023-03-28 原文
Azure 文件同步是一项服务,可用于在本地 Windows Server 或云 VM 上缓存多个 Azure 文件共享。

文件将存储在云中的 Azure 文件共享中。可以通过两种方式使用 Azure 文件共享:直接装载这些无服务器 Azure 文件共享 (SMB),或使用 Azure 文件同步功能在本地缓存 Azure 文件共享。

  • 直接装载 Azure 文件共享:由于 Azure 文件存储提供 SMB 访问权限,可以使用 Windows、macOS 和 Linux 中提供的标准 SMB 客户端在本地或在云中装载 Azure 文件共享。 由于 Azure 文件共享是无服务器的,因此针对生产方案进行部署不需要管理文件服务器或 NAS 设备。 这意味着无需应用软件修补程序或换出物理磁盘。
  • 使用 Azure 文件同步在本地缓存 Azure 文件共享:借助 Azure 文件同步,可以在 Azure 文件存储中集中管理组织的文件共享,同时又能保留本地文件服务器的灵活性、性能和兼容性。 Azure 文件同步可将本地(或云中的)Windows Server 转换为 Azure 文件共享的快速缓存。
第一种方式直接挂载Azure文件共享介绍得很多了,也给大家在之前的博文中做过相关的演示,在这里我主要介绍演示第二种。

  • 如果您想更详细的规划Azure文件同步,可以参考https://docs.microsoft.com/zh-cn/azure/storage/file-sync/file-sync-planning
  • 如果对性能和文件大小数量有想了解的,可以参考https://docs.microsoft.com/zh-cn/azure/storage/files/storage-files-scale-targets?toc=/azure/storage/file-sync/toc.json
  • 结合使用 DFS 命名空间和 Azure 文件存储,可以参考https://docs.microsoft.com/zh-cn/azure/storage/files/files-manage-namespaces?toc=%2Fazure%2Fstorage%2Ffile-sync%2Ftoc.json&tabs=azure-portal
在本地我创建了一台Windows Server 2016的服务器Win2016FileSrv,使用该功能至少需要Windows Server 2012 R2以上版本;这台服务器除了系统盘以外,还有一个数据盘D盘10个G;

首先登录Azure门户,创建一个存储账户

部署好Azure存储账户以后,创建一个文件共享it-filespace01

接下来上传一些文件,方便后面演示看到效果

就上传2个文件

回到本地Win2016FileSrv服务器上的D盘创建一个文件夹为FileToSync,并在里面新建一个TXT文本mytestfile

接下来,在Win2016FileSrv服务器上安装 Azure PowerShell 模块,管理员方式打开Powershell执行Install-Module -Name Az

如果下载不下来,那么可以找一台已经安装成功的电脑拷贝如下目录到不能下载的服务器上一样的路径:

  • C:\Users\用户名\Documents\WindowsPowerShell
  • C:\Program Files\PackageManagement
安装.net framework 4.8,执行Import-Module Az.Accounts即可

回到Azure门户,创建存储同步服务

下一步,直至创建完成

接下来在Win2016FileSrv安装存储同步服务的代理

Azure 文件同步代理是一个可下载包,可实现 Windows 服务器与 Azure 文件共享的同步。

选择主机对应系统的安装文件,我这里是Windows Server 2016故选择第一个

下载完成以后,点击开始安装

下一步

下一步

下一步

勾选代理自动更新,点击安装

安装完成

接下来现在需将Win2016FileSrv注册到存储同步服务:

向存储同步服务注册 Windows Server 可在服务器(或群集)与存储同步服务之间建立信任关系。一个服务器只能注册到一个存储同步服务。它可以与存储同步服务所关联的其他服务器和 Azure 文件共享同步。

服务器注册 UI 会在 Azure 文件同步代理安装后自动打开。如果没有,可以从其文件位置手动将其打开:C:\Program Files\Azure\StorageSyncAgent\ServerRegistration.exe.

服务器注册 UI 在 Win2016FileSrv中打开后,首先会检查代理是否有更新,点击OK。

选择区域:国际版Azure、国内版Azure等,点击“Sign in”使用Azure账户密码登录

登录成功以后选择订阅,资源组和存储同步服务,然后点击“Register”注册

注册成功

接下来回到Azure门户的存储同步服务,点击刚才创建的存储同步服务HK-StorageSync01创建同步组,同步组定义一组文件的同步拓扑。同步组中必须包含一个表示 Azure 文件共享的云终结点。 此外,同步组必须包含一个或多个服务器终结点。 服务器终结点表示已注册的服务器上的路径。

创建一个同步组名称,存储账户选择最初创建的存储账户hkfilesync01,选择Azure文件共享里的it-filespace01目录,点击创建

接下来添加服务器终结点,服务器终结点表示已注册的服务器上的特定位置。例如,服务器卷上的文件夹;选择新创建的同步组Win2016FileSrv-To-HK-StorageSync01,然后选择“添加服务器终结点”

选择已注册的服务器Win2016FileSrv和D盘的路径其他保持默认即可创建

+++++++++++++++++++云分层+++++++++++++++++++++

云分层是 Azure 文件同步的一项可选功能,可减少所需的本地存储量,同时保留本地文件服务器的性能。

启用后,此功能仅存储本地服务器上经常访问的(热)文件。不常访问的(冷)文件会拆分为命名空间(文件和文件夹结构)和文件内容。 命名空间存储在本地,文件内容存储在云中的 Azure 文件共享中(有点类似OneDrive的模式)。

如果用户打开分层文件,Azure 文件同步会从 Azure 的文件共享中无缝召回文件数据。

  • 云分层策略
启用云分层后,可以设置两种策略来通知 Azure 文件同步何时对冷文件进行分层:卷可用空间策略和日期策略 。

  • 卷可用空间策略
卷可用空间策略告诉 Azure 文件同步,当本地磁盘上被占用一定量的空间时,将冷文件分层到云。

例如,如果本地磁盘容量为 200 GiB,并且你希望至少 40 GiB 的本地磁盘容量始终可用,则应将卷可用空间策略设置为 20%。卷可用空间适用于卷级别,不适用于各个目录或服务器终结点的级别。

  • 日期策略
对于日期策略,如果在 x 天内没有访问(即读取或写入)冷文件,则将这些文件分层到云。 例如,如果你注意到超过 15 天没有访问的文件通常是归档文件,则应该把日期策略设置为 15 天。

从 Windows Server 2016 开始,启用了云分层的卷上均支持重复数据删除。

云分层还有一个分层强大的功能就是主动从 Azure 文件共享召回新文件和更改的文件,什么意思呢?

比如一家公司在四川和北京都有分支机构。早上,四川的信息工作者为一个全新项目创建新文件夹和新文件,并为其工作一整天。 Azure 文件同步会将文件夹和文件同步到 Azure 文件共享(云终结点)。北京的信息工作者将在晚上继续处理该项目。 当北京团队晚上到达时,北京本地启用 Azure 文件同步的服务器需要这些新文件在本地可用,这样他们就能够有效地在本地缓存中工作。 启用此模式可防止由于按需召回而使初始文件访问变慢,并使服务器能够在 Azure 文件共享中更改或创建文件后立即主动召回它们;

跟踪服务器上的 Azure 文件共享中的更改可能会增加出口流量并产生 Azure 计费。 如果实际上本地不需要召回到服务器的文件,那么到服务器的不必要召回会产生负面影响

++++++++++++++++++初始同步+++++++++++++++++++++

+++++++++++++++++++++++++++++++++++++++++++++++++++

现在,文件在 Azure 文件共享和 Windows Server 之间进行同步,可以看到Win2016FileSrv服务器上创建的MyTestFile.txt同步上了Azure文件共享里

本地Win2016FileSrv的D盘FileToSync也自动同步下来Azure文件共享it-filespace01目录里的文件

在Azure存储同步服务里也可以看到同步状态

利用Azure存储同步服务可以实现公司跨地域的分支机构文件分发同步问题,不需要有公网IP和专线也可以实现安全传输

其次利用Azure文件共享开启软删除保护文件资料的误删除找回

如果还想更好的对同步的文件进行保护,还可以结合Recovery Services 保管库对文件共享进行备份保护

自己设定备份的频率

或者还可以对Azure文件共享做快照

接下来再说下同步时间的问题,我通过 SMB 或门户在 Azure 文件共享中直接创建了一个文件,该文件同步到同步组中的服务器需要多长时间?

  • 使用 Azure门户对 Azure文件共享所做的更改不会立即检测并复制到Win2016FileSrv,原因在于Azure文件共享没有更改通知或日记,因此无法在文件更改时自动启动同步会话;
    • 为了检测对 Azure 文件共享所做的更改,Azure 文件同步有一个称为“更改检测作业”的计划作业。 更改检测作业枚举文件共享中的每个文件,然后将它与该文件的同步版本进行比较。 当更改检测作业确定文件已更改时,Azure 文件同步会启动同步会话。 更改检测作业每 24 小时启动一次。 由于更改检测作业的工作原理是枚举 Azure 文件共享中的每个文件,因此大命名空间用时会长于较小的命名空间。 对于大命名空间,用时可能超过每 24 小时一次,才能确定哪些文件已更改。
    • 若要立即同步 Azure 文件共享中已更改的文件,可手动执行 Invoke-AzStorageSyncChangeDetection完成Azure 文件共享中的更改检测:先Connect-AzAccount用Azure账号登录连接,然后再使用Invoke-AzStorageSyncChangeDetection -ResourceGroupName "myResourceGroup" -StorageSyncServiceName "myStorageSyncServiceName" -SyncGroupName "mySyncGroupName" -CloudEndpointName "b38fc242-8100-4807-89d0-399cef5863bf"将整个Azure文件共享上调用更改检测,比如:Invoke-AzStorageSyncChangeDetection -ResourceGroupName "HK-RG" -StorageSyncServiceName "HK-StorageSync01" -SyncGroupName "Win2016FileSrv-To-HK-Storagesync01" -CloudEndpointName "1e53848f-65ac-4a1c-a8c7-b8bd88ee15d7"

  • 在Win2016FileSrv上,Azure文件同步使用 Windows USN 日记可在文件更改时自动启动同步会话,很快将Win2016FileSrv上的文件同步复制到Azure文件共享里;
  • 还是按照上面的方法,我新加了一台Win2019FileSrv文件服务器注册到Win2016FileSrv-To-HK-Storagesync01同步组里,Win2019FileSrv的本地同步目录为D:\Sync

在开启云分层的情况下可以看到同步下来的文件图标会出现x符号或者是“影子样式”,点击打开后需要一个下载的过程,完成后x符号消失或“影子变实物”,类似OneDrive的概念;

如果没有开启云分层的情况下2台Windows Server文件服务器都会自动把变化的文件同步到对端,同步时间取决于网络,我这以txt文本为例,大约1分钟(Azure存储同步服务在香港节点),并且不会出现文件带x符号或“影子样式”;整个过程不需要使用Invoke-AzStorageSyncChangeDetection就可以完成自动对端同步

下图是“影子样式”文件

当然我也测试了一个极端情况,同时打开2边的同一个txt文本进行编辑,前后脚保存关闭,等待1分钟后观察发现哪边最后点击保存,那么最后同步的就以哪个为最新。

就介绍到这了,感兴趣的小伙伴可以点赞收藏。

有关利用Azure存储同步服务构建垮分支机构的文件服务器资料同步的更多相关文章

  1. ruby - 使用 RubyZip 生成 ZIP 文件时设置压缩级别 - 2

    我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看ruby​​zip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d

  2. ruby - 其他文件中的 Rake 任务 - 2

    我试图在一个项目中使用rake,如果我把所有东西都放到Rakefile中,它会很大并且很难读取/找到东西,所以我试着将每个命名空间放在lib/rake中它自己的文件中,我添加了这个到我的rake文件的顶部:Dir['#{File.dirname(__FILE__)}/lib/rake/*.rake'].map{|f|requiref}它加载文件没问题,但没有任务。我现在只有一个.rake文件作为测试,名为“servers.rake”,它看起来像这样:namespace:serverdotask:testdoputs"test"endend所以当我运行rakeserver:testid时

  3. ruby-on-rails - 在 Rails 中将文件大小字符串转换为等效千字节 - 2

    我的目标是转换表单输入,例如“100兆字节”或“1GB”,并将其转换为我可以存储在数据库中的文件大小(以千字节为单位)。目前,我有这个:defquota_convert@regex=/([0-9]+)(.*)s/@sizes=%w{kilobytemegabytegigabyte}m=self.quota.match(@regex)if@sizes.include?m[2]eval("self.quota=#{m[1]}.#{m[2]}")endend这有效,但前提是输入是倍数(“gigabytes”,而不是“gigabyte”)并且由于使用了eval看起来疯狂不安全。所以,功能正常,

  4. ruby - 使用 ruby​​ 和 savon 的 SOAP 服务 - 2

    我正在尝试使用ruby​​和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我

  5. ruby-on-rails - Rails 3 中的多个路由文件 - 2

    Rails2.3可以选择随时使用RouteSet#add_configuration_file添加更多路由。是否可以在Rails3项目中做同样的事情? 最佳答案 在config/application.rb中:config.paths.config.routes在Rails3.2(也可能是Rails3.1)中,使用:config.paths["config/routes"] 关于ruby-on-rails-Rails3中的多个路由文件,我们在StackOverflow上找到一个类似的问题

  6. ruby - 具有身份验证的私有(private) Ruby Gem 服务器 - 2

    我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..

  7. ruby - 将差异补丁应用于字符串/文件 - 2

    对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl

  8. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  9. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  10. ruby - 使用 Vim Rails,您可以创建一个新的迁移文件并一次性打开它吗? - 2

    使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta

随机推荐