Swift (Object Storage Service)
- 정의: Swift는 Openstack의 오브젝트 스토리지 서비스
- 주요 특징
- 데이터를 "파일 단위"가 아니라 "오브젝트(object)" 단위로 저장
- 확장성과 내결함성을 고려해 설계 (수평 확장, 다중 복제)
- Amazon S3, Google Cloud Storage와 유사
- 용도
- 백업/아카이브 저장소
- 정적 웹 호스팅
- Glance 이미지 백엔드 저장소로 활용 가능
- Cinder와 비교
- Cinder: VM에 attach 가능한 블록 스토리지
- Swift: 독립적으로 접근하는 오브젝트 스토리지 (VM에 attach 불가, API로 접근)
아키텍처 구성요소
| 구성요소 | 역할 |
|---|
| Proxy Server | 클라이언트 요청 수신, 인증/라우팅 |
| Account Server | 계정 메타데이터 관리 |
| Container Server | 컨테이너(버킷) 관리 |
| Object Server | 실제 오브젝트 데이터 저장 |
| Ring | 오브젝트 분산 저장 위치를 관리하는 매핑 테이블 |
동작 흐름
- 사용자가 Swift API/CLI를 통해 오브젝트 업로드 요청
- Proxy Server가 요청을 받아 적절한 Object Server에 저장
- Ring을 이용해 어느 노드에 저장할지 결정
- 다중 복제(기본 3중화)로 데이터 안정성 확보
- 조회 시 Proxy Server가 해당 노드에서 오브젝트 반환
Swift 기본 명령어
컨테이너 생성
openstack container create my-container
오브젝트 업로드
openstack object create my-container testfile.txt
오브젝트 다운로드
openstack object save my-container testfile.txt
컨테이너/오브젝트 목록 확인
openstack container list
openstack object list my-container
오브젝트 삭제
openstack object delete my-container testfile.txt
상태 확인
openstack container list
openstack object list <container>
운영 팁
- 장애 발생 시
- Ring 재빌드 필요 여부 확인
- Object Server 디스크 용량 점검
- Proxy Server 부하 분산 상태 확인
- 로그 경로