我如何使用cloud-init在azure中的ubuntu VM上加载数据磁盘

2024-05-09

我一直在尝试使用 cloud-init 在 azure 中的 Ubuntu VM 上分区和安装数据磁盘。大多数在线示例都展示了如何对临时磁盘执行此操作,但没有对数据磁盘执行此操作。我尝试涉足它,但运气不佳。如果我在下面的代码中做错了什么,或者如果无法使用 cloud-init 来完成此操作,请告诉我

#cloud-config
device_aliases: {'ephemeral0': '/dev/sdb','datadisk': '/dev/sdc1'}

disk_setup:
    ephemeral0:
         table_type: mbr
         layout: True
         overwrite: False
    /dev/sdc1:
         table_type: mbr
         layout: True
         overwrite: False

fs_setup:
    - label: ephemeral0
      filesystem: ext4
      device: ephemeral0.1
      replace_fs: ntfs
    - cmd: mkfs -t %(filesystem)s -L %(label)s %(device)s
      label: '/dev/sdc1/'
      filesystem: ext4
      device: '/dev/sdc1/'
      replace_fs: ntfs

mounts:
    - ["ephemeral0.1", "/mnt"]
    - ["/dev/sdc1/", "/datadisk"]

我同意——这种常见情况的例子并不多。我认为您上面面临的部分问题是您在 disk_setup 中引用了分区而不是磁盘。

对于 Azure,附加到 VM 的第一个数据磁盘通常会被标识为/dev/sdc,第二个将是/dev/sdd, 等等。但这并不能得到保证。文档here https://learn.microsoft.com/en-us/azure/virtual-machines/troubleshooting/troubleshoot-device-names-problems表示在某些情况下可能会导致分配不同的驱动器盘符。因此,我们将使用内置别名引用磁盘。此别名保证始终使用 ARM 模板(或磁盘定义)中分配的 LUN 进行映射。这些别名遵循以下形式/dev/disk/azure/scsi1/lun#(分区别名为/dev/disk/azure/scsi1/lun#-part#).

如果您使用 ARM,模板将在 VM 定义中包含对驱动器的引用。作为该定义的一部分,您将指定 LUN 值。您可以在 cloud-init 中引用分配的值。例如,以下 ARM 代码片段将创建/dev/disk/azure/scsi1/lun0:

"dataDisks": [
{
    "lun": 0,
    "name": "[concat(variables('vmName'),'-datadisk0')]",
    "createOption": "Attach",
    "managedDisk":
    {
        "id": "[resourceId('Microsoft.Compute/disks/', 
                concat(variables('vmName'),'-datadisk0'))]"
    }
},

知道了这一点,我们就可以构建云配置的内容。首先,我们定义数据盘。我建议使用 GPT 作为表类型,以支持大于 2TiB 的磁盘和分区。

disk_setup:
    /dev/disk/azure/scsi1/lun0:
        table_type: gpt
        layout: True
        overwrite: True

接下来,我们指定磁盘的文件系统设置。我们引用每个分区并声明要使用的文件系统。

fs_setup:
    - device: /dev/disk/azure/scsi1/lun0
      partition: 1
      filesystem: ext4

最后,我们挂载分区。 cloud-init 使用的进程将创建文件夹并挂载指定的分区。我正在使用推荐的nofail(确保虚拟机在出现问题或驱动器分离时可以启动)以及noexec(这会阻止在该分区上执行二进制文件)。由于我们已将文件系统放置在 lun0 的第一个分区上,因此我们需要挂载lun0-part1.

