从 VPC 访问控制模式迁移到安全组访问控制模式
请在 2027 年 5 月 6 日(支持终止日)之前,将区域文件共享从已弃用的 VPC 访问控制模式迁移至安全组模式,以避免数据丢失。
VPC 访问控制模式允许 VPC 中的所有虚拟服务器实例和裸机服务器访问文件共享。 安全组访问控制模式可根据安全组规则限制对特定计算资源的访问,从而提供更精细的控制。 安全组的访问控制模式还支持更多功能,例如传输过程中的加密、跨区域挂载和快照。
准备工作
将文件共享从 VPC 访问控制模式迁移到安全组访问控制模式之前,请查看以下要求:
- 请确认您拥有管理文件共享和挂载目标所需的 IAM 权限。
- 确定账户中使用 VPC 访问控制模式的所有文件共享。
- 请规划好安全组的配置,以确保迁移后,授权的计算资源能够访问文件共享。
- 请为迁移操作安排一个维护时段,因为在此过程中文件共享将暂时无法访问。
迁移概述
迁移过程包括以下步骤:
第 1 步:从所有计算主机卸载文件共享
在删除挂载目标之前,必须先从所有已挂载该文件共享的虚拟服务器实例和裸机服务器上卸载该文件共享。
首先,确定使用 VPC 访问控制模式的文件共享。 您可以使用命令行界面 (CLI) 或 API 列出所有文件共享。 筛选结果,仅显示“access_control_mode”字段设置为“vpc”的共享。
如果您的环境支持 JSON 输出,您可以使用 jq 来过滤 ibmcloud is shares:
ibmcloud is shares --output json | jq '.[] | select(.access_control_mode == "vpc") | {id, name, access_control_mode}'
提出 GET /shares 请求,并将 JSON 响应导入 jq:
curl -s -X GET "$vpc_api_endpoint/v1/shares?version=2026-04-28&generation=2" \
-H "Authorization: Bearer $iam_token" | jq '.shares[] | select(.access_control_mode == "vpc") | {id, name, access_control_mode}'
确定使用 VPC 访问控制模式的共享后,连接到挂载这些共享的每台计算主机,然后使用挂载点名称运行 umount 命令。 请参阅以下示例:
umount /mnt/my-file-share
有关在不同操作系统上卸载文件共享的更多信息,请参阅 挂载和卸载文件共享。
第 2 步:删除文件共享中的所有挂载目标
在将文件共享从所有计算主机上卸载后,请删除与该文件共享关联的所有挂载目标。 必须先删除所有挂载目标,才能更新访问控制模式。
在控制台中删除挂载目标
- 在 IBM Cloud 控制台中,单击导航菜单图标
> 基础架构
> 存储 > 文件存储共享。
- 从列表中选择要迁移的文件共享。
- 在文件共享详细信息页面,在“挂载目标”部分找到要删除的挂载目标。
- 单击操作图标
,然后选择删除。
- 对与文件共享相关联的每个挂载目标重复步骤 3-4。
有关更多信息,请参阅 在控制台中删除文件共享的挂载目标。
从 CLI 中删除挂载目标
为与文件共享相关联的每个挂载目标运行 share-mount-target-delete 命令。 将 SHARE_ID 替换为文件共享的 ID 或名称,将 MOUNT_TARGET_ID 替换为要删除的挂载目标的 ID 或名称。
ibmcloud is share-mount-target-delete SHARE_ID MOUNT_TARGET_ID
请参阅以下示例:
ibmcloud is share-mount-target-delete my-file-share my-mount-target
出现提示时,请输入 y 以确认删除。 对与文件共享相关联的每个挂载目标重复此命令。
有关详细信息,请参阅 从 CLI 删除文件共享的挂载目标。
使用 API 删除挂载目标
发送 DELETE /shares/{share_id}/mount_targets/{mount_target_id} 请求,删除与文件共享相关联的每个挂载目标。
curl -X DELETE \
"$vpc_api_endpoint/v1/shares/$share_id/mount_targets/$mount_target_id?version=2026-04-28&generation=2" \
-H "Authorization: Bearer $iam_token"
对与文件共享相关联的每个挂载目标重复此请求。
更多信息,请参阅 使用 API 删除挂载目标。
使用 Terraform 删除挂载目标
要使用 Terraform 删除挂载目标,请从 Terraform 配置文件中删除 ibm_is_share_mount_target 资源,然后运行 terraform apply。
# Remove or comment out the mount target resource
# resource "ibm_is_share_mount_target" "example" {
# share = ibm_is_share.example.id
# name = "my-mount-target"
# vpc = ibm_is_vpc.example.id
# }
步骤 3:删除复制文件共享(如适用)
如果文件共享有副本文件共享,则必须先删除副本,然后才能更新源文件共享的访问控制模式。 必须先删除复制关系,这样就会创建两个独立的文件共享。 然后,就可以删除复制文件共享及其挂载目标。
如果文件共享没有副本,请跳过此步骤,继续执行 步骤 4:将访问控制模式更新为安全组。
在控制台中删除复制关系
- 在 IBM Cloud 控制台中,单击导航菜单图标
> 基础架构
> 存储 > 文件存储共享。
- 单击源文件共享的名称,进入其详细信息页面。
- 在文件共享复制关系部分,单击删除复制关系。
- 在确认窗口中,单击 “取消关联”。 删除复制关系,创建两个独立的文件共享。
- 删除复制关系后,按照 第 2 步:删除文件共享中的所有挂载目标 中的相同步骤删除复制文件共享的挂载目标。
- 返回文件共享列表,选择复制的文件共享,单击操作图标
,然后选择删除。
- 出现提示时确认删除。
有关详细信息,请参阅 在控制台中删除复制关系 和删除副本和源文件共享。
从 CLI 中删除复制关系
-
列出文件共享,以确定复制文件共享:
ibmcloud is shares在复制角色列中查找文件共享
replica。 -
运行
share-replica-split命令以删除复制关系。 将“REPLICA_SHARE_ID”替换为副本文件共享的 ID 或名称。ibmcloud is share-replica-split REPLICA_SHARE_ID请参阅以下示例:
ibmcloud is share-replica-split my-replica-file-share出现提示时,键入
y确认分割操作。 -
删除复制关系后,删除复制文件共享的挂载目标:
ibmcloud is share-mount-target-delete REPLICA_SHARE_ID MOUNT_TARGET_ID对与副本文件共享相关联的每个挂载目标重复上述操作。
-
删除副本文件共享:
ibmcloud is share-delete REPLICA_SHARE_ID出现提示时,请输入
y以确认删除。
有关详细信息,请参阅 从 CLI 中删除复制关系。
删除与应用程序接口的复制关系
-
通过
DELETE /shares/{replica_id}/source请求删除复制关系:curl -X DELETE \ "$vpc_api_endpoint/v1/shares/$replica_share_id/source?version=2026-04-28&generation=2" \ -H "Authorization: Bearer $iam_token"成功回复表示复制关系已删除。
-
通过对每个挂载目标发出
DELETE /shares/{replica_id}/mount_targets/{mount_target_id}请求,删除副本文件共享的挂载目标:curl -X DELETE \ "$vpc_api_endpoint/v1/shares/$replica_share_id/mount_targets/$mount_target_id?version=2026-04-28&generation=2" \ -H "Authorization: Bearer $iam_token" -
通过
DELETE /shares/{replica_id}请求删除副本文件共享:curl -X DELETE \ "$vpc_api_endpoint/v1/shares/$replica_share_id?version=2026-04-28&generation=2" \ -H "Authorization: Bearer $iam_token"
有关详细信息,请参阅 删除与 API 的复制关系。
删除与 Terraform 的复制关系
-
使用
ibm_is_share_replica_operations资源分割源共享和副本共享:resource "ibm_is_share_replica_operations" "split" { share_replica = ibm_is_share.replica.id split_share = true } -
拆分操作完成后,请从 Terraform 配置中移除副本文件共享及其挂载目标,然后运行
terraform apply。# Remove or comment out the replica share and its mount targets # resource "ibm_is_share" "replica" { # ... # } # resource "ibm_is_share_mount_target" "replica_target" { # ... # }
如需了解更多信息,请参阅 《 使用 Terraform 删除复制关系 》和《 使用 Terraform 删除挂载目标 》。
步骤 4:将访问控制模式更新为安全组
在删除所有挂载目标和任何副本文件共享后,将文件共享的访问控制模式从 vpc 更新为 security_group。
在控制台中更新访问控制模式
- 在 IBM Cloud 控制台中,单击导航菜单图标
> 基础架构
> 存储 > 文件存储共享。
- 从列表中选择要迁移的文件共享。
- 在文件共享详细信息页面上,找到访问控制模式字段。
- 点击“访问控制模式”字段旁边的 编辑 图标
。
- 从列表中选择安全组。
- 单击保存。
通过 CLI 更新访问控制模式
运行 share-update 命令,将 --access-control-mode 选项设为 security_group。 将“SHARE_ID”替换为文件共享的 ID 或名称。
ibmcloud is share-update SHARE_ID --access-control-mode security_group
请参阅以下示例:
ibmcloud is share-update my-file-share --access-control-mode security_group
使用应用程序接口更新访问控制模式
提出 PATCH /shares/{share_id} 请求,将 access_control_mode 属性设置为 security_group。
curl -X PATCH \
"$vpc_api_endpoint/v1/shares/$share_id?version=2026-04-28&generation=2" \
-H "Authorization: Bearer $iam_token" \
-d '{
"access_control_mode": "security_group"
}'
使用 Terraform 更新访问控制模式
将 ibm_is_share 资源中的 access_control_mode 属性更新为 security_group,然后运行 terraform apply。
resource "ibm_is_share" "example" {
name = "my-file-share"
zone = "us-south-2"
profile = "dp2"
size = 1000
iops = 500
access_control_mode = "security_group"
}
步骤 5:创建具有安全组访问权限的新挂载目标
更新访问控制模式后,请创建具有安全组访问权限的新挂载目标。 每个挂载目标在创建时都必须配备一个与安全组关联的 虚拟网络接口。 TCP 在创建挂载目标之前,请确认您的安全组允许所有需要访问文件共享的计算主机通过 NFS 协议在 端口(2049)上进行入站访问。
在控制台中创建挂载目标
- 在 IBM Cloud 控制台中,单击导航菜单图标
> 基础架构
> 存储 > 文件存储共享。
- 从列表中选择文件共享。
- 在文件共享详细信息页面,单击“挂载目标”部分中的“创建”。
- 提供挂载目标的名称。
- 选择要创建挂载目标的 VPC。
- 配置虚拟网络接口:
- 为虚拟网络接口指定一个名称。
- 选择创建挂载目标的子网。
- 您可以选择指定一个预留的 IP 地址,或者允许系统自动分配一个。
- 选择控制文件共享访问权限的安全组。
- 如果想在传输过程中保护数据,可选择启用传输中加密。
- 单击创建。
重复这些步骤,为要访问文件共享的每个 VPC 创建挂载目标。
更多信息,请参阅 在控制台中创建挂载目标。
通过 CLI 创建挂载目标
使用虚拟网络接口参数运行 share-mount-target-create 命令。 请将 SHARE_ID 替换为文件共享的 ID 或名称,将 MOUNT_TARGET_NAME 替换为新挂载目标的名称,将 VPC_ID 替换为 VPC 的 ID 或名称,将 VNI_NAME 替换为虚拟网络接口的名称,将 SUBNET_ID 替换为子网的 ID 或名称,并将 SECURITY_GROUP_ID 替换为安全组的 ID 或名称。
ibmcloud is share-mount-target-create SHARE_ID \
--name MOUNT_TARGET_NAME \
--vpc VPC_ID \
--vni-name VNI_NAME \
--vni-subnet SUBNET_ID \
--vni-sgs SECURITY_GROUP_ID
请参阅以下示例:
ibmcloud is share-mount-target-create my-file-share \
--name my-new-mount-target \
--vpc my-vpc \
--vni-name my-vni \
--vni-subnet my-subnet \
--vni-sgs my-security-group
有关详细信息,请参阅 从 CLI 创建挂载目标。
使用 API 创建挂载目标
使用虚拟网络接口配置提出 POST /shares/{share_id}/mount_targets 请求。
curl -X POST \
"$vpc_api_endpoint/v1/shares/$share_id/mount_targets?version=2026-04-28&generation=2" \
-H "Authorization: Bearer $iam_token" \
-d '{
"name": "my-new-mount-target",
"virtual_network_interface": {
"name": "my-vni",
"subnet": {
"id": "'"$subnet_id"'"
},
"security_groups": [
{
"id": "'"$security_group_id"'"
}
]
}
}'
更多信息,请参阅 使用 API 创建挂载目标。
使用 Terraform 创建挂载目标
使用 ibm_is_share_mount_target 资源创建带有虚拟网络接口的挂载目标。
resource "ibm_is_share_mount_target" "example" {
share = ibm_is_share.example.id
name = "my-new-mount-target"
virtual_network_interface {
name = "my-vni"
subnet = ibm_is_subnet.example.id
security_groups = [ibm_is_security_group.example.id]
}
}
有关详细信息,请参阅 使用 Terraform 创建挂载目标。
步骤 6:重新创建副本文件共享(如适用)
如果您在第 3 步中删除了一个副本文件共享,现在可以使用更新后的安全组访问控制模式重新创建它。 新副本文件共享继承源文件共享的安全组访问控制模式。
如果没有复制文件共享,请跳过此步骤,继续执行 步骤 7:在计算主机上挂载文件共享。
在控制台中创建复制文件共享
- 在 IBM Cloud 控制台中,单击导航菜单图标
> 基础架构
> 存储 > 文件存储共享。
- 从列表中选择源文件共享。
- 在文件共享详细信息页面,单击操作图标
,然后选择创建副本。
- 在文件共享副本创建页面,提供以下信息:
- 名称:为副本共享提供唯一名称。
- 副本位置:选择要创建副本的地区和区域。
- 资源组:选择该副本所属的资源组。
- 配置文件:
dp2预选配置文件。 指定最大 IOPS 值。 - 挂载目标:可选择为副本共享创建具有安全组访问权限的挂载目标。
- 同步频率:指定将更改从源同步到副本的频率(每小时、每天、每周、每月或 cron-spec)。
- 加密:配置加密设置。 对于跨区域复制,如果源使用客户管理加密,则必须选择客户根密钥。
- 单击“创建文件共享”。
有关详细信息,请参阅 在控制台中为文件共享添加复制。
通过 CLI 创建副本文件共享
使用 share-replica-create 命令为源文件共享创建一个副本。 将 SOURCE_SHARE_ID 替换为源文件共享的 ID 或名称,将 REPLICA_NAME 替换为新副本共享的名称,将 REPLICA_ZONE 替换为要创建副本的区域,并将 CRON_SPEC 替换为 cron 格式的复制频率(例如,30 17 * * * 表示每天下午 5:30 执行)。
ibmcloud is share-replica-create \
--source-share SOURCE_SHARE_ID \
--name REPLICA_NAME \
--zone REPLICA_ZONE \
--profile dp2 \
--replication-cron-spec "CRON_SPEC"
请参阅以下示例:
ibmcloud is share-replica-create \
--source-share my-file-share \
--name my-replica-file-share \
--zone us-south-1 \
--profile dp2 \
--replication-cron-spec "30 17 * * *"
有关详细信息,请参阅 从 CLI 为现有文件共享创建副本。
使用应用程序接口创建复制文件共享
提出 POST /shares 请求,创建副本文件共享:
curl -X POST \
"$vpc_api_endpoint/v1/shares?version=2026-04-28&generation=2" \
-H "Authorization: Bearer $iam_token" \
-d '{
"name": "my-replica-file-share",
"profile": {
"name": "dp2"
},
"zone": {
"name": "us-south-1"
},
"replication_cron_spec": "30 17 * * *",
"source_share": {
"id": "'"$source_share_id"'"
},
"size": 1000,
"iops": 500
}'
有关详细信息,请参阅 使用 API 创建副本文件共享。
使用 Terraform 创建副本文件共享
在 Terraform 配置中为副本添加 ibm_is_share 资源:
resource "ibm_is_share" "replica" {
name = "my-replica-file-share"
zone = "us-south-1"
profile = "dp2"
size = 1000
iops = 500
source_share = ibm_is_share.source.id
replication_cron_spec = "30 17 * * *"
}
然后,运行 terraform apply 来创建副本。
更多信息,请参阅 使用 Terraform 创建副本文件共享。
第 7 步:在计算主机上挂载文件共享
在创建了具有安全组访问权限的新挂载目标后,请使用新的挂载路径在计算主机上挂载文件共享。 您可以从控制台、CLI 或 API 中的挂载目标详细信息中获取挂载路径。
有关在不同操作系统上加载文件共享的详细说明,请参阅以下主题:
有关所有支持操作系统的完整挂载说明列表,请参阅 挂载文件共享。
后续步骤
迁移完成后,请验证以下条件:
- 文件共享可从所有授权计算主机访问。
- 安全组规则已配置为允许访问。
- 使用文件共享的应用程序运行正常。
- 该挂载在系统重启后仍会保留(请检查
/etc/fstab中的条目)。
有关管理文件共享的更多信息,请参阅 管理文件共享和挂载目标。