2.4. 고급 볼륨 구성

다음 절차에서는 고급 볼륨 관리 절차를 수행하는 방법을 설명합니다.

중요

블록 스토리지 서비스(cinder) 및 파이버 채널(FC) 백엔드를 사용하는 배포에 모든 컨트롤러 노드 및 컴퓨팅 노드에 HBA(호스트 버스 어댑터)를 설치해야 합니다.

2.4.1. 볼륨 마이그레이션

블록 스토리지 서비스(cinder)를 사용하면 AZ(가용 영역) 내에서 백엔드 간에 볼륨을 마이그레이션할 수 있습니다. 이는 볼륨을 백엔드에서 다른 백엔드로 이동하는 가장 일반적인 방법입니다. 기본 정책을 사용하면 관리자만 볼륨을 마이그레이션할 수 있습니다. 기본 정책을 변경하지 마십시오.

고도의 사용자 지정 배포 또는 스토리지 시스템을 폐기해야 하는 상황에서 관리자는 볼륨을 마이그레이션할 수 있습니다. 두 사용 사례 모두 여러 스토리지 시스템이 동일한 volume_backend_name 을 공유하거나 정의되지 않은 경우입니다.

제한 사항

  • 볼륨은 복제할 수 없습니다.
  • 대상 백엔드는 볼륨의 현재 백엔드와 다를 수 있습니다.
  • 기존 볼륨 유형이 새 백엔드에 유효해야 합니다. 즉, 다음 사항이 true여야 합니다.

    • 볼륨 유형에는 추가 사양에 backend_volume_name 이 정의되어 있지 않아야 합니다. 그렇지 않으면 동일한 backend_volume_name 으로 두 블록 스토리지 백엔드를 구성해야 합니다.
    • 두 백엔드 모두 씬 프로비저닝 지원, 씩 프로비저닝 지원 또는 기타 기능 구성과 같이 볼륨 유형으로 구성된 동일한 기능을 지원해야 합니다.
참고

볼륨을 한 백엔드에서 다른 백엔드로 이동하려면 광범위한 시간과 리소스가 필요할 수 있습니다. 자세한 내용은 2.3.13절. “백엔드 간 볼륨 이동”의 내용을 참조하십시오.

2.4.1.1. 백엔드 간 마이그레이션

대시보드 UI를 사용하여 백엔드 간에 볼륨을 마이그레이션합니다.

절차

  1. 대시보드에서 Admin > Volumes 를 선택합니다.
  2. 마이그레이션할 볼륨의 Actions(작업) 열에서 Migrate Volume (볼륨 마이그레이션)을 선택합니다.
  3. Migrate Volume(볼륨 마이그레이션 ) 대화 상자의 Destination Host(대상 호스트) 드롭다운 목록에서 대상 호스트를 선택합니다.

    참고

    호스트 마이그레이션에 대한 드라이버 최적화를 바이패스하려면 Force Host Copy (강제 호스트 복사) 확인란을 선택합니다.

  4. 마이그레이션을 클릭하여 마이그레이션을 시작합니다.

2.4.1.2. 명령줄에서 백엔드 간 마이그레이션

절차

  1. 다음 명령을 입력하여 대상 백엔드의 이름을 검색합니다.

    $ cinder get-pools --detail
    
    Property                      | Value
    
    ...
    
    | name                        | localdomain@lvmdriver-1#lvmdriver-1
    | pool_name                   | lvmdriver-1
    
    ...
    
    | volume_backend_name         | lvmdriver-1
    
    ...
    
    Property                      | Value
    
    ...
                                                          |
    | name                        | localdomain@lvmdriver-2#lvmdriver-1
    | pool_name                   | lvmdriver-1
    
    ...
    
    | volume_backend_name         | lvmdriver-1
    
    ...

    백엔드 이름은 host@volume_backend_name#pool 형식을 사용합니다.

    예제 출력에서는 블록 스토리지 서비스에 표시되는 두 개의 LVM 백엔드, 즉 localdomain@lvmdriver-1#lvmdriver-1localdomain@lvmdriver-2#lvmdriver-1 이 있습니다. 두 백엔드 모두 동일한 volume_backend_name,lvmdriver-1 을 공유합니다.

    참고

    LVM의 사용은 예를 들면 다음과 같습니다. LVM은 프로덕션 환경에서 지원되지 않습니다.

  2. 다음 명령을 입력하여 한 백엔드에서 다른 백엔드로 볼륨을 마이그레이션합니다.

    $ cinder migrate <volume id or name> <new host>

