添加本地 SSD

Compute Engine 为虚拟机实例提供始终加密的本地固态硬盘 (SSD) 块存储。每个本地 SSD 的大小为 375 GB,但每个实例最多可以附加 8 个本地 SSD 设备,以获得 3 TB 的本地 SSD 总存储空间。或者,您也可以将多个本地 SSD 设备格式化并装载到一个逻辑卷中。

不同于永久性磁盘,本地 SSD 以物理方式附加到托管虚拟机实例的服务器。与永久性磁盘相比,这种紧密耦合可提供卓越的性能、极高的每秒输入/输出操作数 (IOPS),以及极低的延迟。请参阅永久性磁盘和本地 SSD 性能了解详情。

本地 SSD 只适合用于缓存、处理空间或低价值数据等临时存储用途。如果您将重要数据存储在本地 SSD 设备中,则还必须将该数据存储在持久性存储选项中。

您无法停止并重启具有本地 SSD 的实例。如果您通过客机操作系统关闭了具有本地 SSD 的实例,则无法重启实例,并且本地 SSD 上的数据将丢失。

如果本地 SSD 不符合冗余或灵活性要求,则可以将本地 SSD 与其他实例存储选项结合使用。

准备工作

本地 SSD 数据持久性

在创建具有本地 SSD 的实例之前,必须了解哪些事件会保留本地 SSD 数据以及哪些事件可能会导致本地 SSD 数据无法恢复。

本地 SSD 上的数据只有在遇到以下事件时才会存留:

  • 重新启动客机操作系统。
  • 将实例配置为实时迁移,且实例经历主机维护事件。
  • 如果主机系统遇到主机错误,Compute Engine 会尽力重新连接到虚拟机并保留本地 SSD 数据,但可能不会成功。如果尝试成功,虚拟机会自动重启。但如果尝试重新连接失败,虚拟机将重启,而不会保留任何数据。

本地 SSD 上的数据在遇到以下事件时不会存留:

  • 手动终止实例。
  • 关闭客机操作系统并强制停止实例。
  • 将实例配置为可抢占,并且该实例经历抢占过程。
  • 将实例配置为在发生主机维护事件时终止,并且该实例经历主机维护事件。
  • 当主机系统遇到主机错误,并且底层硬盘在 60 分钟内未恢复时,Compute Engine 不尝试保留本地 SSD 上的数据。
  • 错误配置本地 SSD 使其无法访问。
  • 停用项目结算功能。实例将关闭,并且您的数据将丢失。

创建具有本地 SSD 的实例

由于本地 SSD 位于虚拟机实例运行的物理机上,因此只能在实例创建过程中创建它们。本地 SSD 不能用作启动设备。

创建本地 SSD 后,必须先格式化并装载设备,然后才能使用。

您可以使用 Google Cloud Platform Consolegcloud 工具API 创建具有本地 SSD 的实例。

控制台

  1. 在 GCP Console 中,转到“虚拟机实例”页面。

    转到“虚拟机实例”页面

  2. 点击创建实例
  3. 创建新实例页面上,为实例填写所需的属性。
  4. 展开管理、安全、磁盘、网络、单独租用
  5. 点击磁盘,然后在额外磁盘下点击添加新磁盘
  6. 名称字段下,输入新磁盘的名称。
  7. 类型下选择本地 SSD 暂存磁盘(最多 8 个)
  8. 点击完成
  9. 点击创建以创建实例。
  10. 创建本地 SSD 后,必须先格式化并装载设备,然后才能使用。

gcloud

如需创建附加了本地 SSD 的虚拟机实例,请按照创建实例的说明,使用 --local-ssd 标志创建并附加本地 SSD 设备。要创建多个本地 SSD 设备,请添加其他 --local-ssd 标志。或者,您也可以为每个 --local-ssd 标志设置接口值和设备名称。

同样,您可以创建具有两个本地 SSD 的实例,每个 SSD 使用一个 SCSI 接口,如下所示:

gcloud compute instances create example-instance \
    --machine-type n1-standard-8 \
    --local-ssd interface=[INTERFACE_TYPE] \
    --local-ssd interface=[INTERFACE_TYPE] \
    --image-project [IMAGE_PROJECT] \
    --image-family [IMAGE_FAMILY]

