IBM Cloud Docs
管理实例存储器

管理实例存储器

实例存储提供快速,经济实惠的临时存储,可提高某些云原生工作负载 (或应用或服务) 的性能。 有关更多信息,请参阅 关于实例存储器

要向虚拟服务器实例供应实例存储磁盘,请选择包含实例存储器的概要文件。 无法连接或拆离实例存储磁盘设备,因为它们是作为实例概要文件本身的一部分购买的。 通用概要文件系列 (均衡,计算和内存) 和一些专业概要文件系列 (非常高内存和已优化的存储器) 都具有具有实例存储器的概要文件选项。 所有 3rd 代实例概要文件都包含实例存储器。 有关更多信息,请参阅 3rd 代实例概要文件。 根据分配给概要文件的 vCPUs 数量,按比例分配实例存储量。 有关概要文件的更多信息,请参阅 x86-64 实例概要文件

在控制台中使用实例存储调配虚拟服务器实例

需要先创建 IBM Cloud VPC,然后才能创建具有实例存储器的虚拟服务器实例。

要供应实例存储器,请完成以下步骤:

  1. IBM Cloud 控制台中,转到 导航菜单 图标 菜单图标 > 基础架构 VPC 图标 虚拟服务器实例
  2. 在“VPC 的虚拟服务器实例”页面上,单击 创建 并输入所需信息。 有关特定字段的更多信息,请参阅 创建虚拟服务器
  3. 要选择实例存储器概要文件,请单击 查看所有概要文件。 所有 ox2 概要文件和概要文件在概要文件名称的第四个位置中具有字母 "d" 的概要文件都包含实例存储器。 包含实例存储器的概要文件的示例为 bx2d-2x8 和 ox2-2x16。 使用复选框来过滤列表。 有关实例概要文件的列表,请参阅 x86-64 实例概要文件
  4. 选择要使用的配置文件,然后单击保存。 实例存储磁盘在引导卷之后以及远程 Block Storage 卷 (如果有) 之前连接到虚拟服务器实例。
  5. 准备好供应实例时,单击 创建虚拟服务器实例

后续步骤

创建实例后,将浮动 IP 地址与实例关联。 然后,可以连接到该实例。 有关更多信息,请参阅连接到 Linux 实例连接到 Windows 实例。 如果现有实例具有浮动 IP 地址,那么不需要将第二个浮动 IP 分配给另一个实例。 您可以使用浮动 IP 连接到第一个实例,然后使用自动分配给该实例的专用子网 IP 地址通过 SSH 连接到第二个实例。

使用 CLI 中的实例存储器供应虚拟服务器实例

要使用实例存储器供应虚拟服务器实例,请遵循 使用 CLI 创建虚拟服务器 的指示信息。 选择包含实例存储磁盘的概要文件。 有关概要文件的更多信息,请参阅 实例概要文件

使用 API 供应具有实例存储器的虚拟服务器实例

要使用实例存储器供应虚拟服务器实例,请遵循 使用 REST API 创建 VPC 资源 的指示信息。 选择包含实例存储磁盘的概要文件。 有关概要文件的更多信息,请参阅 实例概要文件

API (或 CLI) 对于确定用于连接实例存储磁盘的接口类型很有用。 从创建操作 (或 get) 返回的实例对象报告 disks 数组中的实例磁盘,如以下示例部分输出中所示。

  "disks": [
    {
      "created_at": "2022-04-19T17:13:28Z",
      "href": "https://sample-region.iaas.cloud.ibm.com/v1/instances/vsi_aba03916-8804-46ae-9275-b7dc196e94b3/disks/c4e4d137-a44f-47b8-beb0-a22dc8f8c6ea",
      "id": "c4e4d137-a44f-47b8-beb0-a22dc8f8c6ea",
      "interface_type": "virtio_blk",
      "name": "babbling-drove-grove-catnap",
      "resource_type": "instance_disk",
      "size": 600
    }]

此示例显示接口类型 virtio_blk

将定制映像与实例存储磁盘配合使用

如果您正在使用定制映像,请确保在映像中装入正确的设备驱动程序以使用磁盘。

如果实例存储设备的接口类型为 virtio_blk,那么必须安装 libvirt virtio 驱动程序。 libvirt virtio 驱动程序随所有 IBM 提供的操作系统一起自动安装。 具有实例存储器的所有通用概要文件仅提供 virtio_blk 个连接。

从实例使用实例存储器

列出实例上的块设备

