En esta página se describe el proceso para cambiar la ubicación de los contenedores. Para obtener información sobre el cambio de ubicación de los segmentos, consulta Cambio de ubicación de los segmentos.
Antes de empezar
Antes de poder cambiar la ubicación de los contenedores, debes completar los siguientes pasos:
Consulta las cuotas y los límites para asegurarte de que la nueva ubicación tenga cuotas suficientes para alojar los datos del contenedor.
Determina el tipo de reubicación del bucket para saber si se requiere un tiempo de inactividad de escritura.
Si usas informes de inventario, guarda tus configuraciones.
Obtener los roles necesarios, que se describen en la sección siguiente.
Obtener los roles necesarios
Para obtener los permisos que necesitas para cambiar la ubicación de los segmentos, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Administrador de Storage (roles/storage.admin
) en el proyecto.
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
Este rol predefinido contiene los permisos necesarios para cambiar la ubicación de los contenedores. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:
Permisos obligatorios
Para cambiar la ubicación de los contenedores, se necesitan los siguientes permisos:
-
Para cambiar la ubicación de un contenedor, sigue estos pasos:
storage.buckets.relocate
-
Para ver el estado de una operación de cambio de ubicación de un segmento, siga estos pasos:
storage.bucketOperations.get
-
Para ver la lista de operaciones de cambio de ubicación de segmentos de un proyecto, siga estos pasos:
storage.bucketOperations.list
-
Para cancelar una operación de cambio de ubicación de un segmento, sigue estos pasos:
storage.bucketOperations.cancel
-
Para ver los metadatos de un segmento durante las fases de prueba y copia de datos incremental de la reubicación del segmento, sigue estos pasos:
storage.buckets.get
-
Para obtener un objeto de un contenedor que quieras cambiar de ubicación, haz lo siguiente:
storage.objects.get
-
Para mostrar los objetos de un segmento que quieras cambiar de ubicación, haz lo siguiente:
storage.objects.list
También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.
Reubicar segmentos
En esta sección se describe el proceso para cambiar la ubicación de los segmentos de Cloud Storage. Cuando cambias la ubicación de un contenedor, inicias el proceso de copia de datos incremental, lo monitorizas y, a continuación, inicias el paso de sincronización final. Para obtener más información sobre estos pasos, consulta Información sobre el proceso de cambio de ubicación de los contenedores.
Realizar una prueba de funcionamiento
Para minimizar los posibles problemas durante el proceso de cambio de ubicación de los contenedores, te recomendamos que hagas una prueba. Una prueba de funcionamiento simula el proceso de cambio de ubicación del contenedor sin mover datos, lo que te ayuda a detectar y resolver problemas en las primeras fases. La prueba de funcionamiento comprueba las siguientes incompatibilidades:
- Claves de encriptado gestionadas por el cliente (CMEK) o claves de encriptado proporcionadas por el cliente (CSEK)
- Políticas de retención bloqueadas
- Objetos con retenciones temporales
- Subidas multiparte
Aunque una prueba no puede identificar todos los problemas posibles, ya que algunos solo pueden surgir durante la migración activa debido a factores como la disponibilidad de recursos en tiempo real, reduce el riesgo de tener que afrontar problemas que requieren mucho tiempo durante la reubicación real.
Línea de comandos
Simula la prueba de funcionamiento de la reubicación del contenedor:
gcloud storage buckets relocate gs://BUCKET_NAME --location=LOCATION --dry-run
Donde:
BUCKET_NAME
es el nombre del contenedor que quieres cambiar de ubicación.LOCATION
es la ubicación de destino del contenedor.
Después de iniciar una prueba, se inicia una operación de larga duración. Recibirás un ID de operación y una descripción de la operación. Para hacer un seguimiento del progreso y la finalización de la prueba, consulta los detalles de la operación de larga duración.
Si la prueba revela algún problema, resuélvelo antes de continuar con el paso para iniciar la copia incremental de datos.
APIs REST
API JSON
Tener instalada e inicializadala CLI de gcloud, que te permite generar un token de acceso para el encabezado
Authorization
.Crea un archivo JSON que contenga la configuración del segmento, que debe incluir los parámetros
destinationLocation
yvalidateOnly
. Consulta laBuckets: relocate
documentación para ver la lista completa de ajustes. Estos son los ajustes habituales que puedes incluir:{ "destinationLocation": "DESTINATION_LOCATION", "destinationCustomPlacementConfig": { "dataLocations": [ LOCATIONS, ... ] }, "validateOnly": "true" }
Donde:
DESTINATION_LOCATION
es la ubicación de destino del contenedor.LOCATIONS
es una lista de códigos de ubicación que se utilizarán para la configuración dual.validateOnly
se ha definido comotrue
para realizar una prueba.
Usa
cURL
para llamar a la API JSON:curl -X POST --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/bucket=BUCKET_NAME/relocate"
Donde:
JSON_FILE_NAME
es el nombre del archivo JSON que has creado.BUCKET_NAME
es el nombre del contenedor que quieres cambiar de ubicación.
Después de iniciar una prueba, se inicia una operación de larga duración. La prueba de funcionamiento se completa correctamente si se cumplen las siguientes condiciones:
- La prueba de funcionamiento no detecta ningún error.
El recurso
operations
devuelve el valor del campodone
comotrue
.{ "kind": "storage#operation", "name": "projects/_/buckets/bucket/operations/operation_id", "metadata": { "@type": OperationMetadataType*, metadata OperationMetadata* }, "done": "true", "response": { "@type": ResponseResourceType*, response ResponseResource* } }
Si la prueba revela algún problema, resuélvelo antes de continuar con el paso para iniciar la copia incremental de datos.
Iniciar la copia de datos incremental
Línea de comandos
Inicia la operación de cambio de ubicación del contenedor:
gcloud storage buckets relocate gs://BUCKET_NAME --location=LOCATION
Donde:
BUCKET_NAME
es el nombre del contenedor que quieres cambiar de ubicación.LOCATION
es la ubicación de destino del contenedor.
APIs REST
API JSON
Tener instalada e inicializadala CLI de gcloud, que te permite generar un token de acceso para el encabezado
Authorization
.Crea un archivo JSON que contenga la configuración del segmento. Consulta la
Buckets: relocate
documentación para ver la lista completa de ajustes. Estos son los ajustes habituales que puedes incluir:{ "destinationLocation": "DESTINATION_LOCATION", "destinationCustomPlacementConfig": { "dataLocations": [ LOCATIONS, ... ] }, "validateOnly": "false" }
Donde:
DESTINATION_LOCATION
es la ubicación de destino del contenedor.LOCATIONS
es una lista de códigos de ubicación que se utilizarán para la configuración dual.validateOnly
se define comofalse
para iniciar el paso de copia de datos incremental de la reubicación del contenedor.
Usa
cURL
para llamar a la API JSON:curl -X POST --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/bucket=BUCKET_NAME/relocate"
Donde:
JSON_FILE_NAME
es el nombre del archivo JSON que has creado.BUCKET_NAME
es el nombre del contenedor que quieres cambiar de ubicación.
Monitorizar la copia de datos incremental
El proceso de cambio de ubicación de un contenedor es una operación de larga duración que debe monitorizarse para ver cómo avanza. Puede consultar periódicamente la lista de operaciones de larga duración para ver el estado del paso de copia de datos incremental. Para obtener información sobre cómo obtener los detalles de una operación de larga duración, enumerar o cancelar operaciones de larga duración, consulta Usar operaciones de larga duración en Cloud Storage.
En el siguiente ejemplo se muestra el resultado generado por una operación de copia de datos incremental:
done: false kind: storage#operation metadata: '@type': type.googleapis.com/google.storage.control.v2.RelocateBucketMetadata commonMetadata: createTime: '2024-10-21T04:26:59.666Z endTime: '2024-12-29T23:39:53.340Z' progressPercent: 99 requestedCancellation: false type: relocate-bucket updateTime: '2024-10-21T04:27:03.2892' destinationLocation: US-CENTRAL1 finalizationState: 'READY' progress: byteProgressPercent: 100 discoveredBytes: 200 remainingBytes: 0 discoveredObjectCount: 10 remainingObjectCount: 8 objectProgressPercent: 100 discoveredSyncCount: 8 remainingSyncCount: 0 syncProgressPercent: 100 relocationState: SYNCING sourceLocation: US validateOnly: false estimatedWriteDowntimeDuration: '7200s' writeDowntimeExpireTime: '2024-12-30T10:34:01.786Z' name: projects//buckets/my-bucket1/operations/Bar7-1b0khdew@nhenUQRTF_R-Kk4dQ5V1f8fzezkFcPh3XMvlTqJ6xhnqJ1h_QXFIeAirrEqkjgu4zPKSRD6WSSG5UGXil6w response: '@type': type.googleapis.com/google.storage.control.v2.RelocateBucketResponse selfLink: https://storage.googleusercontent.com/storage/v1_ds/b/my-bucket1/operations/Bar7-1b0khdew@nhenUQRTF_R-Kk4dQ5V1f8fzezkFcPh3XMvlTqJ6xhnqJ1h_QXFIeAirrEqkjgu4zPKSRD6WSSG5UGXil6w
En la siguiente tabla se proporciona información sobre los campos clave de la salida generada por la operación de copia de datos incremental:
Nombre del campo | Descripción | Posibles valores |
---|---|---|
done |
Indica que se ha completado la operación de cambio de ubicación del contenedor. | true , false |
kind |
Indica que este recurso representa una operación de almacenamiento. | |
metadata |
Proporciona información sobre la operación. | |
metadata.@type |
Indica el tipo de operación como reubicación de un cubo. | |
metadata.commonMetadata |
Metadatos comunes a todas las operaciones. | |
metadata.commonMetadata.createTime |
Hora en la que se creó la operación de larga duración. | |
metadata.commonMetadata.endTime |
Hora en la que finalizó la operación de larga duración. | |
metadata.commonMetadata.progressPercent |
El progreso estimado de la operación de larga duración, en porcentaje. | Entre 0 y 100 %. El valor -1 significa que el progreso es desconocido o no aplicable. |
metadata.commonMetadata.requestedCancellation |
Indica si el usuario ha solicitado la cancelación de la operación de larga duración. | true , false |
metadata.commonMetadata.type |
Indica el tipo de operación de larga duración. | |
metadata.commonMetadata.updateTime |
Hora a la que se actualizó la operación de larga duración por última vez. | |
metadata.destinationLocation |
Ubicación de destino del segmento. | |
metadata.finalizationState |
Indica si se puede iniciar el paso de sincronización final. |
|
metadata.progress |
Detalles del progreso de la operación de reubicación. | |
metadata.progress.byteProgressPercent |
Progreso de los bytes copiados en porcentaje. | Entre 0 y 100 %. El valor -1 significa que el progreso es desconocido o no aplicable. |
metadata.progress.discoveredBytes |
Número de bytes detectados en el segmento de origen. | |
metadata.progress.discoveredObjectCount |
Número de objetos descubiertos en el segmento de origen. | |
metadata.progress.discoveredSyncCount |
Número de actualizaciones de metadatos de objetos detectadas en el segmento de origen. | |
metadata.progress.objectProgressPercent |
Progreso de los objetos copiados en porcentaje. | Entre 0 y 100 %. El valor -1 significa que el progreso es desconocido o no aplicable. |
metadata.progress.remainingBytes |
Número de bytes que quedan por copiar del contenedor de origen al de destino. | |
metadata.progress.remainingObjectCount |
Número de objetos que quedan por copiar del segmento de origen al de destino. | |
metadata.progress.remainingSyncCount |
Número de actualizaciones de metadatos de objetos restantes que se van a sincronizar. | |
metadata.progress.syncProgressPercent |
Progreso de las actualizaciones de metadatos de objetos que se van a sincronizar en porcentaje. | Entre 0 y 100 %. El valor -1 significa que el progreso es desconocido o no aplicable. |
metadata.relocationState |
Estado general de la operación de cambio de ubicación del contenedor. |
|
metadata.sourceLocation |
Ubicación de origen del segmento. | |
metadata.validateOnly |
Indica si se ha iniciado una prueba de la reubicación del segmento. | true , false |
metadata.estimatedWriteDowntimeDuration |
Duración estimada del tiempo de inactividad de escritura. Se rellena cuando finalizationState es READY . |
El valor mínimo es 7200s . |
metadata.writeDowntimeExpireTime |
La hora en la que caduca el tiempo de inactividad de escritura. | |
name |
Identificador único de esta operación de reubicación. Formato: projects/_/buckets/bucket-name/operations/operation-id |
|
response |
La respuesta de la operación. | |
response.@type |
El tipo de respuesta. | |
selfLink |
Un enlace a esta operación. |
Si tienes problemas al interactuar con otras funciones de Cloud Storage, consulta Limitaciones.
Iniciar el paso de sincronización final
El último paso de la sincronización implica un periodo durante el cual no puedes realizar operaciones de escritura en el contenedor. Te recomendamos que programes el paso de sincronización final en un momento que minimice las interrupciones en tus aplicaciones.
Antes de continuar, comprueba que el contenedor esté totalmente preparado consultando el valor de finalizationState
en el resultado del paso copia de datos incrementales. El valor de finalizationState
debe ser READY
para continuar.
Si inicias el paso de sincronización final antes de tiempo, el comando devolverá un mensaje de error The relocate bucket operation is not ready to advance to finalization running state
, pero el proceso de reubicación continuará.
Te recomendamos que esperes hasta que el valor de progressPercent
sea 99
antes de iniciar el paso de sincronización final.
Línea de comandos
Inicia el paso de sincronización final de la operación de cambio de ubicación del segmento una vez que el valor de finalizationState
sea READY
:
gcloud storage buckets relocate --finalize --operation=projects/_/buckets/BUCKET_NAME/operations/OPERATION_ID
Donde:
BUCKET_NAME
es el nombre del contenedor que quieres cambiar de ubicación.OPERATION_ID
es el ID de la operación de larga duración, que se devuelve en la respuesta de los métodos que llamas. Por ejemplo, la siguiente respuesta se devuelve al llamar agcloud storage operations list
y el ID de la operación de larga duración esAbCJYd8jKT1n-Ciw1LCNXIcubwvij_TdqO-ZFjuF2YntK0r74
.
`name: projects/_/buckets/my-bucket/operations/AbCJYd8jKT1n-Ciw1LCNXIcubwvij_TdqO-ZFjuF2YntK0r74`
Define la marca ttl
para tener más control sobre el proceso de reubicación. Por ejemplo:
gcloud storage buckets relocate --finalize --ttl TTL_DURATION --operation=projects/_/buckets/BUCKET_NAME/operations/OPERATION_ID
Donde:
TTL_DURATION
es el tiempo de vida (TTL) de la fase de inactividad de escritura durante un proceso de reubicación. Se expresa como una cadena, como 12h
para 12 horas. El valor TTL_DURATION
determina la duración máxima permitida de la fase de inactividad de escritura. Si el tiempo de inactividad de escritura supera este límite, el proceso de reubicación vuelve automáticamente al paso de copia incremental y se vuelven a habilitar las operaciones de escritura en el bucket. El valor debe estar entre 6h
(6 horas) y 48h
(48 horas). Si no se especifica ningún valor, se utiliza 12h
(12 horas) de forma predeterminada.
APIs REST
API JSON
Tener instalada e inicializadala CLI de gcloud, que te permite generar un token de acceso para el encabezado
Authorization
.Crea un archivo JSON que contenga la configuración para cambiar la ubicación del segmento. Consulta la
Buckets: advanceRelocateBucket
documentación para ver la lista completa de ajustes. Estos son los ajustes habituales que puedes incluir:{ "expireTime": "EXPIRE_TIME", "ttl": "TTL_DURATION" }
Donde:
EXPIRE_TIME
es el tiempo que tarda en caducar el tiempo de inactividad de escritura.TTL_DURATION
es el tiempo de vida (TTL) de la fase de inactividad de escritura durante un proceso de reubicación. Se expresa como una cadena, como12h
para 12 horas. El valorTTL_DURATION
determina la duración máxima permitida de la fase de inactividad de escritura. Si el tiempo de inactividad de escritura supera este límite, el proceso de reubicación vuelve automáticamente al paso de copia incremental y se vuelven a habilitar las operaciones de escritura en el bucket. El valor debe estar entre6h
(6 horas) y48h
(48 horas). Si no se especifica ningún valor, se utiliza12h
(12 horas) de forma predeterminada.
Usa
cURL
para llamar a la API JSON:curl -X POST --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/bucket/BUCKET_NAME/operations/OPERATION_ID/advanceRelocateBucket"
Donde:
JSON_FILE_NAME
es el nombre del archivo JSON que has creado.BUCKET_NAME
es el nombre del contenedor que quieres cambiar de ubicación.OPERATION_ID
es el ID de la operación de larga duración, que se devuelve en la respuesta de los métodos que llamas. Por ejemplo, la siguiente respuesta se devuelve al llamar aOperations: list
y el ID de la operación de larga duración esAbCJYd8jKT1n-Ciw1LCNXIcubwvij_TdqO-ZFjuF2YntK0r74
.
Validar el proceso de cambio de ubicación del segmento
Después de iniciar una reubicación, comprueba que se haya completado correctamente. En esta sección se explica cómo confirmar que la transferencia de datos se ha realizado correctamente.
Valide que el proceso de reubicación se ha completado correctamente con los siguientes métodos:
Sondear operaciones de larga duración: la reubicación de un contenedor es una operación de larga duración. Puedes sondear la operación de larga duración mediante el
operation id
para monitorizar su progreso y confirmar que se ha completado correctamente verificando el estadosuccess
. Esto implica consultar periódicamente el estado de la operación hasta que alcance un estado terminal. Para obtener información sobre cómo monitorizar operaciones de larga duración, consulta Usar operaciones de larga duración en Cloud Storage.Analizar entradas de registros de auditoría de Cloud: los registros de auditoría de Cloud proporcionan un registro detallado de los eventos y las operaciones de tu entorno de Google Cloud . Puedes analizar las entradas de registros de auditoría de Cloud asociadas a la reubicación para comprobar si se ha completado correctamente. Analiza los registros para detectar errores, advertencias o comportamientos inesperados que puedan indicar problemas durante la transferencia. Para obtener información sobre cómo ver los registros de auditoría de Cloud, consulta Ver registros de auditoría.
Las siguientes entradas de registro te ayudan a determinar si la migración se ha completado correctamente o no:
Reubicación correcta:
Relocate bucket succeeded. All existing objects are now in the new placement configuration.
Reubicación fallida:
Relocate bucket has failed. Bucket location remains unchanged.
Con las notificaciones de Pub/Sub, también puedes configurar alertas que te avisen cuando aparezca en los registros el evento de éxito o de fallo específico. Para obtener información sobre cómo configurar las notificaciones de Pub/Sub, consulta Configurar notificaciones de Pub/Sub para Cloud Storage.
Completar las tareas posteriores al cambio de ubicación del contenedor
Una vez que hayas cambiado la ubicación de tu contenedor, sigue estos pasos:
- Opcional: Restaura los controles de acceso basados en etiquetas de tu contenedor.
- Las configuraciones de informes de inventario no se conservan durante el proceso de cambio de ubicación, por lo que tendrá que volver a crearlas manualmente. Para obtener información sobre cómo crear una configuración de informe de inventario, consulta Crear una configuración de informe de inventario.
- Actualiza tus configuraciones de infraestructura como código, como Terraform y el conector de configuración de Google Kubernetes Engine, para especificar la nueva ubicación del bucket.
- Los endpoints regionales están vinculados a ubicaciones concretas, por lo que tendrás que modificar el código de tu aplicación para reflejar el nuevo endpoint.
Cómo gestionar las operaciones de cambio de ubicación de segmentos fallidas
Tenga en cuenta los siguientes factores antes de gestionar las operaciones de reubicación de cubos fallidas:
Si no se puede cambiar la ubicación de un contenedor, es posible que queden recursos obsoletos en el destino, como archivos temporales o copias de datos incompletas. Debes esperar entre 7 y 14 días antes de iniciar otra reubicación de un contenedor en el mismo destino. Puedes iniciar una reubicación de un contenedor a otro destino inmediatamente.
Si la ubicación de destino no es la óptima para tus datos, puede que quieras deshacer el cambio de ubicación. Sin embargo, no puedes iniciar una reubicación de inmediato. Debes esperar hasta 14 días para poder volver a iniciar el proceso de traslado. Esta restricción se ha implementado para garantizar la estabilidad y evitar conflictos de datos.
Siguientes pasos
- Consulta información sobre la reubicación de contenedores.