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

使用门户将数据磁盘附加到 Linux VM

适用于: ✔️ Linux 虚拟机 ✔️ 灵活规模集

本文介绍如何通过 Azure 门户将新的磁盘和现有磁盘附加到 Linux 虚拟机。 还可以 将数据磁盘附加到 Azure 门户中的 Windows VM。

在 Azure 门户中查找 Linux VM

执行以下步骤:

  1. 转到 Azure 门户 以查找 VM。 搜索并选择“虚拟机”。

  2. 从列表中选择要附加磁盘的 VM。

  3. 在 “虚拟机 ”页的 “设置”下,选择“ 磁盘”。

在 Azure 门户中附加新的托管数据磁盘

执行以下步骤:

  1. 在“ 磁盘 ”窗格的 “数据磁盘”下,选择“ 创建”并附加新磁盘。

  2. 输入托管磁盘的名称。 查看默认设置,并根据需要更新 存储类型、 大小(GiB)、 加密 和 主机缓存 。

    Azure门户数据磁盘窗格的屏幕截图,其中显示了新托管磁盘的 LUN、磁盘名称、存储类型、大小、加密和主机缓存设置。

  3. 完成后,选择页面顶部的“ 保存 ”以创建托管磁盘并更新 VM 配置。

在 Azure 门户中附加现有托管数据磁盘

执行以下步骤:

  1. 在“ 磁盘 ”窗格 的“数据磁盘”下,选择“ 附加现有磁盘”。

  2. 选择 磁盘名称 的下拉菜单,然后从可用托管磁盘列表中选择磁盘。

  3. 选择 “保存” 以附加现有托管磁盘并更新 VM 配置。

连接到 Linux VM 以装载新磁盘

若要对新磁盘进行分区、格式化和装载,以便 Linux VM 可以使用它,请通过 SSH 登录到 VM。 有关详细信息,请参阅如何在 Azure 中将 SSH 用于 Linux。 以下示例使用用户名“azureuser”连接到使用公共 IP 地址 10.123.123.25 的 VM :

ssh azureuser@10.123.123.25

在 Linux 中查找附加的数据磁盘

Azure Linux VM 可以通过 SCSI 或 NVMe 控制器公开托管磁盘。 选择 VM 使用的控制器类型。 有关控制器类型的详细信息,请参阅 SCSI 到 NVMe 转换。

使用 lsblk 列出带有 SCSI 控制器的 VM 上的磁盘:

lsblk -o NAME,HCTL,SIZE,MOUNTPOINT | grep -i "sd"

输出类似于以下示例:

sda     0:0:0:0      30G
├─sda1             29.9G /
├─sda14               4M
└─sda15             106M /boot/efi
sdb     1:0:1:0      14G
└─sdb1               14G /mnt
sdc     3:0:0:0       4G

在此示例中,添加的磁盘为 sdc. 它使用 LUN 0,容量为 4 GiB。

再来看一个更复杂的示例,下面是多个数据磁盘在门户中的显示效果:

三个Azure托管数据磁盘的屏幕截图:LUN 0 处的 4 GiB 高级 SSD、LUN 1 的 16 GiB 高级 SSD 和 LUN 2 的 32-GiB 标准 HDD。

在映像中,可以看到三个数据磁盘:LUN 0 上的 4 GiB、LUN 1 上的 16 GiB 和 LUN 2 上的 32 GiB。

从 lsblk 的输出中可以看到,LUN 0 处的 4 GiB 磁盘是 sdc,LUN 1 处的 16 GiB 磁盘是 sdd,LUN 2 处的 32 GiB 磁盘是 sde。

sda     0:0:0:0      30G
├─sda1             29.9G /
├─sda14               4M
└─sda15             106M /boot/efi
sdb     1:0:1:0      14G
└─sdb1               14G /mnt
sdc     3:0:0:0       4G
sdd     3:0:0:1      16G
sde     3:0:0:2      32G

在 Linux 中准备新的空数据磁盘

Important

如果使用包含数据的现有磁盘,请跳到 装载磁盘。 以下说明删除磁盘上的数据。 在格式化磁盘之前,请验证是否已确定正确的磁盘。

如果要附加新磁盘,则需要对磁盘进行分区。

使用 parted 实用工具对数据磁盘进行分区,并使用 mkfs.xfs XFS 文件系统格式化分区。

  • 使用适用于你的发行版的 parted 最新版本。
  • 如果磁盘大小为 2 TB(TiB)或更大,则必须使用 GPT 分区。 如果磁盘小于 2 TiB,则可以使用 MBR 或 GPT 分区。

以下示例使用 parted 在 /dev/sdc,其中第一个数据磁盘通常位于大多数 VM 内。 将 sdc 替换为适用于您的磁盘的正确选项。 该示例使用 XFS 文件系统格式化分区。

sudo parted /dev/sdc --script mklabel gpt mkpart xfspart xfs 0% 100%
sudo partprobe /dev/sdc
sudo mkfs.xfs /dev/sdc1