mounts:
    - ["/dev/disk/azure/scsi1/lun0-part1", "/datadisk", auto, "defaults,noexec,nofail"]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我如何使用cloud-init在azure中的ubuntu VM上加载数据磁盘 的相关文章

  • ASP.NET Identity:使用角色授权属性在 Azure 上不起作用

    我刚刚在 Azure 上发布了带有 Identity 和 OWIN 授权的新 ASP NET MVC 网站 前端工作得很好 但后端有问题 我在管理控制器中使用 Authorize 属性来检查用户是否具有访问它所需的角色 如下所示 Autho
  • 在 azure blob 存储中就地创建 zip 文件

    我将文件存储在 Blob 存储帐户内的一个容器中 我需要在第二个容器中创建一个 zip 文件 其中包含第一个容器中的文件 我有一个使用辅助角色和 DotNetZip 工作的解决方案 但由于 zip 文件的大小最终可能达到 1GB 我担心在进
  • Microsoft Azure 数据仓库和 SqlAlchemy

    我正在尝试使用 python 的 sqlalchemy 库连接到 microsoft azure 数据仓库 并收到以下错误 pyodbc Error HY000 HY000 Microsoft ODBC SQL Server Driver
  • 提供数组作为 devops 管道的参数

    我刚刚开始使用天蓝色管道 我们希望不再使用arm模板和参数文件手动部署Azure资源 而是使用devops管道来完成此任务 虽然使用单个模板 参数的 json 文件来完成此操作很简单 但我看不到处理多个文件的明智方法 我已经看到有关使用数组
  • 将 Azure 网站迁移到 Azure 云服务

    我有一个项目 我计划将 Web 应用程序作为 Azure 网站启动 然后将其迁移到 Azure 云服务 也称为托管服务 如果需要作为扩展策略 做出这个决定是因为我了解到 Azure 网站的开发更加简单 快速 几乎不需要特定于 Azure 的
  • 基于生产的 Azure SQL 数据库沙箱

    我有一个大型 Azure Sql 数据库 我需要向团队提供一个沙箱 它是数据库的副本 但允许他们创建 sql 对象 沙箱中的数据需要与生产保持同步 我使用了弹性查询 但是性能并不理想 我查看了数据同步 但公司要求 AD 身份验证 定期恢复生
  • Azure DevOps - 使用 GUI 而不是 YAML 来编辑构建管道

    不久前 Azure DevOps 添加了对 YAML 构建管道的支持 这对于高级用户来说非常好 我明白 专业人士只使用命令行和纯文本工具 GUI 适合弱用户 原因有很多 有没有办法返回 GUI 经典编辑器 来编辑现有管道 我已禁用该功能 如
  • 如何从 Azure Web 应用程序中删除过多的响应标头信息?

    我有一个部署在 Azure Web 应用上的 MVC 项目 我正在尝试删除过多的标头信息 我尝试删除此信息的原因是因为这是标准的安全实践 参考 http www troyhunt com 2012 02 shhh dont let your
  • Azure 表存储分区键

    两个有些相关的问题 1 是否有办法获取表实体所在服务器的ID 2 使用 GUID 能否为我提供最佳的分区键分布 如果没有 那又会怎样呢 几周来我们一直在为表存储性能而苦苦挣扎 简而言之 这确实很糟糕 但我们很早就意识到使用随机分区键会将实体
  • 如何从 Azure Graph API 获取基于用户的令牌

    我有一个 Azure Active Directory 在我的 Web Api 中我有一段代码 我可以使用我在 Azure 中注册的应用程序和客户端证书从 Azure Graph Api 获取令牌 这是我现在使用的代码 public sta
  • 是否可以从同一网络上的另一台计算机访问 Azure 模拟器?

    我正在运行带有 VS 2010 SP1 和 Windows Azure SDK 1 5 的 Windows 7 x64 我希望能够在连接到同一网络的 iPhone 上调试 Web 应用程序 以缩短调试周期 IIS 正在这台计算机上运行 并且
  • 如何结合 AD B2C(MSAL) 和 CosmosDB

    我在我的 Xamarin 表单应用程序中使用 appcenter Auth 和 Data 但微软正在关闭这些服务 所以我现在需要自己做 Atm 这两个允许我使用 ADB2C 验证我的用户 然后授予他们访问 Cosmos 数据库中自己和共享内
  • 没有 MediaTypeFormatter 可用于从媒体类型为“multipart/form-data”的内容中读取类型为“HttpRequestMessage”的对象

    我正在调整最近在 NET Standard 中启动的项目以使用 Azure Functions 我有一个 HTTP 触发器 我直接从表单发布到该触发器 只有两个字段 数字输入和文件上传 当使用该函数而不引用任何其他库时 我无法在 HttpR
  • Windows Azure AppFabric 访问控制服务 (ACS) 中的 OAuth 2.0 身份提供程序

    OAuth 2 0 委派包含在 Azure AppFabric 访问控制服务中 http blogs objectsharp com cs blogs steve archive 2011 04 11 windows azure acces
  • 从服务帐户使用 Graph API 发送电子邮件

    我正在 ASP NET Core 5 C 中执行任务 需要使用 Graph API 发送电子邮件 我参考了以下文章并在 Azure 试用帐户上进行了配置 并且能够发送电子邮件 使用 NET 通过 Microsoft Graph 发送电子邮件
  • Http 标头已删除 Azure Web 应用程序

    我在 Azure 上托管的 Web 应用程序遇到问题 该应用程序是一个用于身份验证 授权的identityserver4应用程序 asp net core 此应用程序可以在本地运行 但不能在 Azure 上运行 通过跟踪来自服务器的响应标头
  • 使用 PySpark 从 azure blob 存储读取 csv 文件

    我正在尝试使用 Microsoft Azure 上的 PySpark HDInsight 集群来做一个机器学习项目 要在我的集群上进行操作 请使用 Jupyter 笔记本 另外 我的数据 一个 csv 文件 存储在 Azure Blob 存
  • 发布 Azure Webjob 时出现计划错误

    我在从 VS 2013 发布带有时间表的 Web 作业时遇到问题 我可以毫无问题地发布 按需 作业 但我希望它带有时间表 这是我在下面遇到的错误 发布时似乎找不到 Microsoft Web WebJobs Publish Tasks Cr
  • 如何在 sql azure 上运行 aspnet_regsql? [复制]

    这个问题在这里已经有答案了 可能的重复 将 ASP NET 成员资格数据库迁移到 SQL Azure https stackoverflow com questions 10140774 migrating asp net membersh
  • 删除 Azure 服务总线中的死主题

    我试图在这个问题上做足功课 但我所做的任何搜索都没有让我更接近答案 最近的命中是检测并删除 Azure 服务总线上的孤立队列 主题或订阅 https stackoverflow com questions 12334838 detect a

