在 Linux 虚拟机上格式化和装载非启动磁盘


如果您将新的空白磁盘挂接到虚拟机,则必须先格式化并装载磁盘,然后才能使用磁盘。如果挂接的磁盘已包含数据,则必须先装载该磁盘,然后才能使用它。

准备工作

连接到虚拟机

  1. 转到虚拟机实例页面。转到“虚拟机实例”页面
  2. 点击挂接了新磁盘的实例旁的 SSH 按钮。浏览器会建立连到该虚拟机的终端连接。

在 Linux 虚拟机上格式化非启动磁盘

执行此任务所需的权限

  1. 在终端中,使用 lsblk 命令列出挂接到您的实例的磁盘,并找到您要格式化和挂接的磁盘。
    lsblk
    NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    loop0 7:0 0 63.5M 1 loop /snap/core20/2015
    loop1 7:1 0 340.5M 1 loop /snap/google-cloud-cli/167
    loop2 7:2 0 91.9M 1 loop /snap/lxd/24061
    loop3 7:3 0 40.9M 1 loop /snap/snapd/20092
    sda 8:0 0 100G 0 disk
    ├─sda1 8:1 0 99.9G 0 part /
    ├─sda14 8:14 0 4M 0 part
    └─sda15 8:15 0 106M 0 part /boot/efi
    sdb 8:16 0 3T 0 disk
    在本示例中,sdb 是新的空白永久性磁盘的设备名称。
  2. 使用 mkfs 工具格式化磁盘。此命令会删除指定磁盘中的所有数据,因此请确保正确指定磁盘设备。您可以使用任何想要的文件格式,但我们建议您使用单个 ext4 文件系统,而不使用分区表。您可以在稍后增加磁盘大小,而无需修改磁盘分区。为了最大限度地提高磁盘性能,请在 -E 标志中使用推荐的格式化选项。无需在此辅助磁盘上为根卷保留空间,因此请指定 -m 0 以使用所有可用的磁盘空间。 $ sudo mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/DEVICE_NAME 将 DEVICE_NAME 替换为要格式化的磁盘的设备名称。对于本示例,请指定 sdb 以格式化整个磁盘而不创建分区表。

装载磁盘

  1. 创建用作虚拟机上新磁盘装载点的目录。您可以使用任何目录。以下示例在 /mnt/disks/ 下创建了一个目录。$ sudo mkdir -p /mnt/disks/MOUNT_DIR 将 MOUNT_DIR 替换为要装载磁盘的目录。
  2. 使用 mount 工具将磁盘装载到实例,并启用 discard 选项:$ sudo mount -o discard,defaults /dev/DEVICE_NAME /mnt/disks/MOUNT_DIR 请替换以下内容:
    • DEVICE_NAME:要装载的磁盘的设备名称。
    • MOUNT_DIR:要装载磁盘的目录。
  3. 配置对磁盘的读写权限。对于本示例,请为所有用户授予对磁盘的写入权限。$ sudo chmod a+w /mnt/disks/MOUNT_DIR 将 MOUNT_DIR 替换为装载磁盘的目录。

配置虚拟机重启时的自动装载

请将磁盘添加到 /etc/fstab 文件中,以使该磁盘在虚拟机重启时自动重新装载。在 Linux 操作系统上,设备名称在每次重启时可能会发生变化,但设备 UUID 始终指向同一个卷,即使您在系统间移动磁盘也是如此。因此,我们建议您使用设备 UUID(而不是设备名称)来配置虚拟机重启时的自动装载。注意:在 Container-Optimized OS 上,对 /etc/fstab 进行的修改在系统重新启动后不会保留。如需确保在启动期间检查并装载设备,请从 cloud-config 的 bootcmd 部分对磁盘执行 fsck 和 mount 操作。如需了解如何装载和格式化磁盘,请参阅 Container-Optimized OS 文档。

  1. 创建当前 /etc/fstab 文件的备份。
    $ sudo cp /etc/fstab /etc/fstab.backup
  2. 使用 blkid 命令列出磁盘的 UUID。
    $ sudo blkid /dev/DEVICE_NAME
    请替换以下内容:
    • DEVICE_NAME:您要自动装载的磁盘的设备名称。如果您在磁盘上创建了分区表,请通过添加附加到设备名称的后缀来指定您要装载的分区。例如,如果 sdb 是磁盘的设备名称,sdb1 可能是分区的名称。
  3. 在文本编辑器中打开 /etc/fstab 文件,并创建一个包含 UUID 的条目。例如:
  4. UUID=12345678-1111-aaaa-bbbb-1234abcd1a2b /mnt/disks/MOUNT_DIR ext4 discard,defaults,nofail 0 2
    请替换以下内容:
    • UUID_VALUE:在上一步的输出中列出的磁盘 UUID
    • MOUNT_DIR:装载了磁盘的目录
    • MOUNT_OPTION:指定操作系统在启动时无法装载地区永久性磁盘的情况下要执行的操作。如需了解有效值,请参阅 Linux fstab 文档中的第四个字段。如需让系统在磁盘不可用时也能启动,请使用 nofail 装载选项。
  5. 使用 cat 命令验证您的 /etc/fstab 条目内容正确:
    $ cat /etc/fstab LABEL=cloudimg-rootfs / ext4 defaults 0 0 UUID=d761bdc5-7e2a-4529-a393-b9aefdb623b6 /mnt/disks/MOUNT_DIR ext4 discard,defaults,nofail 0 2

如果您分离了此磁盘或从此虚拟机的启动磁盘创建快照,请修改 /etc/fstab 文件并移除此磁盘所对应的条目。即使将 MOUNT_OPTION 设置为 nofail 或 nobootwait,您也应该使 /etc/fstab 文件与挂接到实例的设备保持同步,并在创建启动磁盘快照或分离磁盘前移除这些条目。

LEAVE A COMMENT