其中:

  • [INTERFACE_TYPE] 是您要用于此设备的本地 SSD 接口。如果启动具有优化的 NVMe 驱动程序的磁盘映像,请指定 nvme,对于其他映像,请指定 scsi
  • [INSTANCE_NAME] 是新实例的名称。
  • [IMAGE_FAMILY]可用映像系列中的一种。
  • [IMAGE_PROJECT] 是映像系列所属的映像项目

如有必要,您可以将 nvmescsi 组合用于不同设备,从而将本地 SSD 设备附加到单个实例。nvme 设备的性能取决于实例的启动磁盘映像。

创建本地 SSD 后,必须先格式化并装载设备,然后才能使用。

API

在 API 中,您可以在使用 initializeParams 属性创建虚拟机实例时创建本地 SSD 设备。您还必须提供以下属性:

  • diskType:设为本地 SSD
  • autoDelete:设为 true
  • type:设为 SCRATCH

本地 SSD 实例无法设置以下属性:

  • diskName
  • sourceImage 属性
  • diskSizeGb

以下示例请求负载用于创建具有启动磁盘和本地 SSD 设备的实例:

{
   "machineType":"zones/us-central1-f/machineTypes/n1-standard-8",
   "name":"local-ssd-instance",
   "disks":[
      {
         "type":"PERSISTENT",
         "initializeParams":{
            "sourceImage":"projects/ubuntu-os-cloud/global/images/family/ubuntu-1604-lts"
         },
         "boot":true
      },
      {
         "type":"SCRATCH",
         "initializeParams":{
            "diskType":"zones/us-central1-f/diskTypes/local-ssd"
         },
         "autoDelete":true,
         "interface": "NVME"
      }
   ],
   "networkInterfaces":[
      {
         "network":"global/networks/default"
      }
   ]
 }

创建本地 SSD 后,必须先格式化并装载设备,然后才能使用。

如需详细了解如何使用 API 创建实例,请参阅 API 参考

选择 NVMe 或 SCSI 接口

您可以使用 NVMe 接口或 SCSI 接口将本地 SSD 连接到实例。大多数公共映像包含 NVMe 和 SCSI 驱动程序。但是,某些映像包含优化的驱动程序,使实例能通过 NVMe 实现最佳性能,或者能够使用多队列 SCSI 通过 SCSI 接口实现最佳性能。

  • NVMe 优化的公共映像
    • Ubuntu 14.04 LTS 映像 ubuntu-1404-trusty-v20170110 及更新版本,或映像系列 ubuntu-1404-lts
    • Ubuntu 16.04 LTS 映像 ubuntu-1604-xenial-v20170113 及更新版本,或映像系列 ubuntu-1604-lts
    • Ubuntu 17.10 映像系列 ubuntu-1710
    • Ubuntu 18.04 LTS 映像系列 ubuntu-1804-lts
  • 支持多队列 SCSI 的公共映像:
    • Debian 9 Stretch 映像,或映像系列 debian-9
    • Ubuntu 14.04 LTS 映像 ubuntu-1404-trusty-v20170807 及更新版本,或映像系列 ubuntu-1404-lts
    • Ubuntu 16.04 LTS 映像 ubuntu-1604-xenial-v20170803 及更新版本,或映像系列 ubuntu-1604-lts
    • Ubuntu 17.10 映像系列 ubuntu-1710
    • Ubuntu 18.04 LTS 映像系列 ubuntu-1804-lts
    • 所有 Windows Server 映像
    • 所有 SQL Server 映像

或者,您也可以为导入项目的自定义映像启用多队列 SCSI。请阅读启用多队列 SCSI,了解详情。

选择有效的本地 SSD 数量

如需将多个本地 SSD 附加到单个虚拟机实例,可以附加的有效本地 SSD 数量取决于虚拟机实例的机器类型。如需详细了解这些机器类型,请参阅本地 SSD 和机器类型限制

格式化并装载本地 SSD 设备

格式化并装载各个本地 SSD 设备

将本地 SSD 连接到实例,最简单的方式是使用单个分区格式化和装载每个设备。或者,您可以将多个设备合并到一个逻辑卷中

Linux 实例