随机推荐

  • KineticJS - 将舞台缩放到视口

    我正在努力将默认分辨率设置为 1366x756 我会根据视口来放大和缩小它 类似于此处显示的示例 http blogs msdn com b davrous archive 2012 04 06 modernizing your html5
  • 在ansible中合并字典

    我目前正在构建一个使用 ansible 安装 PHP 的角色 并且在合并字典时遇到一些困难 我尝试了多种方法来做到这一点 但我无法让它像我想要的那样工作 A vars file my default values key value my
  • 矩阵向量变换

    我正在编写一个代码来制作软件蒙皮器 骨骼 皮肤动画 并且我正处于 优化 阶段 蒙皮器工作得很好 并且在 Core 上 1 09 毫秒内对 4900 个三角形网格与 22 个骨骼进行蒙皮Duo 2 Ghz 笔记本 我需要知道的是 1 有人可以
  • 通过单击字段启用非活动字段

    是否可以有一组非活动字段 如果单击其中一个字段 则某些字段将变为必填字段并运行某些代码段 举例来说 您显示了三个字段
  • Google 翻译 TTS API 被阻止

    Google 实施了验证码来阻止人们访问 TTS 翻译 API 我在我的移动应用程序中使用它 现在 它没有返回任何东西 如何绕过验证码 将限定符 client tw ob 添加到查询末尾 这个答案不再一致有效 如果你滥用这个IP地址 你的I
  • 重命名($project)数组中的字段 - MongoDB [重复]

    这个问题在这里已经有答案了 我有一个类似以下的文件 id 59ba903dacea50d0d7d47168 sections id 59d9dd7947ce651544c5d4c1 sectionName Section 1 id 59d9
  • ios7 绘图时出现延迟

    我有一个应用程序 在其中我正在视图上绘制一些草图 到目前为止 在我安装之前它运行良好ios7 我的应用程序使用触摸移动方法来识别运动的变化 但是当我画一条线时 触摸方法被调用 但线不会更新 直到我触摸结束ios7 所以画起来有一点点滞后 它
  • 如何在已实现特征的现有类型的枚举范围内实现特征?

    如何在已实现特征的现有类型的枚举范围内实现特征 我有这个 extern crate pnet use pnet packet ipv4 Ipv4Packet use pnet packet ipv6 Ipv6Packet enum Ethe
  • 为什么要检查 Bower 组件?

    鲍尔文档说 注意 如果您没有编写供其他人使用的包 例如 您正在构建 Web 应用程序 则应始终将已安装的包签入源代码管理 有谁能很好地回答为什么吗 如果我正在制作一个网络应用程序 我不希望我的存储库因库 X 版本的更新而混乱 我只想更新 B
  • Keycloak 社交登录 REST API

    我已经为我的 keycloak 实例启用了谷歌社交登录 但我需要将其用作休息服务 是否有可用于执行此操作的端点 Keycloak 中没有 Google 身份验证 API 但您可以使用以下方法解决它代币交换 https www keycloa
  • 在 Java 5 及更高版本中迭代 java.util.Map 的所有键/值对的最简单方法是什么?

    在 Java 5 及更高版本中迭代 java util Map 的所有键 值对的最简单方法是什么 假设K是您的密钥类型 并且V是你的值类型 for Map Entry
  • 在Powershell中,如何设置$?不将该值发送到管道?

    PS gt gci C lt
  • ApplicationEventMulticaster 未初始化 - 在多播事件之前调用“刷新”

    我正在尝试实施ehcache对于我的应用程序 但是当尝试调用服务器时 出现以下错误 java lang IllegalStateException ApplicationEventMulticaster not initialized ca
  • Xcode 7 Playground 执行 EXC_BAD_ACCESS

    在 Xcode 7 Playgrounds 中运行最简单的默认代码 得到以下错误 Playground execution failed Execution was interrupted reason EXC BAD ACCESS cod
  • 为什么在快速合并两个视频或更改背景音乐后视频变成黑屏?

    在我的 ios 应用程序中 我想合并两个视频并更改背景音乐 我尝试过 对于普通视频来说效果很好 但是 当我选择任何延时视频 然后尝试合并或更改背景音乐时 视频变成全黑屏 对于我的应用程序 我使用 swift 4 2 和 xcode 10 我
  • 在 Rails 上制作 ruby​​ 占用更少的内存

    我正在尝试运行 Ruby on Rails 项目 redmine http www redmine org 在 VPS 上 它可以工作 但需要相当多的内存 与 VPS 的其余部分相比 rails 应用程序的使用量非常少 我的服务器上也运行着
  • 有没有办法使用 i387 fsqrt 指令获得正确的舍入?

    有没有办法使用 i387 fsqrt 指令获得正确的舍入 除了改变精确模式在 x87 控制字中 我知道这是可能的 但这不是一个合理的解决方案 因为它存在令人讨厌的重入型问题 如果 sqrt 操作中断 精度模式将出错 我正在处理的问题如下 x
  • Android Youtube API 可用吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有适用于 Android 的 YouTube API 吗 如果不是 除了通过网络浏览器之外 如何从 Yo
  • Jmeter动态生成请求的json负载

    我有一个 Jmeter 测试计划 我希望 HttpSampler 发送发布请求 请求正文应包含 Json 如下所示 productIds p1 p2 我设置了一个随机变量生成器 每次调用都会返回格式正确的 ProductId 我想做的是通过
  • 我如何使用cloud-init在azure中的ubuntu VM上加载数据磁盘

    我一直在尝试使用 cloud init 在 azure 中的 Ubuntu VM 上分区和安装数据磁盘 大多数在线示例都展示了如何对临时磁盘执行此操作 但没有对数据磁盘执行此操作 我尝试涉足它 但运气不佳 如果我在下面的代码中做错了什么 或