Azure-附加磁盘

将数据磁盘附加到 Linux VM - Azure Virtual Machines

对新磁盘进行分区、格式化和装载,通过 SSH 登录到 VM

找到磁盘

连接到 VM 后,需要找到该磁盘。使用 lsblk 来列出磁盘。

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

输出如下:

1
2
3
4
5
6
7
8
9
root@jonty:/home/jonty# lsblk -o NAME,HCTL,SIZE,MOUNTPOINT | grep -i "sd"
sda 0:0:0:0 30G
├─sda1 29G /
├─sda14 4M
├─sda15 106M /boot/efi
└─sda16 913M /boot
sdb 0:0:0:1 32G
└─sdb1 32G /mnt
sdc 1:0:0:0 1T

添加的磁盘是 sdc 。它是 LUN 0,容量为 1T

准备空磁盘

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

如果磁盘大小为 2 TiB 或更大,则必须使用 GPT 分区。如果磁盘大小小于 2 TiB,则可以使用 MBR 或 GPT 分区

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

使用 partprobe 确保内核知道新的分区和文件系统。使用 partprobe 失败可能会导致 blkid 或 lslbk 命令不会立即返回新文件系统的 UUID。

挂载磁盘

创建一个目录以使用 mkdir 挂载文件系统。以下示例在以下位置 /datadrive 创建一个目录:

1
sudo mkdir /datadrive

使用 mount 挂载文件系统。以下示例将 /dev/sdc1 分区挂载到 /datadrive 挂载点:

1
sudo mount /dev/sdc1 /datadrive

要确保驱动器在重新启动后自动重新挂载,须将其添加到 /etc/fstab 文件中。建议在 /etc/fstab 中使用 UUID(通用唯一标识符)来引用驱动器,而不仅仅是设备名称(例如 /dev/sdc1)。如果操作系统在启动过程中检测到磁盘错误,则使用 UUID 可以避免将不正确的磁盘装载到给定位置。然后,将为剩余的数据磁盘分配这些相同的设备 ID。要查找新驱动器的 UUID,请使用以下 blkid 实用程序:

1
sudo blkid

输出如下:

1
2
3
4
5
6
7
root@jonty:/home/jonty# sudo blkid
/dev/sdb1: UUID="ce3acb45-d4f3-4aff-a4e4-62e7bf2fb6cf" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="d69aecb3-01"
/dev/sda16: LABEL="BOOT" UUID="9ca8192d-cb53-4d47-bedc-303f44456afb" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="15a42ecf-825e-480a-8044-f621f72a3f3f"
/dev/sda15: LABEL_FATBOOT="UEFI" LABEL="UEFI" UUID="1775-A819" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="c81a2b44-690c-4d28-bfd5-8162a9973144"
/dev/sda1: LABEL="cloudimg-rootfs" UUID="8201f4f6-4d49-413d-ab1d-e1a6b19712cc" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="973eecfe-16bc-43c2-9230-e643aee9d216"
/dev/sdc1: UUID="0a6f3a47-8ba8-49b4-bc62-47343ac3f9b8" BLOCK_SIZE="4096" TYPE="xfs" PARTLABEL="xfspart" PARTUUID="1f0ac95a-a755-48ff-a65f-dddc43009860"
/dev/sda14: PARTUUID="393a5d07-7213-4756-b50f-9c2a2d3e4af4"

不正确地编辑 /etc/fstab 文件可能会导致系统无法启动,在编辑之前先对/etc/fstab进行备份

在文本编辑器中打开 /etc/fstab 文件。使用在前面步骤中创建的 /dev/sdc1 设备的 UUID 值和 的 /datadrive 挂载点,在文件末尾添加一行:

1
2
vi /etc/fstab
UUID=0a6f3a47-8ba8-49b4-bc62-47343ac3f9b8 /datadrive xfs defaults,nofail 1 2

验证磁盘

再次使用 lsblk 来查看磁盘和装入点。

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

输出如下:

1
2
3
4
5
6
7
8
9
10
root@jonty:/home/jonty# lsblk -o NAME,HCTL,SIZE,MOUNTPOINT | grep -i "sd"
sda 0:0:0:0 30G
├─sda1 29G /
├─sda14 4M
├─sda15 106M /boot/efi
└─sda16 913M /boot
sdb 0:0:0:1 32G
└─sdb1 32G /mnt
sdc 1:0:0:0 1T
└─sdc1 1024G /datadrive

可以看到 sdc 现在已装载到 /datadrive