使用 partprobe 实用工具确保内核能够识别新的分区表。 如果不使用 partprobe, blkid 或 lsblk 命令可能不会立即返回新文件系统的 UUID。

在 Linux 中装载数据磁盘

使用 mkdir以下命令创建目录以装载文件系统:

sudo mkdir /datadrive

使用 mount 装载文件系统。

将 /dev/sdc1 替换为你在具有 SCSI 控制器的 VM 上识别出的数据磁盘对应的分区。

sudo mount /dev/sdc1 /datadrive

将驱动器添加到 /etc/fstab 文件,以确保在重新启动后自动添加驱动器。

确保 /etc/fstab 中使用 UUID(通用唯一标识符),以引用驱动器而不是设备名称,例如 /dev/sdc1 或 /dev/nvme0n2p1。 如果 OS 在启动过程中检测到磁盘错误,使用 UUID 可以避免将错误的磁盘装载到给定位置。 然后,剩余的数据磁盘将被分配相同的设备 ID。 若要查找新驱动器的 UUID,请使用 blkid 该实用工具。

sudo blkid

以下输出来自具有 SCSI 控制器的 VM。 在具有 NVMe 控制器的 VM 上,托管数据磁盘分区显示为 NVMe 路径,例如 /dev/nvme0n2p1 ,而不是 /dev/sdc1。

/dev/sda1: LABEL="cloudimg-rootfs" UUID="11111111-1b1b-1c1c-1d1d-1e1e1e1e1e1e" TYPE="ext4" PARTUUID="1a1b1c1d-11aa-1234-1a1a1a1a1a1a"
/dev/sda15: LABEL="UEFI" UUID="BCD7-96A6" TYPE="vfat" PARTUUID="1e1g1cg1h-11aa-1234-1u1u1a1a1u1u"
/dev/sdb1: UUID="22222222-2b2b-2c2c-2d2d-2e2e2e2e2e2e" TYPE="ext4" PARTUUID="1a2b3c4d-01"
/dev/sda14: PARTUUID="2e2g2cg2h-11aa-1234-1u1u1a1a1u1u"
/dev/sdc1: UUID="33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e" TYPE="xfs" PARTLABEL="xfspart" PARTUUID="c1c2c3c4-1234-cdef-asdf3456ghjk"

在 /etc/fstab 中配置自动装载

注释

错误地编辑 /etc/fstab 文件可能会导致系统无法启动。 如果没有把握,请参考分发的文档来获取有关如何正确编辑该文件的信息。 应在编辑之前创建 /etc/fstab 文件的备份。

接下来,在文本编辑器中打开 /etc/fstab 文件。 使用前面步骤中创建的分区的 UUID 值和装入点 /datadrive向文件的末尾添加一行。 如果使用了本文中的示例,则新行将如以下示例所示。

UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e   /datadrive   xfs   defaults,nofail   1   2

编辑完文件后,保存并关闭编辑器。

注释

之后,在不编辑 fstab 的情况下删除数据磁盘可能会导致 VM 无法启动。 大多数分发版都提供 nofail 和/或 nobootwait fstab 选项。 这些选项允许系统启动,即使磁盘在启动时无法装载。 有关这些参数的详细信息,请查阅分发文档。

nofail 选项可确保即使文件系统已损坏或磁盘在启动时不存在,VM 也会启动。 如果没有此选项,可能会遇到由于 FSTAB 错误而无法通过 SSH 连接到 Linux VM 的行为

验证 Linux 中已装载的数据磁盘

再次用于 lsblk 验证数据磁盘是否已装载到 /datadrive。

lsblk -o NAME,HCTL,SIZE,MOUNTPOINT | grep -i "sd"
sda     0:0:0:0      30G
├─sda1             29.9G /
├─sda14               4M
└─sda15             106M /boot/efi
sdb     1:0:1:0      14G
└─sdb1               14G /mnt
sdc     3:0:0:0       4G
└─sdc1                4G /datadrive

在 Azure 中对 Linux 的 TRIM/UNMAP 支持

某些 Linux 内核支持 TRIM/UNMAP 操作,以丢弃磁盘上未使用的块。 此功能主要用于通知 Azure 已删除的页不再有效,可以丢弃。 此功能可以节省基于已使用存储量计费的磁盘上的费用,例如非托管标准磁盘和磁盘快照。

在 Linux VM 中启用 TRIM 支持有两种方法。 像往常一样,请参考您的发行版以了解推荐的方法:

  1. 在 discard 中使用 挂载选项,例如:

    UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e   /datadrive   xfs   defaults,discard   1   2
    
  2. 在某些情况下,discard 选项可能会影响性能。 或者,可以从命令行手动运行 fstrim 命令,或将其添加到 crontab 以定期运行:

    Ubuntu

    sudo apt-get install util-linux
    sudo fstrim /datadrive
    

    RHEL

    sudo yum install util-linux
    sudo fstrim /datadrive
    

    SUSE

    sudo zypper install util-linux
    sudo fstrim /datadrive