![在 Linux VM 角色中装载 Azure blob 容器](https://linux22.com/image/595074/%E5%9C%A8%20Linux%20VM%20%E8%A7%92%E8%89%B2%E4%B8%AD%E8%A3%85%E8%BD%BD%20Azure%20blob%20%E5%AE%B9%E5%99%A8.png)
我之前问过一个有关这个主题的问题,但现在我更愿意从头重写它,因为当时我非常困惑。
我目前在 Azure 中有一个 Linux XS VM 角色。我基本上想使用 VM 而不是 Azure 更昂贵的 Web 角色来创建自我管理和演进的托管服务。我还想利用负载平衡(VM 角色之间)和地理复制(存储角色),确保客户的“Web 文件”位于定义且可管理的位置。
我发现在 Linux VM 中“安装”驱动器的一种方法这里并涉及将 VHD 安装到虚拟机上。据我所知,VHD 可靠地存储在存储角色中,并由使用它的 VM 独占锁定。一旦 VM 角色拥有其驱动器,我就可以将分区格式化为我想要的任何大小。我不想那样!
我希望每个托管站点都有自己的 blob 目录,然后每个复制/负载平衡的 VM 角色都像在 NFS 中一样挂载 rw 目录来读取 HTML 和脚本文件。数据库显然是微软提供的 :)
我的问题是
是否可以将mount
blob 存储到 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 服务