在 Linux 实例上格式化并装载新的本地 SSD。您可以使用任何所需的分区格式和配置。对于本示例,请创建单个 ext4 分区。

  1. 转到“虚拟机实例”页面。

    转到“虚拟机实例”页面

  2. 点击挂接了新本地 SSD 的实例旁的 SSH 按钮。浏览器会建立连到该实例的终端连接。

  3. 在终端中,使用 lsblk 命令标识要装载的本地 SSD。SCSI 模式下的本地 SSD 具有类似 sdb 的标准 ID。NVMe 模式下的本地 SSD 具有类似 nvme0n1 的 ID。

    $ lsblk
    
    NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda       8:0    0   10G  0 disk
    └─sda1    8:1    0   10G  0 part /
    nvme0n1 259:0    0  375G  0 disk
    
  4. 使用 ext4 文件系统格式化本地 SSD。此命令将删除本地 SSD 中的所有现有数据。

    $ sudo mkfs.ext4 -F /dev/[SSD_ID]
    

    其中:[SSD_ID] 是要格式化的本地 SSD 的 ID。

  5. 使用 mkdir 命令创建用于装载设备的目录。

    $ sudo mkdir -p /mnt/disks/[MNT_DIR]
    

    其中:[MNT_DIR] 是要装载本地 SSD 的目录。

  6. 将本地 SSD 装载到实例。或者,您可以停用写入缓存刷新以提高写入性能,但可能会将缓存数据写入的持续性降低长达两秒。

    $ sudo mount /dev/[SSD_ID] /mnt/disks/[MNT_DIR]
    

    其中:

    • [SSD_ID] 是要装载的本地 SSD 的 ID。
    • [MNT_DIR] 是要装载本地 SSD 的目录。
  7. 配置对设备的读写访问权限。对于本示例,为所有用户授予对设备的写入访问权限。

    $ sudo chmod a+w /mnt/disks/[MNT_DIR]
    

    其中:[MNT_DIR] 是装载本地 SSD 的目录。

或者,您可以将本地 SSD 添加到 /etc/fstab 文件,以便在实例重启时设备会自动重新装载。如果实例停止或终止,此条目不会起到保留本地 SSD 上的数据的作用。请参阅了解本地 SSD 数据持久性,了解本地 SSD 数据持久性的完整详情。

指定条目 /etc/fstab 文件时,请确保加入 nofail 选项,以便即使本地 SSD 不存在,实例也可以继续启动。例如,如果您截取启动磁盘的快照并创建没有附加任何本地 SSD 的新实例,则该实例可以继续启动流程,而不是无限期地暂停。对于运行 Ubuntu 12.04 或 Ubuntu 14.04 的实例,请指定 nobootwait 选项而不是 nofail

  1. 创建 /etc/fstab 条目。使用 blkid 命令查找设备上文件系统的 UUID,并修改 /etc/fstab 文件以在装载选项中包括该 UUID。您可以使用单个命令完成此步骤。例如:

    $ echo UUID=`sudo blkid -s UUID -o value /dev/disk/by-id/google-local-ssd-0` /mnt/disks/[MNT_DIR] ext4 discard,defaults,[NOFAIL_OPTION] 0 2 | sudo tee -a /etc/fstab
    

    其中:

    • [MNT_DIR] 是装载本地 SSD 的目录。
    • [NOFAIL_OPTION] 是指定系统无法装载此本地 SSD 时应执行的操作的选项。对于大多数发行版,请指定 nofail。对于运行 Ubuntu 12.04 或 Ubuntu 14.04 的实例,请指定 nobootwait 选项。
  2. 使用 cat 命令验证您的 /etc/fstab 条目是否正确:

    $ cat /etc/fstab
    

如果从此实例的启动磁盘创建快照并使用它创建没有本地 SSD 的单独实例,请修改 /etc/fstab 文件并移除此本地 SSD 的条目。即使使用 nofailnobootwait 选项,也要将 /etc/fstab 文件与附加到实例的设备保持同步,并在创建启动磁盘快照之前删除这些条目。

Windows 实例

