개요

**Object Storage(오브젝트 스토리지)**는 데이터를 파일·블록이 아닌 객체(Object) 단위로 저장하는 스토리지 방식. 각 객체는 데이터 + 메타데이터 + 고유 ID로 구성.

  • 대표 서비스: AWS S3, Google Cloud Storage, Azure Blob Storage
  • 접근 방식: HTTP API (REST)
  • 마운트: FUSE(fuse)로 로컬 파일시스템처럼 마운트 가능

파일시스템 vs 블록 vs 오브젝트

항목파일시스템블록 스토리지오브젝트 스토리지
구조계층적 디렉토리블록 단위플랫 네임스페이스
접근파일 경로디바이스 직접HTTP API
확장성제한적제한적무제한 (페타바이트+)
수정부분 수정 가능부분 수정 가능객체 전체 교체
용도로컬 파일DB, VM 디스크백업, 미디어, 로그

주요 서비스

서비스제공사특징
Amazon S3AWS업계 표준, API 기준점
Google Cloud StorageGCPS3 호환 API, BigQuery 연동
Azure Blob StorageMicrosoftAzure Blob Storage
Cloudflare R2Cloudflare이그레스 비용 없음, S3 호환
MinIO오픈소스자체 호스팅, S3 호환
Backblaze B2Backblaze저렴한 가격, S3 호환

S3 API 호환성

대부분의 오브젝트 스토리지가 AWS S3 API 호환을 지원함 → 코드 변경 없이 서비스 교체 가능.

import boto3
 
# AWS S3
s3 = boto3.client('s3')
 
# MinIO (자체 호스팅, S3 호환)
s3 = boto3.client('s3',
    endpoint_url='http://localhost:9000',
    aws_access_key_id='minioadmin',
    aws_secret_access_key='minioadmin'
)
 
# 파일 업로드
s3.upload_file('local.txt', 'my-bucket', 'remote.txt')
 
# 파일 다운로드
s3.download_file('my-bucket', 'remote.txt', 'local.txt')

FUSE 마운트

오브젝트 스토리지를 로컬 파일시스템처럼 마운트:

  • fuse: 사용자 공간 파일시스템 인터페이스
  • s3fs: S3를 FUSE로 마운트
  • gcsfuse: Google Cloud Storage FUSE 마운트
  • blobfuse: Azure Blob Storage FUSE 마운트
# s3fs 예시
s3fs my-bucket /mnt/s3 -o passwd_file=~/.passwd-s3fs

관련 항목