部署在 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 临时磁盘的主要内容,如果未能解决你的问题,请参考以下文章