Leave a Comment
如果您将新的空白磁盘挂接到虚拟机,则必须先格式化并装载磁盘,然后才能使用磁盘。如果挂接的磁盘已包含数据,则必须先装载该磁盘,然后才能使用它。
准备工作
- 如果您要使用本指南中的命令行示例,请执行以下操作:
- 安装或更新到 Google Cloud CLI 的最新版本。
- 设置默认区域和可用区。
- 如果您要使用本指南中的 API 示例,请设置 API 访问权限。
连接到虚拟机
- 转到虚拟机实例页面。转到“虚拟机实例”页面
- 点击挂接了新磁盘的实例旁的 SSH 按钮。浏览器会建立连到该虚拟机的终端连接。
在 Linux 虚拟机上格式化非启动磁盘
- 在终端中,使用
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
是新的空白永久性磁盘的设备名称。 - 使用
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
以格式化整个磁盘而不创建分区表。
装载磁盘
- 创建用作虚拟机上新磁盘装载点的目录。您可以使用任何目录。以下示例在
/mnt/disks/
下创建了一个目录。$ sudo mkdir -p /mnt/disks/MOUNT_DIR 将MOUNT_DIR
替换为要装载磁盘的目录。 - 使用 mount 工具将磁盘装载到实例,并启用
discard
选项:$ sudo mount -o discard,defaults /dev/DEVICE_NAME /mnt/disks/MOUNT_DIR 请替换以下内容:DEVICE_NAME
:要装载的磁盘的设备名称。MOUNT_DIR
:要装载磁盘的目录。
- 配置对磁盘的读写权限。对于本示例,请为所有用户授予对磁盘的写入权限。$ 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 文档。
- 创建当前
/etc/fstab
文件的备份。
$ sudo cp /etc/fstab /etc/fstab.backup - 使用
blkid
命令列出磁盘的 UUID。
$ sudo blkid /dev/DEVICE_NAME
请替换以下内容:DEVICE_NAME
:您要自动装载的磁盘的设备名称。如果您在磁盘上创建了分区表,请通过添加附加到设备名称的后缀来指定您要装载的分区。例如,如果sdb
是磁盘的设备名称,sdb1
可能是分区的名称。
- 在文本编辑器中打开
/etc/fstab
文件,并创建一个包含 UUID 的条目。例如: - UUID=12345678-1111-aaaa-bbbb-1234abcd1a2b /mnt/disks/MOUNT_DIR ext4 discard,defaults,nofail 0 2
请替换以下内容:UUID_VALUE
:在上一步的输出中列出的磁盘 UUIDMOUNT_DIR
:装载了磁盘的目录MOUNT_OPTION
:指定操作系统在启动时无法装载地区永久性磁盘的情况下要执行的操作。如需了解有效值,请参阅 Linuxfstab
文档中的第四个字段。如需让系统在磁盘不可用时也能启动,请使用nofail
装载选项。
- 使用
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
文件与挂接到实例的设备保持同步,并在创建启动磁盘快照或分离磁盘前移除这些条目。