使用 Windows 磁盘管理工具在 Windows 实例上格式化和装载本地 SSD。

  1. 通过 RDP 连接到实例。对于本示例,转到“虚拟机实例”页面,点击附加本地 SSD 的实例旁边的 RDP 按钮。输入用户名和密码后,将打开一个窗口,其中包含服务器的桌面界面。

  2. 右键点击 Windows“开始”按钮并选择磁盘管理

    从 Windows“开始”按钮的右键菜单中选择 Windows“磁盘管理器”工具。

  3. 如果之前尚未初始化本地 SSD,则该工具会提示您为新设备选择分区方案。选择 GPT 并点击确定

    在磁盘初始化窗口中选择分区方案。

  4. 本地 SSD 初始化后,右键点击未分配的磁盘空间,然后选择新建简单卷

    从附加磁盘新建简单卷。

  5. 按照新建简单卷向导中的说明配置新卷。您可以使用任何想要的分区格式,但对于本示例,请选择 NTFS。另外,请勾选执行快速格式化以加快格式化过程。

    在“新建简单卷向导”中选择分区格式类型。

  6. 完成向导步骤并且完成卷格式化后,请检查新的本地 SSD 以确保其处于 Healthy 状态。

    查看 Windows 可识别的磁盘列表,验证本地 SSD 是否处于良好状态。

大功告成!现在可以将文件写入本地 SSD 了。

将多个本地 SSD 设备格式化并装载到单个逻辑卷中

不同于持久性 SSD,附加到实例的每个本地 SSD 设备具有固定的 375 GB 容量。如果要将多个本地 SSD 设备合并到单个逻辑卷中,则必须自己定义这些设备的卷管理方式。

Linux 实例

使用 mdadm 创建 RAID 0 阵列。此示例使用单个 ext4 文件系统格式化阵列,但您可以应用您想要的任何文件系统。

  1. 转到“虚拟机实例”页面。

    转到“虚拟机实例”页面

  2. 点击挂接了新本地 SSD 的实例旁的 SSH 按钮。浏览器会建立连到该实例的终端连接。

  3. 在终端中安装 mdadm 工具。mdadm 的安装过程包括将暂停脚本的用户提示,因此请手动运行此过程。

    Debian 和 Ubuntu:

    $ sudo apt-get update && sudo apt-get install mdadm --no-install-recommends
    

    CentOS 和 RHEL:

    $ sudo yum install mdadm -y
    

    SLES 和 openSUSE:

    $ sudo zypper install -y mdadm
    

  4. 使用 lsblk 命令标识要一起装载的所有本地 SSD。对于本示例,实例有 8 个 NVMe 模式下的本地 SSD 设备:

    $ lsblk
    
    NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda       8:0    0   10G  0 disk
    └─sda1    8:1    0   10G  0 part /
    nvme0n1 259:0    0  375G  0 disk
    nvme0n2 259:1    0  375G  0 disk
    nvme0n3 259:2    0  375G  0 disk
    nvme0n4 259:3    0  375G  0 disk
    nvme0n5 259:4    0  375G  0 disk
    nvme0n6 259:5    0  375G  0 disk
    nvme0n7 259:6    0  375G  0 disk
    nvme0n8 259:7    0  375G  0 disk
    
    

    SCSI 模式下的本地 SSD 具有类似 sdb 的标准 ID。NVMe 模式下的本地 SSD 具有类似 nvme0n1 的 ID。

  5. 使用 mdadm 将多个本地 SSD 设备合并到一个名为 /dev/md0 阵列中。本示例合并 NVMe 模式下的 8 个本地 SSD 设备。对于 SCSI 模式下的本地 SSD 设备,请指定从 lsblk 命令获取的 ID:

    $ sudo mdadm --create /dev/md0 --level=0 --raid-devices=8 \
    /dev/nvme0n1 /dev/nvme0n2 /dev/nvme0n3 /dev/nvme0n4 \
    /dev/nvme0n5 /dev/nvme0n6 /dev/nvme0n7 /dev/nvme0n8
    
    mdadm: Defaulting to version 1.2 metadata
    mdadm: array /dev/md0 started.
    
    
  6. 使用 ext4 文件系统格式化完整的 /dev/md0 阵列。此命令将删除本地 SSD 中的所有现有数据。

    $ sudo mkfs.ext4 -F /dev/md0
    
  7. 创建一个用于装载 /dev/md0 的目录。对于本示例,请创建 /mnt/disks/ssd-array 目录:

    $ sudo mkdir -p /mnt/disks/[MNT_DIR]
    

    其中:[MNT_DIR] 是要装载本地 SSD 阵列的目录。

  8. /dev/md0 阵列装载到 /mnt/disks/ssd-array 目录。或者,您可以停用写入缓存刷新以提高写入性能,但可能会将缓存数据写入的持续性降低长达两秒。

    $ sudo mount /dev/md0 /mnt/disks/[MNT_DIR]
    

    其中:[MNT_DIR] 是要装载本地 SSD 阵列的目录。

  9. 配置对设备的读写访问权限。对于本示例,为所有用户授予对设备的写入访问权限。

    $ sudo chmod a+w /mnt/disks/[MNT_DIR]
    

    其中:[MNT_DIR] 是装载本地 SSD 阵列的目录。

