✅ 1. 스토리지 전용 디스크 파티션 생성 (/dev/sdc 기준)
Swift는 스토리지 노드마다 데이터 저장을 위한 전용 디스크를 요구하며, 바로 사용 할 수 없는 디폴트에 대한 파티션이 필요합니다.
fdisk /dev/sdc
fdisk 명령어 입력 순서:
n # 새 파티션 생성
p # Primary 파티션
1 # 파티션 번호는 1
Enter # 시작 서퍼 기본값 사용
Enter # 끝 서퍼 기본값 사용
w # 저장 및 종료
결과 확인:
lsblk
→ /dev/sdc1 파티션 확인
✅ 2. XFS 파일시스템 생성
Swift는 XFS 파일시스템을 해야만 정식으로 지원하기 때문에 필요한 설정입니다.
mkfs.xfs -f /dev/sdc1
✅ 3. 디렉토리 생성 및 마운트
Swift는 /srv/node/<디버이스명> 구조로 마운트합니다.
mkdir -p /srv/node/sdc1
mount /dev/sdc1 /srv/node/sdc1
✅ 4. Swift Ring 파일 생성
Swift는 데이터 그래픽 분산을 위해 Ring 구조를 사용합니다. Ring은 3가지 유형으로 구분됩니다.
- Object Ring: 오브젝트 데이터 저장
- Container Ring: 컨테이너 메타데이터
- Account Ring: 계정 메타데이터
작업 경로 이동
cd /etc/kolla/config/swift
📁 Object Ring
swift-ring-builder object.builder create 10 3 1
swift-ring-builder object.builder add --region 1 --zone 1 --ip 10.0.0.101 --port 6000 --device sdc1 --weight 100
swift-ring-builder object.builder add --region 1 --zone 2 --ip 10.0.0.102 --port 6000 --device sdc1 --weight 100
swift-ring-builder object.builder add --region 1 --zone 3 --ip 10.0.0.103 --port 6000 --device sdc1 --weight 100
swift-ring-builder object.builder rebalance
📁 Container Ring
swift-ring-builder container.builder create 10 3 1
swift-ring-builder container.builder add --region 1 --zone 1 --ip 10.0.0.101 --port 6002 --device sdc1 --weight 100
swift-ring-builder container.builder add --region 1 --zone 2 --ip 10.0.0.102 --port 6002 --device sdc1 --weight 100
swift-ring-builder container.builder add --region 1 --zone 3 --ip 10.0.0.103 --port 6002 --device sdc1 --weight 100
swift-ring-builder container.builder rebalance
📁 Account Ring
swift-ring-builder account.builder create 10 3 1
swift-ring-builder account.builder add --region 1 --zone 1 --ip 10.0.0.101 --port 6001 --device sdc1 --weight 100
swift-ring-builder account.builder add --region 1 --zone 2 --ip 10.0.0.102 --port 6001 --device sdc1 --weight 100
swift-ring-builder account.builder add --region 1 --zone 3 --ip 10.0.0.103 --port 6001 --device sdc1 --weight 100
swift-ring-builder account.builder rebalance
✅ 5. Swift 정책 파일 설정 (policy.json)
Swift는 policy.json 파일을 통해 API 가입 권한을 개발자 또는 관리자 규칙으로 관리합니다.
/etc/kolla/config/swift 폴더에 해당 파일을 만들지 않았을 경우,
Swift 서비스가 가입 정책을 로드할 수 없다며 오류를 발생하고 API 가입이 실패할 경우가 많습니다.
Kolla-Ansible 경우에는 자체적으로 policy.json을 설정해야 하며, 다음과 같이 가져가시면 됩니다.
{
"get_policy": "rule:admin_or_owner",
"get_container_metadata": "rule:admin_or_owner",
"get_object_metadata": "rule:admin_or_owner"
}
저장 경로 (Kolla 기본):
/etc/kolla/config/swift/policy.json
▪ 여기에 설정한 권한 방침은 관리자 또는 소유자가 컨테이너/오브젝트 메타데이터에 가입할 수 있도록 해줍니다.