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

Can I rely on a GUID strategy to create unique folders on a SAN shared by multiple cloned Windows servers?

[那些伸手去拿重复按钮的人请注意:现在是 2017 年 7 月。这个问题与过去的问题几乎重复,但是提出这个问题的部分原因是为了阐明是否随着技术的变化,答案也随着时间而改变。此外,这个问题更多地是关于如何从多个克隆的 Web 服务器在 SAN 上快速创建可靠的唯一文件夹。我找不到这个问题的副本,但很乐意指出最近的一个例子。]

问题 - 多个克隆的 MS 2008+ 服务器是否有可能产生相同的 GUID 值?

上下文:

我正在调查共享 SAN 上多台服务器创建唯一文件夹的情况。想象一个网络农场,其中有许多使用相同文件存储的网络服务器。 [请避免 'Why do it like that' 回复。]

这是一个基于 C#/Dot Net 的解决方案 运行,适用于 MS Windows 服务器 2008+。

GUID 是一个自然而然的工具,因为如果不对磁盘上给定 GUID 的文件夹进行物理检查,它可以提供最小的开销(因为这会引入耗时的网络和磁盘读取开销)。

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

研究:

在这个question from 2008中,发帖者询问了UUID/GUID的唯一性。

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

我早就知道计算机中的 'random' 函数是有种子的,因此不是随机的。我读到 GUID 最初部分是从设备 MAC 地址生成的,因此很有可能是唯一的。但后来我读到 MAC 地址的这种使用已被淘汰,这让我回过头来考虑旧的 'rnd()' 播种问题或其等效问题,并思考跨多个服务器的实际唯一性的影响.

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

Path.GetRandomFileName v's Guid.NewGuid 上可能有用的问题。

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

在我的研究过程中,我发现很多人都在谈论 GUID 冲突的可能性微乎其微。但由于我一直在买彩票,我想我相信即使是微乎其微的机会也会发生。

提醒一下,我需要一种方法让多个 Windows 服务器在共享 SAN 上创建唯一的文件夹。这个问题是关于单独使用 guid 的,我的结论是,虽然接受了很小的机会,但可能会发生冲突。

我在这里的方法是在其配置中为每个服务器分配一个唯一的服务器 ID,并将该 ID 预先附加到文件夹名称。然后我将使用 Dot Net

Path.GetRandomFileName()

用于生成文件夹名称的第二部分的函数。我相信,这会给我一个 100% 唯一的文件夹名称,尽管 instance-rollout 脚本会涉及更多一些。参见 this link for info on GetRandomFileName()