在 Linux VM 角色中装载 Azure blob 容器

在 Linux VM 角色中装载 Azure blob 容器

我之前问过一个有关这个主题的问题,但现在我更愿意从头重写它,因为当时我非常困惑。

我目前在 Azure 中有一个 Linux XS VM 角色。我基本上想使用 VM 而不是 Azure 更昂贵的 Web 角色来创建自我管理和演进的托管服务。我还想利用负载平衡(VM 角色之间)和地理复制(存储角色),确保客户的“Web 文件”位于定义且可管理的位置。

我发现在 Linux VM 中“安装”驱动器的一种方法这里并涉及将 VHD 安装到虚拟机上。据我所知,VHD 可靠地存储在存储角色中,并由使用它的 VM 独占锁定。一旦 VM 角色拥有其驱动器,我就可以将分区格式化为我想要的任何大小。我不想那样!

我希望每个托管站点都有自己的 blob 目录,然后每个复制/负载平衡的 VM 角色都像在 NFS 中一样挂载 rw 目录来读取 HTML 和脚本文件。数据库显然是微软提供的 :)

我的问题是

是否可以将mountblob 存储到 Linux FS 中的目录中?在 Windows Server 2008 中可以这样做吗?

答案1

首先,做一些澄清,以帮助您进一步消除困惑。

  • 您的 Linux 实例被视为虚拟机. 这些不同于现有的虚拟机角色前者是您在存储帐户中管​​理的 vhd,支持多种操作系统变体。后者是您在本地创建、上传到 Windows Azure(上传到您未管理的存储中)然后生成该 VM 角色的一个或多个实例(其工作方式类似于 web/worker 角色)。只是想澄清一下,因为您将 Linux VM 称为“VM 角色”。
  • Web 角色(或工作者角色或 VM 角色)是不是比虚拟机更贵。它们都按每小时费率计费,每个核心的标价为 0.12 美元/小时(或 XS 为 0.02 美元/小时)。
  • 存储是一种服务,而不是一种角色。Web / worker / vm“角色”本质上是虚拟机实例中运行的代码的模板(或脚手架),除了您部署的代码之外。存储是一种可通过 REST 访问的服务。

好吧,说了这么多:您找到的有关将驱动器安装到 Linux 虚拟机的说明显示了如何通过门户执行操作(并且您可以使用命令行脚本执行相同的操作)。您最多可以安装 16 个驱动器(每个核心 2 个,XS 1 个)。每个安装的驱动器都被视为整个文件系统。

如果您希望每个虚拟机都有自己的驱动器,则可以将适当的驱动器安装到每个虚拟机上(同样,每个虚拟机最多 16 个)。一旦安装了驱动器,该虚拟机就拥有对该驱动器的独占写访问权限(无驱动器共享)。这与操作系统无关:Win28K、Linux 甚至 web/worker/vm 角色中的限制相同。因此:在每个虚拟机服务的模型中只有一个网站,这很有帮助。在每个虚拟机服务于所有网站,这对您要做的事情没有太大帮助。所以...

如果您在两个虚拟机之间平衡流量,并且它们都需要访问相同的静态内容(例如网站内容),则需要考虑一件事:将静态内容直接存储在容器中的 blob(作为 zip/tar)或一系列 blob 中。然后,在启动时(或某种类型的信号),让虚拟机将所述 blob 下载到本地存储。此方法为您提供了一个存储 Web 内容的中心位置。您也可以将它们存储在 Azure 驱动器中,但我真的不认为这样做有什么价值:您必须担心只读快照驱动器,然后安装快照。与从 blob 存储中抓取文件相比,这似乎需要做很多额外的工作。

顺便说一句:复制操作将受到虚拟机大小的限制。虚拟机上的网络带宽为每核 100Mbps,但对于 XS,仅为 5Mbps。根据您要从 blob 存储复制到本地磁盘的数据量,使用 XS 可能会显得有点慢。哦,而且 blob 存储和虚拟机之间的带宽在同一个数据中心内是免费的。

希望这能回答您的问题...

答案2

最近,微软推出了Azure 共享文件夹

这些是 Linux 中的 CIFS/SAMBA 挂载。因此上面的链接自 2014 年 5 月以来的正确答案

答案3

可能的答案(尚待评估可行性)

一个选项可能是fuse文件系统。我找到了一个FUSE 的 REST 文件系统@David Makogon证实了我的想法,即 Blob 存储只不过是一种 REST 服务

相关内容