在 Linux®上,您可以使用 lsblk 命令在登录到实例后列出块设备。 在以下示例中,供应的实例具有两个 600 GB 实例磁盘和两个 50 GiB 数据卷。 对 lsblk 命令指定了定制列的列表,以突出显示实例存储器与远程 Block Storage之间的一些差异。

实例磁盘以千兆字节 (GB) 为单位进行度量,但 lsblk 以千兆字节 (GiB) 为单位显示大小。

$ lsblk -o NAME,SIZE,MAJ:MIN,TYPE,PHY-SEC,LOG-SEC,MOUNTPOINT
NAME          SIZE MAJ:MIN TYPE PHY-SEC LOG-SEC MOUNTPOINT
vda           100G 252:0   disk     512     512
├─vda1          1G 252:1   part     512     512 /boot
└─vda2         99G 252:2   part     512     512
  ├─cl-root    97G 253:0   lvm      512     512 /
  └─cl-swap   2.1G 253:1   lvm      512     512
vdb         558.8G 252:16  disk    4096    4096
vdc         558.8G 252:32  disk    4096    4096
vdd            50G 252:48  disk     512     512
vde            50G 252:64  disk     512     512
vdf           366K 252:80  disk     512     512
vdg            44K 252:96  disk     512     512

在此示例中,所有 Block Storage 设备都是 virtio_blk 设备:

  • vda 是引导卷。
  • vdbvdc 是 600 GB 实例存储磁盘。 在 Linux®中,实例存储磁盘遵循引导卷,第一个是 /dev/vdb。 由于 lsblk 命令将 "G" 单元显示为 base-2 千兆字节,因此大小显示为 558.8 GiBs。 根据操作系统或概要文件的生成,扇区大小列值可能有所不同。 例如,x3d 实例概要文件系列可能会供应本地磁盘的 512 字节扇区大小。
  • vddvde 是连接到实例的远程数据卷。 由于这些数据卷请求的单位与 lsblk 显示的单位相同,因此它们的大小保持为整个 GiBs (50)。
  • vdfvdg 是用于实例的 cloud-init 配置的小块卷。

使用元数据服务列出实例存储器

可以从实例中使用元数据服务来检索有关实例的信息,包括实例存储磁盘。 要检索元数据信息,必须在供应实例时或之后通过更新实例来启用元数据服务功能。 有关启用和使用过程的更多信息,请参阅 从实例访问元数据