或者,您可以将本地 SSD 添加到 /etc/fstab 文件,以便在实例重启时设备会自动重新装载。如果实例终止,此条目不会起到保留本地 SSD 上的数据的作用。请参阅了解本地 SSD 数据持久性,了解本地 SSD 数据持久性的完整详情。

指定条目 /etc/fstab 文件时,请确保加入 nofail 选项,以便即使本地 SSD 不存在,实例也可以继续启动。例如,如果您截取启动磁盘的快照并创建没有附加任何本地 SSD 的新实例,则该实例可以继续启动流程,而不是无限期地暂停。对于运行 Ubuntu 12.04 或 Ubuntu 14.04 的实例,请指定 nobootwait 选项而不是 nofail

  1. 创建 /etc/fstab 条目。使用 blkid 命令查找设备上文件系统的 UUID,并修改 /etc/fstab 文件以在装载选项中包括该 UUID。您可以使用单个命令完成此步骤。例如:

    $ echo UUID=`sudo blkid -s UUID -o value /dev/md0` /mnt/disks/[MNT_DIR] ext4 discard,defaults,[NOFAIL_OPTION] 0 2 | sudo tee -a /etc/fstab
    

    其中:

    • [MNT_DIR] 是装载本地 SSD 阵列的目录。
    • [NOFAIL_OPTION] 是指定系统无法装载此本地 SSD 时应执行的操作的选项。对于大多数发行版,请指定 nofail。对于运行 Ubuntu 12.04 或 Ubuntu 14.04 的实例,请指定 nobootwait 选项。
  2. 使用 cat 命令验证您的 /etc/fstab 条目是否正确:

    $ cat /etc/fstab
    

如果从此实例的启动磁盘创建快照并使用它创建没有本地 SSD 的单独实例,请修改 /etc/fstab 文件并移除此本地 SSD 阵列的条目。即使使用 nofailnobootwait 选项,也要将 /etc/fstab 文件与附加到实例的设备保持同步,并在创建启动磁盘快照之前删除这些条目。

Windows 实例

使用 Windows 磁盘管理工具在 Windows 实例上格式化和装载本地 SSD 阵列。

  1. 通过 RDP 连接到实例。对于本示例,转到“虚拟机实例”页面,点击附加本地 SSD 的实例旁边的 RDP 按钮。输入用户名和密码后,将打开一个窗口,其中包含服务器的桌面界面。

  2. 右键点击 Windows“开始”按钮并选择磁盘管理

    从 Windows“开始”按钮的右键菜单中选择 Windows“磁盘管理器”工具。

  3. 如果之前尚未初始化本地 SSD,则该工具会提示您为新设备选择分区方案。选择 GPT 并点击确定

    在磁盘初始化窗口中选择分区方案。

  4. 本地 SSD 初始化后,右键点击未分配的磁盘空间,然后选择新建带区卷

    从附加磁盘新建带区卷。

  5. 选择要包含在带区阵列中的本地 SSD 设备。对于本示例,请选择所有设备,然后将它们合并到单个本地 SSD 设备中。

    选择要包含在阵列中的本地 SSD 设备。

  6. 按照新建带区卷向导中的说明配置新卷。您可以使用任何想要的分区格式,但对于本示例,请选择 NTFS。另外,请勾选执行快速格式化以加快格式化过程。

    在“新建带区卷向导”中选择分区格式类型。

  7. 完成向导步骤并且完成卷格式化后,请检查新的本地 SSD 以确保其处于 Healthy 状态。

    查看 Windows 可识别的磁盘列表,验证本地 SSD 是否处于良好状态。

大功告成!现在可以将文件写入本地 SSD 了。

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Compute Engine 文档