Descripción de los blobs en bloques, en blobs anexos y en blobs en páginas
El servicio de almacenamiento ofrece tres tipos de blobs, blobs en bloques, blobs en anexos y blobs en páginas. Se especifica el tipo de blob cuando se crea. Una vez creado el blob, su tipo no se puede cambiar y solo se puede actualizar mediante operaciones adecuadas para ese tipo de blob, es decir, escribir un bloque o una lista de bloques en un blob en bloques, anexar bloques a un blob en anexos y escribir páginas en un blob en páginas.
Todos los blobs reflejan los cambios confirmados inmediatamente. Cada versión del blob tiene una etiqueta única, denominada ETag, que puede usar con condiciones de acceso para asegurarse de que solo cambia una instancia concreta del blob.
Se puede conceder cualquier blob para acceso exclusivo de escritura. Cuando se concede un blob, solamente las llamadas que incluyen el identificador de concesión actual pueden modificar el blob (para blobs en bloques) o sus bloques.
Los blobs se puede duplicar en una instantánea. Para obtener información sobre las instantáneas, consulte Creación de una instantánea de un blob.
Nota:
Los blobs del emulador de Azure Storage se limitan a un tamaño máximo de 2 GiB.
Acerca de los blobs en bloques
Los blobs en bloques están optimizados para cargar grandes cantidades de datos de forma eficaz. Los blobs en bloques se componen de bloques, cada uno de los cuales se identifica mediante un identificador de bloque. Un blob en bloques puede incluir hasta 50 000 bloques. Cada bloque de un blob en bloques puede tener un tamaño diferente, hasta el tamaño máximo permitido para la versión del servicio en uso. Para crear o modificar un blob en bloques, escriba un conjunto de bloques a través de la operación Put Block y, a continuación, confirme los bloques en un blob con la operación Put Block List .
Los blobs con un tamaño menor que un determinado tamaño (determinado por la versión del servicio) se pueden cargar en su totalidad con una única operación de escritura a través de Put Blob.
En la tabla siguiente se describen los tamaños máximos de bloque y blob que permite la versión del servicio.
Versión del servicio | Tamaño máximo de bloque (a través de Put Block) | Tamaño máximo de blob (a través de Put Block List) | Tamaño máximo del blob a través de una operación de escritura única (a través de Put Blob) |
---|---|---|---|
Versión 2019-12-12 y posteriores | 4000 MiB | Aproximadamente 190,7 TiB (4000 MiB x 50 000 bloques) | 5000 MiB |
De la versión 2016-05-31 a la versión 2019-07-07 | 100 MiB | Aproximadamente 4,75 TiB (100 MiB x 50 000 bloques) | 256 MiB |
Versiones anteriores a 2016-05-31 | 4 MiB | Aproximadamente 195 GiB (4 MiB x 50 000 bloques) | 64 MiB |
Los clientes de almacenamiento tienen como valor predeterminado una carga máxima de blobs único de 128 MiB, que se puede establecer en la biblioteca cliente de Azure Storage para .NET versión 11 mediante la propiedad SingleBlobUploadThresholdInBytes del objeto BlobRequestOptions . Cuando una carga de blobs en bloques es superior al valor de esta propiedad, los clientes de almacenamiento dividen el archivo en bloques. Puede establecer el número de subprocesos usados para cargar los bloques en paralelo por solicitud mediante la propiedad ParallelOperationThreadCount del objeto BlobRequestOptions .
Cuando se carga un bloque en un blob de la cuenta de almacenamiento, este está asociado al blob en bloques especificado, pero no se convierte en parte del blob hasta que se confirme una lista de bloques que incluya el identificador del nuevo bloque. Los bloques nuevos permanecen sin confirmar hasta que se confirman o descartan específicamente. Puede haber un máximo de 100 000 bloques sin confirmar. Cuando se escribe un bloque no se actualiza la última hora de modificación de los blobs existentes.
Los blobs en bloques disponen de características que ayudan a administrar archivos grandes en varias redes. Con un blob en bloques, puede cargar varios bloques en paralelo para reducir el tiempo de carga. Cada bloque puede incluir un hash MD5 para comprobar la transferencia, de forma que puede llevar el seguimiento del progreso de la carga y volver a enviar bloques según sea necesario. Puede cargar los bloques en cualquier orden y determinar su secuencia en el paso final de confirmación de la lista de bloques. También puede cargar un bloque nuevo para reemplazar un bloque existente sin confirmar en el mismo identificador de bloque. Tiene una semana para confirmar los bloques de un blob antes de que se descarten. Todos los bloques sin confirmar se descartan también cuando se produce una operación de confirmación de lista de bloques sin incluirlos.
Puede modificar un blob en bloques existente si inserta, reemplaza o elimina los bloques existentes. Después de cargar el bloque o bloques que han cambiado, puede confirmar una versión nueva del blob; para ello, debe confirmar los bloques nuevos con los bloques existentes que desea mantener mediante una sola operación de confirmación. Para insertar el mismo intervalo de bytes en dos ubicaciones diferentes de blob confirmado, puede confirmar el mismo bloque en dos lugares en la misma operación de confirmación. En las operaciones de confirmación, si no se encuentra algún bloque, fracasará la totalidad de la operación de confirmación y el blob no se modificará. Cualquier compromiso de bloque sobrescribe las propiedades y metadatos existentes del blob y descarta todos los bloques no confirmados.
Los identificadores de bloque son cadenas de igual longitud en un blob. El código de cliente del bloque suele utilizar codificación de base 64 para homogenizar las cadenas según la misma longitud. Cuando se utiliza codificación de base 64, la cadena codificada previamente debe ser de 64 bytes o menos. Los valores de identificador de bloque puede duplicarse en diferentes blobs.
Si escribe un bloque para un blob que no exista, se creará un blob en bloques nuevo con cero bytes de longitud. Este blob aparecerá en listas de blobs con blobs sin confirmar. Si no confirma ningún bloque en este blob, y sus bloques no confirmados se descartarán una semana después de la última carga correcta de bloques. Todos los bloques sin confirmar se descartarán también cuando se crea en un solo paso (en lugar del proceso en dos pasos de carga y confirmación) un blob nuevo con el mismo nombre.
Acerca de los blobs en páginas
Los blobs en páginas son un conjunto de páginas de 512 bytes optimizadas para operaciones aleatorias de lectura y escritura. Para crear un blob en páginas, se inicializa el blob en páginas y se especifica el tamaño máximo que puede alcanzar el blob en páginas. Para agregar o actualizar el contenido de un blob en páginas, escriba una página o página especificando un desplazamiento y un intervalo que se alineen con límites de página de 512 bytes. Una escritura en un blob en páginas puede sobrescribir solo una página, algunas páginas o hasta 4 MiB del blob en páginas. La escritura en blobs en páginas se realiza en contexto y se confirma inmediatamente en el blob. El tamaño máximo de un blob en páginas es de 8 TiB.
Los discos de máquina virtual de Azure están respaldados por blobs en páginas. Azure ofrece dos tipos de almacenamiento en disco duradero: Premium y Estándar. Premium Storage para blobs en páginas está diseñado para cargas de trabajo de máquinas virtuales de Azure que requieren un alto rendimiento coherente y una latencia baja. Para obtener información detallada, consulte la sección Premium de unidades de estado sólido (SSD) del artículo Selección de un tipo de disco para máquinas virtuales IaaS. Para más información sobre los objetivos de escalabilidad de Premium Storage para blobs en páginas, consulte Objetivos de escalabilidad y rendimiento de Azure Storage.
Acerca de los blobs en anexos
Un blob en anexos se compone de bloques y está optimizado para las operaciones de anexión. Al modificar un blob en anexos, los bloques se agregan al final del blob solo a través de la operación Anexar bloque . No se admite la actualización o eliminación de bloques existentes. A diferencia de un blob en bloques, un blob en anexos no expone sus identificadores de bloque.
Cada bloque de un blob en anexos puede tener un tamaño diferente, hasta un máximo de 4 MiB, y un blob en anexos puede incluir hasta 50 000 bloques. Por lo tanto, el tamaño máximo de un blob en anexos es ligeramente superior a 195 GiB (4 MiB X 50 000 bloques).