如果已启用“元数据”服务的实例,那么以下步骤演示了从 Linux 虚拟服务器利用实例存储元数据的示例。

  1. 检索短期实例身份令牌。

    instance_identity_token=`curl -X PUT "http://api.metadata.cloud.ibm.com/instance_identity/v1/token?version=2024-02-20" -H "Metadata-Flavor: ibm" -H "Accept: application/json" -d '{ "expires_in": 300}' | jq -r '(.access_token)'`
    

    如果启用了安全元数据服务端点,请使用 HTTPS 而不是 HTTP。 在运行 curl 命令之前,你可能需要安装 curljq 软件包。jq 是根据 MIT 许可 授权的第三方工具。

  2. 使用令牌来获取实例元数据,选择 disks 部分并将 json 存储在 bash 变量中。

    disks=$(curl -sS -X GET "http://api.metadata.cloud.ibm.com/metadata/v1/instance?version=2024-02-20" -H "Authorization: Bearer $instance_identity_token" | jq -r '.disks')
    
  3. /dev/disk/by-id 中的 virtio 设备上循环,并将设备路径与先前步骤中存储的实例磁盘信息相关联。

    for ln in $(ls /dev/disk/by-id/virtio*); do b=$(basename $ln); s=${b#virtio-}; disk=$(echo $disks | jq -r ".[] | select(.id | startswith(\"$s\"))"); if [ -n "$disk" ]; then echo "$ln $(readlink -f $ln) $(echo $disk | jq -r '(.size|tostring) + " " + .name')";fi;done
    

以下是先前命令的示例输出,其中列顺序为 (1) by-id path,(2) symlink device target,(3) size in GB,以及 (4) Cloud UI/CLI/API 磁盘名称:

/dev/disk/by-id/virtio-0736-35db69bb-d09b-4 /dev/vdc 600 palmtree-vacuumed-judiciary-wharf
/dev/disk/by-id/virtio-0736-874803ac-2593-4 /dev/vdb 600 lunacy-dismantle-dotted-fiddling

在这种情况下,磁盘名称是随机生成的四字名称,但可以编辑这些名称以具有定制名称。 有关更多信息,请参阅 更新其中一个缺省名称

分区,格式化和安装实例存储磁盘

实例存储磁盘可以分区,使用文件系统进行格式化,并以与远程块卷相同的方式安装到分层文件系统中。

以下 lsblk 示例显示了在登录到 bx3d-48x240 实例并将 vdc 分区到两个主分区之后,使用单独的文件系统对它们进行格式化并安装这些文件系统的输出。 带有正则表达式的 grep 命令用于仅过滤通过元数据服务获取的 vdb 和 vdc 设备的输出 (请参阅先前部分)。

$ lsblk | grep -E "NAME|vd[b|c]"
NAME    MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
vdb     252:16   0 726.4G  0 disk
vdc     252:32   0 726.4G  0 disk
├─vdc1  252:33   0   200G  0 part /mnt/localdisk1
└─vdc2  252:34   0 526.4G  0 part /mnt/localdisk2

由于实例存储器的临时性质,请使用 nofail 选项在 Linux® VM 的 /etc/fstab 文件中配置安装条目,或者使安装条目完全退出。 此设置可避免在引导期间发生安装故障。

以下示例显示了带有 nofail 选项的安装条目。

/dev/vdb1 /mnt/inststg1 ext4 defaults,nofail 0 0

查找实例概要文件的实例存储器详细信息

过滤实例概要文件时,请在 Web UI 或 CLI 中查找实例存储列。 它可以称为 Storage(GB)

以下示例显示可能的列值及其含义:

  • 1 x 150 GB-单个 150 GB 块设备连接到实例存储器的虚拟服务器实例。
  • 2 x 600 GB-连接两个 600 GB (总计 1200) 实例存储块设备。

在某些上下文中,您可能会看到实例概要文件或连接的实例磁盘的接口类型 (通常为 virtio_blk)。 以下示例显示从 CLI 获取的特定实例概要文件的详细信息。

$ ibmcloud is in-pr bx2d-48x192
Getting instance profile bx2d-48x192 under account YYYYYY as user vpc-user@myco.com...

Name                     bx2d-48x192
Architecture             amd64
vCPU Manufacturer        intel
Family                   balanced
vCPUs                    48
Memory(GiB)              192
GPU                      Model   Manufacturer   Count   Memory(GiB)
                         -       -              -       -

Numa Count               -
Bandwidth(Mbps)          80000
Volume bandwidth(Mbps)   -
Instance Storage Disks   Quantity   Size   Supported interface types
                         2          900    virtio_blk

Min NIC Count            1
Max NIC Count            10

报告实例存储器信息

您可以使用以下 CLI 示例来报告虚拟服务器实例的实例存储信息。 替换您自己的实例标识或名称。

$ ibmcloud is instance-disks 0716_f8c0fd3b-cada-46c3-91f6-c271937ef488
Listing disks of instance 0716_f8c0fd3b-cada-46c3-91f6-c271937ef488 under account YYYYYY as user vpc-user@myco.com...
ID                                          Name                               Size   Interface Type
0716-6ebed02f-c421-4b06-a73b-f334413e84b3   clunky-refocus-tidings-underpaid   600    virtio_blk
0716-54ee0659-d92a-4d4c-ac6b-8f03cb178a07   linguini-epiphany-lush-preschool   600    virtio_blk

更新其中一个缺省名称

您可以使用以下 CLI 命令来更新实例存储磁盘的定制名称。 将您自己的实例标识和磁盘标识分别替换为最后两个参数。

$ ibmcloud is instance-disk-update 0716_f8c0fd3b-cada-46c3-91f6-c271937ef488 0716-6ebed02f-c421-4b06-a73b-f334413e84b3 --name my-instance-disk1
Updating instance disk 0716-6ebed02f-c421-4b06-a73b-f334413e84b3 of instance 0716_f8c0fd3b-cada-46c3-91f6-c271937ef488 under account YYYYYY as user vpc-user@myco.com...

ID               0716-6ebed02f-c421-4b06-a73b-f334413e84b3
Name             my-instance-disk1
Size             600
Interface Type   virtio_blk
Created          2020-10-29T22:57:15-05:00

$ ibmcloud is instance-disks 0716_f8c0fd3b-cada-46c3-91f6-c271937ef488
Listing disks of instance 0716_f8c0fd3b-cada-46c3-91f6-c271937ef488 under account YYYYYY as user vpc-user@myco.com...
ID                                          Name                               Size   Interface Type
0716-6ebed02f-c421-4b06-a73b-f334413e84b3   my-instance-disk1                  600    virtio_blk
0716-54ee0659-d92a-4d4c-ac6b-8f03cb178a07   linguini-epiphany-lush-preschool   600    virtio_blk