我可以依靠GUID策略在由多个克隆的Windows服务器共享的SAN上创建唯一的文件夹吗?

我可以依靠GUID策略在由多个克隆的Windows服务器共享的SAN上创建唯一的文件夹吗?

问题描述:

[注意那些到达重复按钮的人:它是2017年7月。这个问题与过去有近似重复,但是提出问题的部分原因是要说明随着时间的推移,答案是否随着技术发生了变化已经改变。另外,这个问题更多的是关于如何在多个克隆的Web服务器上快速创建SAN上可靠的唯一文件夹。我找不到这个问题的重复,但很高兴指出一个最近的例子。]我可以依靠GUID策略在由多个克隆的Windows服务器共享的SAN上创建唯一的文件夹吗?

问题 - 有多个克隆的MS 2008+服务器产生相同的GUID值的实用潜力?

语境:

我调查通过共享的SAN在多个服务器上创建独特的文件夹。设想一个网络服务器场,许多Web服务器使用相同的文件存储。 [请不要从'为什么那样'回答。]

这是一个基于C#/ Dot网络的解决方案,运行在MS Windows server 2008+上。

,以达到自然的工具是GUID因为它提供了最小的开销假设为给定的GUID磁盘上的文件夹中没有物理检查(因为这将引入耗时的网络和磁盘读取开销)。

但是,只有GUID实际上是唯一的跨服务器,GUID才是可行的。

研究:

在这种question from 2008,海报询问了一个UUID/GUID的唯一性。

this question from 2009中讨论了MS GUID的性能。

我知道电脑中的“随机”功能是有种子的,因此不是随机的。我读到,GUID最初是由设备的MAC地址生成的,因此具有很高的唯一性。但后来我读到这个MAC地址的使用已经退役了,这导致我回到考虑旧的'rnd()'播种问题或其等价物,并考虑了多个服务器在实际条件下唯一性的影响。

对于那些与UUID有关的统计数据的支持者,我在研究中发现的一些回复提到Birthday Paradox。我想知道这对多台服务器有何实际影响。

Path.GetRandomFileName v's Guid.NewGuid上可能存在的问题。

Dot Net Pearls在Path.GetRandomFileName后面有一个interesting article on performance算法。

+1

当涉及到GUID时,生日问题不是问题,碰撞不会发生。或者至少它发生的机会非常罕见,不值得担心。 – Stuart

+0

Thanks @Stuart,我意识到在一台机器上发生冲突的机会很小,这是否会因多台机器而发生变化?此外,有很多事情发生的机会很小,但他们'做'发生。我正在寻找一个快速,100%不冲突的解决方案。 –

在我的研究过程中,我发现很多人在谈论GUID冲突消失的概率。但是由于我一直在购买彩票,我想我相信即使是很小的机会也会发生。

提醒一下,我的需求是让多个Windows服务器在共享SAN上创建唯一文件夹。这个问题是关于单独使用guid的,我认为,尽管接受这个渺茫的机会,可能会发生冲突。

我从这里开始的做法是为每个服务器分配一个唯一的服务器ID在其配置中,并将该ID预先指定给文件夹名称。然后我将使用点网

Path.GetRandomFileName() 

函数来生成文件夹名称的第二个组件。我相信,这会给我一个100%独特的文件夹名称,但实例推出脚本将会更加复杂。见this link for info on GetRandomFileName()