你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。

在 Azure Cloud Shell 中持久保存文件

首次启动 Cloud Shell 时,系统会提示你选择存储选项。 如果要保存每次使用 Cloud Shell 时都可以使用的文件,则必须创建新的存储资源,或选择现有的存储资源。 Cloud Shell 使用 Microsoft Azure 文件存储共享跨会话持久保存文件。

Cloud Shell 存储的工作原理

Cloud Shell 通过以下两种方法持久保存文件:

  • 创建磁盘映像以包含 $HOME 目录的内容。 磁盘映像会保存到 https://storageaccountname.file.core.windows.net/filesharename/.cloudconsole/acc_user.img。 Cloud Shell 会自动同步对此磁盘映像的更改。
  • 将文件共享装载为 $HOME 目录中的 clouddrive。 /home/<User>/clouddrive 路径会映射到 storageaccountname.file.core.windows.net/filesharename。

注意

$HOME 目录中的所有文件(如 SSH 密钥)都会保存在您的用户磁盘映像(存储于已装载的文件共享中)中。 使用最佳实践来保护你的 $HOME 目录和已装载文件共享中的信息。

支持的存储区域

Cloud Shell 在一组主要区域中运行会话机器。 你可以将持久文件存储在位于主区域或支持的次要区域的存储账户中,如下表所示。

你的会话通常运行在与你存储账户关联的主要区域。 如果你使用二级存储区域或使用临时会话,Cloud Shell 会选择离你最近的主区域。 放置取决于可用容量,因此不保证定位在某个特定区域。

文件会在你存储账户的区域内保持静态,但会在会话运行所在的主要区域进行处理。 例如,存储在加拿大东部的文件会静态保留在加拿大,但如果您的会话在美国主要区域运行,文件则会在美国处理。

除非您需要将静态数据存储在其他区域,否则请为存储帐户选择一个主要区域。 使用二级存储区域可能会让文件访问和 Cloud Shell 启动变慢。

要查找你当前 Cloud Shell 机器的区域,可以在 Bash 中运行 $env:ACC_LOCATION,或在 PowerShell 中运行 echo "$ACC_LOCATION"。

主要区域

Area Regions
美国 美国东部 2,美国中南部,美国中西部,美国西部 2
欧洲 法国中部、德国中西部、瑞典中部、西欧
亚太 澳大利亚东部、澳大利亚东南部、中印度、东亚、南印度、东南亚
Azure 政府 美国亚利桑那州政府,美国弗吉尼亚州政府

次级存储区域

Area Regions
美洲 巴西南部、加拿大中部、加拿大东部、中部美国、东部美国、墨西哥中部、美国中北部、西部美国、西部美国 3
欧洲 欧洲北部、挪威东部、西班牙中部、瑞士北部、英国南部、英国西部
亚太 澳大利亚中部、日本东部、日本西部、Jio印度西部、韩国中部、韩国南部、印度西部
中东和非洲 卡塔尔中部、南非北部、阿拉伯联合酋长国北部
Azure 政府 US Gov 德克萨斯州

保护存储访问

为安全起见,每个用户应创建自己的存储帐户。 对于 Azure 基于角色的访问控制 (RBAC),用户必须具有存储帐户级别的参与者访问权限或更高访问权限。

Cloud Shell 在指定订阅内的存储帐户中使用 Azure 文件共享。 由于继承了权限,对订阅具有足够访问权限的用户可以访问订阅中包含的存储帐户和文件共享。

用户应通过在存储帐户或订阅级别设置权限来锁定对其文件的访问权限。

Cloud Shell 存储帐户包含 Cloud Shell 用户在其主目录中创建的文件,其中可能包含敏感信息(包括访问令牌或凭据)。

根据 Azure 资源策略限制资源创建

在 Cloud Shell 中创建的存储帐户都标记有 ms-resource-usage:azure-cloud-shell。 如果想禁止用户在 Cloud Shell 中创建存储帐户,请创建由此特定标记触发的 Azure 资源策略。

管理 Cloud Shell 存储

装载新的 clouddrive

如果以前选择对 Cloud Shell 使用临时会话,则必须通过在 Cloud Shell 中选择 设置>重置用户设置 来重置首选项。 按照步骤装载现有存储帐户或新存储帐户。

注意

装载新的共享时,将为 $HOME 目录创建新的用户映像。 以前的 $HOME 映像保留在以前的文件共享中。

卸载 clouddrive

可以随时卸载 Cloud Shell 文件共享。 由于 Cloud Shell 需要使用已装载的文件共享,因此,在下一个会话中,Cloud Shell 会提示你创建并装载另一个文件共享。

  1. 运行 clouddrive unmount。
  2. 确认提示。

已卸载的文件共享将继续存在,直到您手动将其删除。 卸载后,Cloud Shell 在后续会话中不再搜索此文件共享。 有关详细信息,请运行 clouddrive unmount -h,

Command
  clouddrive unmount: Unmount an Azure file share from Cloud Shell.

    Unmount enables unmounting and disassociating a file share from Cloud Shell.
    All current sessions will be terminated. Machine state and non-persisted files will be lost.
    You will be prompted to create and mount a new file share on your next session.
    Your previously mounted file share will continue to exist.

    Note: This command does not unmount storage if the session is Ephemeral.

Arguments
  None

警告

虽然运行此命令不会删除任何资源,但手动删除映射到 Cloud Shell 的资源组、存储帐户或文件共享会清除您的 $HOME 目录磁盘映像和文件共享中的任何文件。 此操作无法撤销。

使用 PowerShell 命令

获取有关当前文件共享的信息

使用 PowerShell 中的 Get-CloudDrive 命令获取有关文件共享的资源的信息。

PS /home/user> Get-CloudDrive

FileShareName      : cs-user-microsoft-com-xxxxxxxxxxxxxxx
FileSharePath      : //cs7xxxxxxxxxxxxxxx.file.core.windows.net/cs-user-microsoft-com-xxxxxxxxxxxxxxx
MountPoint         : /home/user/clouddrive
Name               : cs7xxxxxxxxxxxxxxx
ResourceGroupName  : cloud-shell-storage-southcentralus
StorageAccountName : cs7xxxxxxxxxxxxxxx
SubscriptionId     : aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e

取消挂载文件共享

随时可以使用 Dismount-CloudDrive cmdlet 卸载 Cloud Shell 文件共享。 卸载 clouddrive 会终止当前会话。

Dismount-CloudDrive
Do you want to continue
Dismounting clouddrive will terminate your current session. You will be prompted to create and
mount a new file share on your next session
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"):

后续步骤