Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
适用对象:✔️ Linux VM ✔️ 灵活规模集
本文介绍如何通过 Azure 门户将新的磁盘和现有磁盘附加到 Linux 虚拟机。 还可以 将数据磁盘附加到 Azure 门户中的 Windows VM。
将磁盘附加到 Azure 虚拟机(VM)之前,请查看以下提示:
虚拟机的大小决定了可以附加多少个磁盘。 有关详细信息,请参阅 虚拟机的大小。
执行以下步骤:
转到 Azure 门户 以查找 VM。 搜索并选择“虚拟机”。
从列表中选择要将磁盘附加到的 VM。
在 “虚拟机 ”页的 “设置”下,选择“ 磁盘”。
执行以下步骤:
执行以下步骤:
在“ 磁盘 ”窗格 的“数据磁盘”下,选择“ 附加现有磁盘”。
选择 磁盘名称 的下拉菜单,然后从可用托管磁盘列表中选择磁盘。
选择 “保存” 以附加现有托管磁盘并更新 VM 配置:
若要对新磁盘进行分区、格式化和装载,以便 Linux VM 可以使用它,请通过 SSH 登录到 VM。 有关详细信息,请参阅如何在 Azure 中将 SSH 用于 Linux。 以下示例使用用户名“azureuser”连接到使用公共 IP 地址 10.123.123.25 的 VM :
ssh azureuser@10.123.123.25
连接到 VM 后,需要找到磁盘。 在此示例中,我们使用 lsblk
来列出磁盘。
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 且为 4GB。
有关更复杂的示例,下面是门户中多个数据磁盘的外观:
在映像中,可以看到有三个数据磁盘:LUN 0 上的 4 GB、16GB(LUN 1)和 LUN 2 上的 32G。
从输出 lsblk
中可以看到,LUN 0 处的 4GB 磁盘为 sdc
LUN 1、LUN 1 处的 16GB sdd
磁盘,LUN 2 处的 32G 磁盘为 sde
32G 磁盘。
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
Importante
如果使用包含数据的现有磁盘,请跳到 装载磁盘。 以下说明删除磁盘上的数据。
如果要附加新磁盘,则需要对磁盘进行分区。
该 parted
实用工具可用于对数据磁盘进行分区和格式化。
- 使用发行版可用的最新版本
parted
。 - 如果磁盘大于或等于 2 TiB,必须使用 GPT 分区。 如果磁盘小于 2 TiB,则可以使用 MBR 或 GPT 分区。
以下示例在 parted
上使用 /dev/sdc
,那里是大多数 VM 上第一块数据磁盘通常所在的位置。 将 sdc
替换为磁盘的正确选项。 我们还使用 XFS 文件系统对其进行格式设置。
请使用 partprobe
实用程序以确保内核知晓新分区和文件系统。 无法使用 partprobe
可能会导致 blkid 或 lslbk 命令不会立即返回新文件系统的 UUID。
sudo parted /dev/sdc --script mklabel gpt mkpart xfspart xfs 0% 100%
sudo mkfs.xfs /dev/sdc1
sudo partprobe /dev/sdc1
创建一个目录来装载文件系统 mkdir
,然后使用 mount
该目录装载文件系统。 之后,将驱动器添加到 /etc/fstab 文件,以确保在重新启动后自动添加驱动器。
确保 /etc/fstab 中使用 UUID(通用唯一标识符),以引用驱动器,而不仅仅是设备名称(如 /dev/sdc1)。 如果 OS 在启动过程中检测到磁盘错误,使用 UUID 可以避免将错误的磁盘装载到给定位置。 然后为剩余的数据磁盘分配这些设备 ID。 若要查找新驱动器的 UUID,请使用 blkid
该实用工具。
sudo mkdir /datadrive
sudo mount /dev/sdc1 /datadrive
sudo blkid
/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" 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"
Nota
错误地编辑 /etc/fstab 文件可能会导致系统无法启动。 如果没有把握,请参考分发的文档来获取有关如何正确编辑该文件的信息。 应在编辑之前创建 /etc/fstab 文件的备份。
接下来,在文本编辑器中打开 /etc/fstab 文件。 使用在前面的步骤中创建的 /dev/sdc1
设备的 UUID 值和 /datadrive
装入点,在文件末尾添加一行。 如果使用了本文中的示例,则新行将如以下示例所示。
完成文件编辑后,保存并关闭编辑器。
Nota
之后,在不编辑 fstab 的情况下删除数据磁盘可能会导致 VM 无法启动。 大多数分发版都提供 nofail 和/或 nobootwait fstab 选项。 这些选项使系统在磁盘无法装载的情况下也能启动。 有关这些参数的详细信息,请查阅分发文档。
nofail 选项可确保即使文件系统已损坏或磁盘在启动时不存在,VM 也会启动。 如果不使用此选项,可能会遇到 Cannot SSH to Linux VM due to FSTAB errors
UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e /datadrive xfs defaults,nofail 1 2
现在可再次用于 lsblk
查看磁盘和装入点。 然后输出应类似于示例。
在以下示例输出中,可以看到 sdc
该输出现已装载到该位置 /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
某些 Linux 内核支持 TRIM/UNMAP 操作以放弃磁盘上未使用的块。 此功能主要用于通知 Azure 已删除的页不再有效,可以丢弃。 此功能可以节省根据消耗的存储量(例如非托管标准磁盘和磁盘快照)计费的磁盘的费用。
在 Linux VM 中有两种方法可以启用 TRIM 支持。 与往常一样,请参考您的发行版以获得推荐的方法。
discard
使用 /etc/fstab 中的装载选项,例如:```config UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e /datadrive xfs defaults,discard 1 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