블록 Blob, 추가 Blob 및 페이지 Blob 이해
스토리지 서비스는 세 가지 유형의 Blob, 블록 Blob, 추가 Blob 및 페이지 Blob을 제공합니다. Blob를 만들 때 Blob 유형을 지정합니다. Blob을 만든 후에는 해당 형식을 변경할 수 없으며 해당 Blob 형식에 적합한 작업( 예: 블록 Blob에 블록 또는 블록 목록 작성, 추가 Blob에 블록 추가 및 페이지 Blob에 페이지 쓰기)을 사용하여 업데이트할 수 있습니다.
모든 Blob는 커밋된 변경 사항을 즉시 반영합니다. Blob는 각 버전별로 ETag라고 하는 전용 태그를 사용하므로 이 태그를 사용하여 액세스하면 Blob의 특정 인스턴스만 변경할 수 있습니다.
모든 Blob는 배타적인 쓰기 액세스를 위해 임대할 수 있습니다. Blob를 임대할 경우 현재 임대 ID가 포함된 호출만 해당 Blob 또는 블록(블록 Blob의 경우)을 수정할 수 있습니다.
모든 Blob는 스냅숏으로 복제할 수 있습니다. 스냅샷에 대한 자세한 내용은 Blob의 스냅샷 만들기를 참조하세요.
참고
Azure Storage 에뮬레이터의 Blob은 최대 크기가 2GiB로 제한됩니다.
블록 Blob 정보
블록 Blob은 많은 양의 데이터를 효율적으로 업로드하기 위해 최적화됩니다. 블록 Blob은 블록으로 구성되며, 각 블록은 블록 ID로 식별됩니다. 블록 Blob은 최대 50,000개 블록을 포함할 수 있습니다. 블록 Blob의 각 블록은 사용 중인 서비스 버전에 허용되는 최대 크기까지 다른 크기일 수 있습니다. 블록 Blob을 만들거나 수정하려면 블록 배치 작업을 통해 블록 집합을 작성한 다음 블록 목록 배치 작업을 사용하여 블록을 Blob에 커밋합니다.
특정 크기(서비스 버전에 따라 결정됨)보다 작은 Blob은 Put Blob을 통해 단일 쓰기 작업으로 전체적으로 업로드할 수 있습니다.
다음 표에서는 서비스 버전별로 허용되는 최대 블록 및 Blob 크기를 설명합니다.
서비스 버전 | 최대 블록 크기(블록 배치 사용) | 최대 Blob 크기(블록 목록 배치 사용) | 단일 쓰기 작업을 통한 최대 Blob 크기(Blob 배치 사용) |
---|---|---|---|
버전 2019-12-12 이상 | 4000MiB | 약 190.7TiB(4000MiB X 50,000 블록) | 5,000MiB |
버전 2016-05-31~버전 2019-07-07 | 100MiB | 약 4.75TiB(100MiB X 50,000 블록) | 256MiB |
2016-05-31 이전 버전 | 4MiB | 약 195GiB(4MiB X 50,000 블록) | 64MiB |
스토리지 클라이언트는 기본적으로 BlobRequestOptions 개체의 SingleBlobUploadThresholdInBytes 속성을 사용하여 .NET 버전 11용 Azure Storage 클라이언트 라이브러리에서 설정할 수 있는 최대 단일 Blob 업로드 128MiB로 설정됩니다. 이 속성의 값보다 큰 블록 Blob를 업로드할 경우 저장소 클라이언트는 파일을 여러 블록으로 나눕니다. BlobRequestOptions 개체의 ParallelOperationThreadCount 속성을 사용하여 요청별로 블록을 병렬로 업로드하는 데 사용되는 스레드 수를 설정할 수 있습니다.
저장소 계정의 Blob에 블록을 업로드할 경우 지정된 블록 Blob와 연결되지만 새 블록 ID를 포함하여 블록의 목록을 커밋할 때까지는 이 Blob에 포함되지 않습니다. 구체적으로 커밋 또는 삭제될 때까지 새 블록은 커밋되지 않은 상태로 남아 있습니다. 커밋되지 않은 블록은 최대 100,000개일 수 있습니다. 블록 쓰기 작업은 기존 Blob의 마지막 수정 시간을 업데이트하지 않습니다.
블록 Blob는 네트워크를 통해 대용량 파일을 관리하는 기능을 제공합니다. 블록 Blob를 사용하면 동시에 여러 블록을 업로드하여 업로드 시간을 줄일 수 있습니다. 각 블록은 MD5 해시를 포함하여 전송을 확인할 수 있으므로 업로드 진행 과정을 추적하여 필요할 경우 블록을 재전송할 수 있습니다. 원하는 순서대로 블록을 업로드할 수 있으며 최종 블록 목록 커밋 단계에서 순서를 정할 수 있습니다. 또한 새 블록을 업로드하여 동일한 블록 ID의 커밋되지 않은 기존 블록을 대체할 수 있습니다. 1주 내에 Blob로 블록을 커밋하지 않으면 삭제됩니다. 블록 목록 커밋 작업이 발생했지만 포함되지 않아 커밋되지 않은 모든 블록 또한 삭제됩니다.
기존 블록을 삽입, 교체 또는 삭제하여 기존 블록 Blob를 수정할 수 있습니다. 변경된 블록을 업로드한 후 한 번의 커밋 작업으로 유지하려는 기존 블록과 함께 새 블록을 커밋하여 새 버전의 Blob를 커밋할 수 있습니다. 커밋된 Blob 내 두 개의 서로 다른 위치에 동일한 범위의 바이트를 삽입하기 위해 한 번의 커밋 작업으로 두 곳에 동일한 블록을 커밋할 수 있습니다. 커밋 작업 시 블록이 발견되지 않을 경우 전체 커밋 작업은 실패하고 오류 메시지가 반환되며 Blob는 수정되지 않습니다. 모든 블록 약정은 Blob의 기존 속성 및 메타데이터를 덮어쓰고 커밋되지 않은 모든 블록을 삭제합니다.
블록 ID는 한 Blob 내 동일한 길이의 문자열입니다. 블록 클라이언트 코드는 일반적으로 Base-64 인코딩을 사용하여 동일한 길이의 문자열로 정규화합니다. Base-64 인코딩을 사용할 때 사전 인코딩된 문자열이 64바이트 이하여야 합니다. 블록 ID 값은 다른 Blob에 복제할 수 있습니다.
존재하지 않는 Blob에 블록을 쓰면 0바이트 길이로 새 블록 Blob가 생성됩니다. 이 Blob는 커밋되지 않은 Blob가 포함된 Blob 목록에 표시됩니다. 이 Blob에 블록을 커밋하지 않으면 블록 업로드가 마지막으로 성공한 지 1주일 후에 해당 블록과 커밋되지 않은 블록이 삭제됩니다. 또한 블록 업로드 후 커밋하는 2단계의 프로세스가 아닌 1단계 만에 동일한 이름의 새 Blob를 생성할 때 커밋되지 않은 블록도 모두 삭제됩니다.
페이지 Blob 정보
페이지 Blob는 512바이트 페이지의 컬렉션으로 임의 읽기 및 쓰기 작업에 최적화되어 있습니다. 페이지 Blob를 만들려면 페이지 Blob를 초기화한 다음 페이지 Blob의 최대 크기를 지정합니다. 페이지 Blob의 콘텐츠를 추가하거나 업데이트하려면 오프셋과 둘 다 512바이트 페이지 경계에 맞는 범위를 지정하여 페이지 또는 페이지를 작성합니다. 페이지 Blob에 대한 쓰기는 한 페이지, 일부 페이지 또는 페이지 Blob의 최대 4MiB만 덮어쓸 수 있습니다. 페이지 Blob 쓰기는 실시간으로 이루어지며 즉시 Blob에 커밋됩니다. 페이지 Blob의 최대 크기는 8TiB입니다.
Azure 가상 머신 디스크는 페이지 Blob에서 지원됩니다. Azure는 프리미엄 및 표준이라는 두 가지 유형의 지속성 디스크 스토리지를 제공합니다. 페이지 Blob용 Premium Storage는 일관된 고성능 및 짧은 대기 시간이 필요한 Azure 가상 머신 워크로드를 위해 설계되었습니다. 자세한 내용은 IaaS VM용 디스크 유형 선택 문서의 프리미엄 SSD(반도체 드라이브) 섹션을 참조하세요. 페이지 Blob에 대한 Premium Storage의 확장성 목표에 대한 자세한 내용은 Azure Storage 확장성 및 성능 목표를 참조하세요.
추가 Blob 정보
추가 Blob은 블록으로 구성되며 추가 작업에 최적화되어 있습니다. 추가 Blob을 수정하면 블록 추가 작업을 통해 서만 블록이 Blob 끝에 추가됩니다. 기존 블록의 업데이트 또는 삭제는 지원되지 않습니다. 블록 Blob과 달리 추가 Blob은 해당 블록 ID를 노출하지 않습니다.
추가 Blob의 각 블록은 최대 4MiB까지 다른 크기일 수 있으며 추가 Blob에는 최대 50,000개의 블록이 포함될 수 있습니다. 따라서 추가 Blob의 최대 크기는 195GiB(4MiB X 50,000 블록)를 약간 초과합니다.