2.4.1.3. 볼륨 마이그레이션 확인

볼륨을 생성할 때 migration_status 값은 None 과 동일합니다. 마이그레이션을 시작하면 상태가 마이그레이션 으로 변경됩니다. 마이그레이션이 완료되면 상태가 성공 또는 오류로 변경됩니다.

블록 스토리지 서비스에서 마이그레이션 요청을 수락한 후 cinder 클라이언트는 Request to migrate volume <volume id>와 같은 메시지로 응답합니다. 그러나 마이그레이션을 완료하는 데 시간이 걸립니다. 관리자는 마이그레이션 상태를 확인할 수 있습니다.

절차

  1. 다음 명령을 입력하고 migration_status 필드를 검토합니다.

    $ cinder show <volume id>
    참고

    일반 볼륨 마이그레이션을 시작하면 볼륨 이름이 중복됩니다. 볼륨 이름으로 cinder show 명령을 입력하면 cinder 클라이언트에서 오류와 유사한 오류를 반환합니다. '<volume name>' 에 대해 여러 볼륨 일치 항목이 발견되었습니다. 이 오류를 방지하려면 볼륨 ID를 대신 사용합니다.

마이그레이션이 완료되면 호스트 필드가 cinder migrate 명령의 <new host> 값과 일치합니다.

2.4.2. 암호화되지 않은 볼륨 암호화

암호화되지 않은 볼륨을 암호화하려면 암호화되지 않은 볼륨을 백업한 다음 새 암호화된 볼륨으로 복원하거나 암호화되지 않은 볼륨에서 Image 서비스(glance) 이미지를 만든 다음 이미지에서 새 볼륨을 생성해야 합니다.

사전 요구 사항

  • 암호화하려는 암호화되지 않은 볼륨입니다.

절차

  1. cinder-backup 서비스를 사용할 수 있는 경우 현재 암호화되지 않은 볼륨을 백업합니다.

    $ cinder backup-create <unencrypted_volume>
    • <unencrypted_volume> 을 암호화되지 않은 볼륨의 이름 또는 ID로 바꿉니다.
  2. 새로 암호화된 볼륨을 만듭니다.

    $ cinder create <encrypted_volume_size> --volume-type <encrypted_volume_type>
    • <encrypted_volume_size> 를 GB의 새 볼륨 크기로 바꿉니다. 암호화 메타데이터를 수용하려면 암호화되지 않은 볼륨의 크기보다 1GB보다 커야 합니다.
    • <encrypted_volume_type> 을 필요한 암호화 유형으로 바꿉니다.
  3. 암호화되지 않은 볼륨의 백업을 새로 암호화된 볼륨으로 복원합니다.

    $ cinder backup-restore <backup> --volume <encrypted_volume>
    • <backup> 을 암호화되지 않은 볼륨 백업의 이름 또는 ID로 바꿉니다.
    • <encrypted_volume> 을 새 암호화된 볼륨의 ID로 바꿉니다.

cinder-backup 서비스를 사용할 수 없는 경우 upload-to-image 명령을 사용하여 암호화되지 않은 볼륨의 이미지를 생성한 다음 이미지에서 새 암호화된 볼륨을 만듭니다.

  1. 암호화되지 않은 볼륨의 이미지 서비스 이미지를 생성합니다.

    $ cinder upload-to-image <unencrypted_volume> <new_image>
    • <unencrypted_volume> 을 암호화되지 않은 볼륨의 이름 또는 ID로 바꿉니다.
    • <new_image> 를 새 이미지의 이름으로 바꿉니다.
  2. 이미지에서 1GB 크기의 이미지에서 새 볼륨을 생성합니다.

    $ cinder volume create --size <size> --volume-type luks --image <new_image> <encrypted_volume_name>
    • <size> 를 새 볼륨의 크기로 바꿉니다. 이 값은 암호화되지 않은 이전 볼륨 크기보다 1GB 이상이어야 합니다.
    • <new_image> 를 암호화되지 않은 볼륨에서 생성한 이미지의 이름으로 바꿉니다.
    • <encrypted_volume_name> 을 새 암호화된 볼륨의 이름으로 바꿉니다.