部署在 Azure 虚拟机上的 Web 应用:持久性 VS 临时磁盘

Posted

技术标签:

【中文标题】部署在 Azure 虚拟机上的 Web 应用:持久性 VS 临时磁盘【英文标题】:Web app deployed on Azure Virtual Machine: persistent VS temporary disk 【发布时间】:2021-01-08 07:35:10 【问题描述】:

我已通过执行以下步骤在 Azure 虚拟机上部署了 Web 应用程序后端(Python / Flask):

    创建一个 Linux 虚拟机并通过 ssh 进入它 从 github 下载我的应用程序源代码 安装 pip,创建 Python 3.6 虚拟环境并安装所有必要的 Python 包 安装 tmux 并创建一个新的 tmux 会话,然后 cd 到包含我的应用程序主脚本的文件夹(启动 Flask 应用程序的那个)并运行“python3 main.py”。 Flask 应用现已启动并运行,可以接收请求。

但是,根据我对临时 VS 永久磁盘的了解,我猜我的源代码和 Python 包现在存储在 临时磁盘 上,这意味着它们可能会因硬件故障而意外丢失,维护事件等。我的猜测是正确的还是我遗漏了什么?

如果是这样,这是否意味着我必须将永久性磁盘附加到我的 VM 并将我的所有文件存储在那里?或者有什么更方便的方法来解决这个问题(例如切换到不同的 Azure 服务)?

【问题讨论】:

【参考方案1】:

你可以得到消息here,Linux上的临时磁盘是/dev/sdb,你可以执行命令df -h然后你会看到这样的输出:

这意味着只有/mnt/路径下的文件夹存储在临时磁盘中。而且你还可以得到/路径下的所有文件夹都存储在磁盘/dev/sda中,它是OS磁盘和托管磁盘,os是永久磁盘。

这是否意味着我必须将永久性磁盘附加到我的虚拟机和 把我所有的文件都存在那里?

如果您没有特殊用途,则不必将永久性磁盘附加到您的 VM。

【讨论】:

【参考方案2】:

所有 Azure VM 都包含一个托管磁盘(操作系统所在的磁盘)和一个临时磁盘,顾名思义;是暂时的性质。在 Linux VM 上,以下内容适用(如 Microsoft docs 中所述)。

在 Azure Linux VM 上,临时磁盘通常是 /dev/sdb

因此,除非您明确使用该路径,否则您很可能没问题。

【讨论】:

以上是关于部署在 Azure 虚拟机上的 Web 应用:持久性 VS 临时磁盘的主要内容,如果未能解决你的问题,请参考以下文章

5.Azure负载均衡(上)

Linux 上的 Azure Web 应用程序 - 使 Conda 安装持久化

Azure Web App节点部署,更改应用程序根目录?

20.Azure备份Azure上的虚拟机(中)

在 Azure 中创建 Node.js Web 应用

监视 Azure 虚拟机上运行的服务/应用程序的最佳方法是啥