3장. 오브젝트 스토리지 서비스
OpenStack Object Storage(swift)는 컨테이너에 오브젝트(데이터)를 저장합니다. 이 오브젝트는 파일 시스템의 디렉터리와 유사하지만 중첩할 수 없습니다. 컨테이너는 사용자가 모든 종류의 구조화되지 않은 데이터를 쉽게 저장할 수 있는 방법을 제공합니다. 예를 들어 개체에는 사진, 텍스트 파일 또는 이미지가 포함될 수 있습니다. 저장된 객체는 압축되지 않습니다.
3.1. 오브젝트 스토리지 링 링크 복사링크가 클립보드에 복사되었습니다!
오브젝트 스토리지는 Ring 이라는 데이터 구조를 사용하여 클러스터에 파티션 공간을 배포합니다. 이 파티션 공간은 오브젝트 스토리지 서비스의 데이터 지속성 엔진에 핵심입니다. 오브젝트 스토리지 서비스를 사용하면 클러스터의 각 파티션을 빠르고 쉽게 동기화할 수 있습니다.
링에는 Object Storage 파티션 및 여러 다른 노드 및 디스크에 파티션을 배포하는 방법에 대한 정보가 포함되어 있습니다. 오브젝트 스토리지 구성 요소가 데이터와 상호 작용하면 링에서 로컬로 빠른 조회를 수행하여 각 오브젝트에 대해 가능한 파티션을 결정합니다.
오브젝트 스토리지 서비스에는 계정 정보, 컨테이너용(계정에서 오브젝트를 쉽게 구성하기 위한) 및 오브젝트 복제를 위한 다른 유형의 데이터를 저장하는 3개의 링이 있습니다.
3.1.1. 리밸런싱 링 링크 복사링크가 클립보드에 복사되었습니다!
스토리지 용량, 노드 또는 디스크를 추가하거나 제거하여 Object Storage 환경을 변경할 때 링을 리밸런싱해야 합니다. openstack overcloud deploy
를 실행하여 링을 리밸런싱할 수 있지만 이 메서드는 전체 오버클라우드를 재배포합니다. 이 작업은 특히 대규모 오버클라우드가 있는 경우 번거로울 수 있습니다. 또는 언더클라우드에서 다음 명령을 실행하여 링을 리밸런싱합니다.
source ~/stackrc ansible-playbook -i /usr/bin/tripleo-ansible-inventory /usr/share/openstack-tripleo-common/playbooks/swift_ring_rebalance.yaml
source ~/stackrc
ansible-playbook -i /usr/bin/tripleo-ansible-inventory
/usr/share/openstack-tripleo-common/playbooks/swift_ring_rebalance.yaml
3.1.2. 클러스터 상태 확인 링크 복사링크가 클립보드에 복사되었습니다!
오브젝트 스토리지 서비스는 장기간 데이터 가용성, 지속성 및 지속성을 보장하기 위해 백그라운드에서 많은 프로세스를 실행합니다. 예를 들면 다음과 같습니다.
- 감사자는 지속적으로 데이터베이스와 개체 파일을 다시 읽고 체크섬을 사용하여 비교하여 자동 비트 로테이션이 없는지 확인합니다. 더 이상 체크섬과 일치하지 않는 데이터베이스 또는 개체 파일은 격리되어 해당 노드에서 읽을 수 없게 됩니다. 그런 다음 복제자는 다른 복제본 중 하나를 복사하여 로컬 복사본을 다시 사용할 수 있도록 합니다.
- 디스크 또는 노드를 교체하거나 개체가 격리된 경우 개체와 파일이 사라질 수 있습니다. 이 경우 복제자는 누락된 오브젝트 또는 데이터베이스 파일을 다른 노드 중 하나로 복사합니다.
오브젝트 스토리지 서비스에는 모든 노드에서 데이터를 수집하고 전체 클러스터 상태를 확인하는 swift-recon
이라는 도구가 포함되어 있습니다.
swift-recon
을 사용하려면 컨트롤러 노드 중 하나에 로그인하고 다음 명령을 실행합니다.
또는 --all
옵션을 사용하여 추가 출력을 반환합니다.
이 명령은 링의 모든 서버에서 다음 데이터를 쿼리합니다.
- Async 보류 중: 클러스터 로드가 너무 높고 프로세스가 데이터베이스 파일을 충분히 빠르게 업데이트할 수 없는 경우 일부 업데이트가 비동기적으로 수행됩니다. 이러한 숫자는 시간이 지남에 따라 감소해야 합니다.
- 복제 지표: 복제 타임스탬프를 확인합니다. 전체 복제 통과가 자주 발생해야 하며 오류는 거의 발생하지 않아야 합니다. 예를 들어 6개월 전의 타임스탬프가 있는 이전 항목은 노드의 복제가 지난 6개월 동안 완료되지 않았음을 나타냅니다.
- 링 md5sums: 이렇게 하면 모든 노드에서 링 파일이 일관되게 유지됩니다.
-
Swift.conf
md5sums: 이렇게 하면 모든 노드에서 링 파일이 일관되게 유지됩니다. - 격리된 파일: 모든 노드에 대해 격리된 파일이 없거나 거의 없어야 합니다.
- 시간 동기화: 모든 노드를 동기화해야 합니다.
3.1.3. 링 파티션 전원 증가 링크 복사링크가 클립보드에 복사되었습니다!
링 power는 리소스(account, container 또는 오브젝트)가 매핑되는 파티션을 결정합니다. 파티션은 리소스가 백엔드 파일 시스템에 저장되는 경로에 포함됩니다. 따라서 파티션 파워를 변경하려면 백엔드 파일 시스템의 새 경로로 리소스를 재배치해야 합니다.
과도하게 채워진 클러스터에서 재배치 프로세스는 시간이 오래 걸립니다. 다운타임을 방지하려면 클러스터가 작동하는 동안 리소스를 재배치합니다. 데이터 액세스는 일시적으로 손실되거나 복제 및 감사와 같은 프로세스의 성능을 손상시키지 않고 이 작업을 수행해야 합니다. 링 파티션 파워 증가에 대한 지원을 받으려면 Red Hat 지원팀에 문의하십시오.
3.1.4. 사용자 정의 링 생성 링크 복사링크가 클립보드에 복사되었습니다!
스토리지 용량에 대한 기술이 발전하고 요구 사항이 증가함에 따라 사용자 지정 링을 생성하는 것은 기존 Object Storage 클러스터를 업데이트하는 방법입니다.
클러스터에 새 노드를 추가하면 해당 특성이 원래 노드와 다를 수 있습니다. 사용자 지정 조정 없이 새 노드의 대용량 용량을 충분히 활용하지 못할 수 있습니다. 또는 링에서 가중치가 변경되면 데이터 분산이 균일해 안전이 저하될 수 있습니다.
자동화가 미래의 기술 동향에 뒤처지지 않을 수도 있습니다. 예를 들어, 현재 SSD를 사용할 수 있기 전에 오래된 일부 오브젝트 스토리지 클러스터가 사용되었습니다.
링 빌더는 클러스터의 성장과 기술이 진화함에 따라 오브젝트 스토리지를 관리하는 데 도움이 됩니다. 맞춤형 링 생성에 대한 지원이 필요한 경우 Red Hat 지원팀에 문의하십시오.