当您的虚拟机实例需要额外的存储空间或增加的性能限制时,您可以增加 Persistent Disk 的大小。无论磁盘是否挂接到正在运行的虚拟机,您都可以增加磁盘大小。
本页介绍了如何增加 Persistent Disk 的大小。如需增大 Google Cloud Hyperdisk 卷的大小,请参阅修改 Hyperdisk 的设置。
您只能增加磁盘大小,而不能减小磁盘大小。如需减小磁盘大小,您必须创建较小的新磁盘。在删除较大的原始磁盘之前,您需要为这两个磁盘付费。
创建自定义 Linux 映像或自定义 Windows 映像时,您需要手动增加启动磁盘的大小和非启动磁盘。如果您使用的是公共映像,Compute Engine 会自动调整启动磁盘的大小。
增加磁盘大小不会删除或修改磁盘数据,但最佳做法是,在对文件系统或分区进行任何更改之前,请始终通过创建快照备份磁盘。
Compute Engine 会管理永久性磁盘背后的硬件,因此您可以添加磁盘以及调整其大小,而无需处理分割或冗余。
准备工作
-
如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以选择以下任一选项向 Compute Engine 进行身份验证:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
-
Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1
) -
如需连接到可以作为服务账号运行的虚拟机:
Service Account User (v1) (
roles/iam.serviceAccountUser
) 在 Google Cloud 控制台中,转到磁盘页面。
在项目的永久性磁盘列表中,点击要调整大小的磁盘的名称。
在“磁盘详情”页面上,点击
修改。您可能需要点击 更多操作菜单,然后再点击 修改。在大小字段中,为磁盘输入新的大小。使用 MBR 分区表的磁盘最大只能调整到 2 TB。
点击保存以将更改应用于磁盘。
DISK_NAME
:您要调整大小的磁盘的名称。DISK_SIZE
:磁盘的新大小(以吉比字节 [GiB] 为单位)。使用 MBR 分区表的磁盘最大只能调整到 2 TB。ZONE
:对于区域 Persistent Disk,请指定磁盘所在的可用区。对于地区永久性磁盘,请改用
--region=REGION
标志并指定地区磁盘所在的区域。PROJECT_ID
:您的项目 ID。ZONE
:对于可用区级 Persistent Disk:磁盘所在的可用区。REGION
:对于区域级永久性磁盘:磁盘所在的区域。DISK_NAME
:要调整大小的磁盘的名称。DISK_SIZE
:磁盘的新大小(以吉比字节 [GiB] 为单位)。使用 MBR 分区表的磁盘最大只能调整到 2 TB。启动磁盘:如果您使用的是自定义 Linux 映像或自定义 Windows 映像,则必须手动调整根的大小分区和文件系统。对于具有公共映像的虚拟机,Compute Engine 会在您增加启动磁盘的大小并重启虚拟机后自动调整根分区和文件系统的大小。
非启动磁盘:增加磁盘大小后,您必须扩展磁盘上的文件系统以使用增加的空间。
在 Google Cloud 控制台中,转到虚拟机实例页面。
点击挂接了新磁盘的实例旁的 SSH 按钮。浏览器会建立连到该实例的终端连接。
使用
df
和lsblk
命令列出文件系统的大小并查找磁盘的设备名称。$ sudo df -Th Filesystem Type Size Used Avail Use% Mounted on /dev/sda1 ext4 9.7G 1.2G 8.5G 12% / /dev/sdb ext4 250G 60M 250G 1% /mnt/disks/disk-1
$ sudo lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk └─sda1 8:1 0 10G 0 part / sdb 8:16 0 500G 0 disk /mnt/disks/disk-1
此示例包含以下磁盘:
- 启动磁盘:
/dev/sda1
分区位于大小调整为 20 GB 的启动磁盘上。分区表和文件系统仅向操作系统提供 9.7 GB 的容量。 - 非启动数据磁盘:
/dev/sdb
非启动数据磁盘没有分区表,但该磁盘上的文件系统仅为操作系统提供 250 GB 的容量。此磁盘的装载目录为/mnt/disks/disk-1
。
df
命令显示/dev/sda1
分区已作为根文件系统装载,/dev/sdb
磁盘已作为非启动数据磁盘装载到/mnt/disks/disk-1
。记下类型列,该列表明磁盘使用的是ext4
还是xfs
文件系统。- 启动磁盘:
验证分区类型:
或者仅查看特定磁盘的信息:sudo parted -l
找到分区表字段。如果值为sudo parted -l /dev/DEVICE_NAME
msdos
,则该磁盘具有 MBR 分区类型。这意味着此类磁盘的大小上限为 2 TB。调整启动磁盘上的根分区和文件系统的大小。此示例假定虚拟机映像不支持自动根分区和文件系统大小调整。
使用
parted
调整根分区的大小。例如,以下命令会将/dev/sda
的分区1
扩展为可能的最大大小:打开
/dev/sda
分区上的parted
:sudo parted /dev/sda
在
(parted)
提示符处,输入:resizepart
在
Partition number?
提示符处,输入:1
在
Warning: Partition /dev/sda1 is being used. Are you sure you want to continue?
提示符处,输入:Yes
在
End?
提示符处,输入100%
在
(parted)
提示符处,输入:quit
使用
partprobe
读取新的分区表。sudo partprobe /dev/sda
扩展文件系统:
如果您使用的是
ext4
,请使用resize2fs
命令:sudo resize2fs /dev/sda1
如果您使用的是
xfs
,请使用xfs_growfs
命令:sudo xfs_growfs -d /
如果您使用的是 btrfs,请使用
btrfs
命令:sudo btrfs filesystem resize max /
调整非启动数据磁盘上的文件系统大小。
如果您使用的是
ext4
,请使用resize2fs
命令扩展文件系统:sudo resize2fs /dev/DEVICE_NAME
将
DEVICE_NAME
替换为磁盘的设备名称。在此示例中,设备名称为/dev/sdb
。如果您使用的是
xfs
,请使用xfs_growfs
命令扩展文件系统:sudo xfs_growfs MOUNT_DIR
将 MOUNT_DIR 替换为设备的装载点。您可以在
lsblk
命令的输出中找到MOUNTPOINT
列中列出的装载点。如果您使用的是 btrfs,请使用
btrfs
命令扩展文件系统:sudo btrfs filesystem resize max MOUNT_DIR
将 MOUNT_DIR 替换为设备的装载点。您可以在
lsblk
命令的输出中找到MOUNTPOINT
列中列出的装载点。
使用
df
命令验证文件系统是否已扩展。例如:df -h /dev/sdb Filesystem Size Used Avail Use% Mounted on /dev/sdb 493G 70M 492G 1% /mnt/disks/disk-1
在 Google Cloud 控制台中,转到虚拟机实例页面。
点击已调整大小的磁盘所属实例旁边的 RDP 按钮。浏览器会建立连到该实例的 RDP 连接。
右键点击 Windows“开始”按钮,然后选择磁盘管理以打开“磁盘管理”工具。
通过在 Powershell 中运行来显示磁盘分区类型:
在“分区样式”列中,如果值为 MBR,则磁盘具有 MBR 分区类型。这意味着此类磁盘的大小上限为 2 TB。Get-Disk
刷新“磁盘管理”工具,使其识别地区永久性磁盘上的额外空间。在“磁盘管理”窗口顶部,点击操作并选择刷新。
在已调整大小的磁盘上,右键点击已格式化的分区并选择扩展卷。
按照扩展卷向导中的说明扩展现有分区以包含额外的磁盘空间。如果现有分区已格式化为 NTFS,则分区大小上限受其集群大小设置的限制。
完成向导步骤并且完成卷格式化后,请检查所挂接磁盘列表中的
Status
列,以确保新磁盘的状态为Healthy
。
Terraform
如需在本地开发环境中使用本页面上的 Terraform 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
如需了解详情,请参阅 Set up authentication for a local development environment。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
所需的角色和权限
如需获得调整 Persistent Disk 大小所需的权限,请让您的管理员向您授予项目的以下 IAM 角色:
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
此预定义角色包含调整 Persistent Disk 大小所需的
compute.disks.update
权限。增加磁盘大小
如需增加启动磁盘或非启动磁盘的大小,请遵循以下过程:
控制台
磁盘列表中会显示新的磁盘大小。
gcloud
使用
gcloud compute disks resize
命令并在--size
标志中指定新磁盘大小(以吉比字节 [GiB] 为单位)。gcloud compute disks resize DISK_NAME \ --size DISK_SIZE \ --zone=ZONE
替换以下内容:
Terraform
选择以下任一选项可调整可用区级磁盘或区域级永久性磁盘的大小:
可用区级磁盘
如需更改 Persistent Disk 的大小,您可以使用
google_compute_disk
资源并使用size
参数。如果添加
size
参数以及image
或snapshot
参数,则size
值必须大于或等于映像或快照的大小。如果省略
image
和snapshot
参数,则可以将size
参数设置为小于现有磁盘大小。如果您执行此操作,Terraform 会销毁该磁盘并新建一个空的 Persistent Disk。区域级永久性磁盘
如需更改区域永久性磁盘的大小,您可以使用
google_compute_region_disk
资源并使用size
参数。如果添加
size
参数以及image
或snapshot
参数,则size
值必须大于或等于映像或快照的大小。如果省略
image
和snapshot
参数,则可以将size
参数设置为小于现有磁盘大小。如果您执行此操作,Terraform 会销毁该磁盘并新建一个空的 RegionalPersistent Disk。REST
如需调整 Persistent Disk 大小,请构建一个对
compute.disks.resize
方法发出的POST
请求。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME/resize { "sizeGb": "DISK_SIZE" }
如需调整区域级永久性磁盘的大小,请构建一个对
compute.regionDisks.resize
方法发出的POST
请求。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/disks/DISK_NAME/resize { "sizeGb": "DISK_SIZE" }
替换以下内容:
调整文件系统和分区的大小
增加磁盘大小后,您可能需要调整其文件系统和分区的大小。以下列表显示了启动磁盘和非启动磁盘的其他信息:
以下示例展示了如何手动调整启动磁盘的根分区和文件系统的大小,以及如何手动调整无分区表的非启动数据磁盘的文件系统的大小。 此示例假定磁盘是使用 SCSI 挂接的,并且之前已格式化并装载。
如果您的 Persistent Disk 是使用 NVMe 连接的,请参阅调整文件系统和分区的大小,查看通过 NVMe 连接的磁盘的示例输出。
Linux 虚拟机
Windows 虚拟机
使用 Windows 磁盘管理实用程序调整 Windows 实例上的分区大小。
完成此过程后,您无需重启虚拟机。现在,您可以使用添加的磁盘空间来存储数据。
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-12-22。
-