다음을 통해 공유


Azure HPC Cache에 파일 미리 로드

Azure HPC Cache의 초기화 기능을 사용하면 고객이 캐시에 파일을 미리 로드할 수 있습니다.

이 기능을 사용하여 예상 파일 작업 세트를 가져오고 작업이 시작되기 전에 캐시를 채울 수 있습니다. 이 기술을 캐시 워밍이라고도 합니다.

캐시 초기화는 캐시 "적중"을 증가시켜 성능을 향상시킵니다. 클라이언트 머신이 백 엔드 스토리지에서 읽어야 하는 리소스를 요청하는 경우, 특히 스토리지 시스템이 온-프레미스 NAS인 경우에는 해당 파일을 가져오고 반환하기 위한 대기 시간이 상당히 길 수 있습니다. 컴퓨팅 작업을 시작하기 전에 필요한 파일로 캐시를 준비하면 작업 중에 파일 요청 효율성이 향상됩니다.

이 기능은 JSON 매니페스트 파일을 사용하여 로드할 파일을 지정합니다. 각 초기화 작업은 하나의 매니페스트 파일을 사용합니다.

Azure Portal을 사용하거나 이 문서의 끝부분에 언급된 Azure REST API 엔드포인트를 사용하여 캐시 초기화 작업을 만듭니다.

10개까지 초기화 작업을 만들 수 있습니다. 캐시 크기에 따라 3~10개의 초기화 작업을 동시에 실행할 수 있습니다. 나머지는 리소스가 해제될 때까지 큐에 대기합니다.

설정 및 필수 조건

초기화 작업을 만들려면 다음 세 단계를 수행합니다.

  1. Azure HPC Cache를 만듭니다. (도움말은 Azure HPC Cache 만들기를 참조하세요.)
  2. 집계된 네임스페이스 경로(또는 여러 경로)를 만드는 것을 포함하여 하나 이상의 스토리지 대상을 정의합니다. 스토리지 대상 설명서
  3. 초기화 작업 매니페스트를 만들고(아래 지침 참조)를 만들고 HPC Cache에 액세스할 수 있는 Blob 컨테이너에 저장합니다. 또는 Azure REST API를 사용하여 초기화 작업을 만드는 경우 HPC Cache가 액세스할 수 있는 URL에 매니페스트를 저장할 수 있습니다.

초기화 매니페스트 파일 만들기

초기화 매니페스트는 초기화 작업이 실행될 때 캐시에 미리 로드할 콘텐츠를 정의하는 JSON 파일입니다.

매니페스트에서 미리 로드하려는 디렉터리 또는 파일의 네임스페이스 경로를 지정합니다. 포함 및 제외 규칙을 구성하여 로드되는 콘텐츠를 사용자 지정할 수도 있습니다.

초기화 매니페스트 샘플


{
    "config": {
        "cache_mode": "0",
        "maxreadsize": "0",
        "resolve_symlink": "0",
        "threads":"8",
        "skip_estimation":"0"
    },
    
    "files": [
        "/bin/tool.py",
        "/bin/othertool.py"
    ],
    
    "directories": [
        {"path": "/lib/toollib"},
        {
            "path": "/lib/otherlib", 
            "include": ["\\.py$"]
        },
        {
            "path": "/lib/xsupport", 
            "include": ["\\.py$"], 
            "exclude": ["\\.elc$", "\\.pyc$"]
        }
    ],
    
    "include": ["\\.txt$"],
    "exclude": ["~$", "\\.bak$"]
}

초기화 매니페스트 파일에는 다음과 같은 세 개의 섹션이 있습니다.

  • 구성(config) - 초기화 작업에 대한 설정

  • 파일 및 디렉터리 명령문:

    • files - 미리 로드될 개별 파일
    • directories - 미리 로드될 파일 경로
  • 전역 include 및 exclude 문(includeexclude) - 디렉터리 초기화 작업을 수정하는 정규식 문자열

구성 설정

매니페스트 파일의 config 섹션에서는 다음 매개 변수를 설정합니다.

  • 캐시 모드 - 초기화 작업의 동작을 설정합니다. 옵션은 다음과 같습니다.

    • 0 - 데이터 - 지정된 모든 파일 데이터와 특성을 캐시에 로드합니다. 기본값입니다.
    • 1 - 메타데이터 - 파일 특성만 로드합니다.
    • 2 - 예상 - 파일 특성을 로드하고, 이 매니페스트의 콘텐츠가 데이터 모드에서 실행된 경우에 초기화될 것으로 예상하는 파일 수, 디렉터리 및 총 데이터 크기(바이트)를 반환합니다.
  • maxreadsize - 파일당 미리 로드될 최대 바이트 수를 설정합니다. 크기에 관계없이 항상 전체 파일을 로드하려면 0(기본값)으로 설정된 상태로 둡니다.

  • resolve_symlink - 초기화할 때 바로 가기 링크를 확인하려면 true(1)로 설정합니다. resolve_symlink를 사용하도록 설정하면 포함 및 제외 규칙에 관계없이 바로 가기 링크 대상이 완전히 미리 로드됩니다.

  • threads - 사용할 초기화 스레드 수입니다. 유효한 값은 1~128입니다. 기본값은 초기화와 서비스 클라이언트 요청 간의 균형을 유지하는 8입니다.

  • skip_estimation - 파일 복사를 시작하기 전에, 초기화 작업은 초기화할 예상 데이터 양을 실행합니다. 파일 초기화 단계로 직접 이동하려면 skip_estimation 플래그를 true(1)로 설정합니다. 예측 단계를 건너뛰면 진행률 보고서의 정확도가 떨어질 수 있습니다. 기본값은 예측 단계를 포함하는 0입니다.

파일 및 디렉터리 경로

매니페스트의 filesdirectories 섹션은 초기화 작업 중에 미리 로드되는 파일을 지정합니다.

캐시 네임스페이스 경로를 사용하여 파일 및 디렉터리를 지정합니다. 클라이언트가 HPC Cache를 통해 파일에 액세스하는 데 사용하는 경로와 동일하며, 스토리지 시스템 경로 또는 내보내기 이름과 동일할 필요는 없습니다. 자세한 내용은 집계형 네임스페이스 계획을 참조하세요.

캐시 네임스페이스의 루트에서 경로를 시작합니다.

참고 항목

files에 나열된 항목은 나중에 제외 규칙과 일치하는 경우에도 포함됩니다.

directories 값은 캐시에 미리 로드할 콘텐츠에 대해 평가되는 경로 목록을 보관합니다. 모든 하위 트리는 구체적으로 제외하지 않는 한 초기화 작업에 포함됩니다.

디렉터리 경로 값에는 정의된 경로에만 적용되는 고유의 include 및 exclude 문이 있을 수 있습니다. 예를 들어 "directories": [{"path": "/cache/library1", "exclude": "\\.bak$"}] 줄은 .bak로 끝나는 경로의 파일을 제외하고 네임스페이스 경로 /cache/library1/ 아래의 모든 파일을 미리 로드합니다.

디렉터리 수준 include/exclude 문은 아래에 설명된 전역 include 및 exclude 문과 동일하지 않습니다. 디렉터리 수준 명령문이 전역 include 및 exclude 문과 상호 작용하는 방식에 대해 자세히 읽어보세요.

참고 항목

매니페스트 파일을 구문 분석하는 방식으로 인해 include 및 exclude 문에서 문제가 있는 문자열 문자를 보호하려면 2개의 이스케이프 문자가 필요합니다. 예를 들어 .txt 파일을 매칭하려면 \\.txt 식을 사용합니다.

Include 및 exclude 문

파일 및 디렉터리 후에는 전역 includeexclude 문을 지정할 수 있습니다. 이러한 전역 설정은 모든 디렉터리에 적용됩니다. files 문에 지정된 파일에는 적용되지 않습니다.

일반적으로 규칙은 순서대로 매칭되므로, 매니페스트 파일의 앞부분에 있는 명령문은 뒷부분에 있는 명령문보다 먼저 적용됩니다. 또한 이 문서의 설명에서는 앞에 있는 규칙이 이미 적용되었으며 일치하지 않았다고 가정합니다.

  • Include 문 - 디렉터리를 검사할 때, 초기화 작업은 include 설정의 정규식과 일치하지 않는 파일을 무시합니다.

  • Exclude 문 - 디렉터리를 검사할 때, 초기화 작업은 exclude 설정의 정규식과 일치하는 파일을 무시합니다.

    다음은 전역 제외 규칙이 다른 규칙과 상호 작용하는 방식에 대한 자세한 내용입니다.

    • 전역 제외 규칙은 전역 포함 규칙을 재정의합니다. 즉, 파일 이름이 전역 include 식 및 전역 exclude 식과 일치하면 초기화 작업에 의해 미리 로드되지 않습니다.

    • 디렉터리 수준 포함 규칙은 전역 제외 규칙을 재정의합니다.

      디렉터리 수준 include 식 및 전역 exclude 식과 일치하는 파일 이름은 초기화 작업에 의해 미리 로드됩니다.

    • 파일 명령문은 모든 제외 규칙을 재정의합니다.

include 및 exclude 문을 생략하여 디렉터리에 있는 모든 파일을 초기화할 수 있습니다.

포함/제외 규칙 및 이러한 규칙이 파일 이름을 매칭하는 방식에 대한 자세한 내용은 다음과 같습니다.

  • 이름이 디렉터리별 제외 목록의 항목과 일치하면 해당 이름을 건너뜁니다.

  • 디렉터리별 포함 목록이 있는 경우 이름이 해당 목록에 표시되는지 여부에 따라 이름이 포함되거나 제외됩니다.

  • 이름이 전역 제외 목록의 항목과 일치하면 해당 이름을 건너뜁니다.

  • 전역 포함 목록이 있는 경우 해당 목록에 표시되는 이름은 포함되고 해당 목록에 표시되지 않는 이름은 제외됩니다.

  • 디렉터리별 포함 목록이 있으면 이름이 제외됩니다. 그렇지 않으면 포함됩니다.

  • 디렉터리와 해당 디렉터리의 상위 디렉터리가 모두 디렉터리 목록에 표시되면 디렉터리에 대한 특정 규칙이 전역 규칙과 함께 적용되고 상위 디렉터리에 대한 규칙은 무시됩니다.

  • 이름과 규칙은 대/소문자를 구분합니다. 대/소문자를 구분하지 않는 원본은 지원되지 않습니다.

  • 모든 파일 규칙과 디렉터리 규칙을 합쳐서 4000개를 초과할 수 없습니다. 포함/제외 목록의 정규식 규칙은 5개를 초과할 수 없습니다.

  • 한 디렉터리 사양이 다른 디렉터리 사양과 겹치면 경로가 더 명시적인 디렉터리 사양이 우선적으로 적용됩니다.

  • 매니페스트가 파일 목록 또는 디렉터리 목록에서 동일한 경로를 두 번 이상 지정하는 것은 오류입니다.

초기화 매니페스트 파일 업로드

매니페스트 파일이 준비되면 HPC Cache에서 액세스할 수 있는 스토리지 계정의 Azure Blob 컨테이너에 업로드합니다. 포털 대신 API를 사용하여 초기화 작업을 만드는 경우 다른 웹 서버에 저장할 수 있는 옵션이 있지만, 캐시가 초기화 작업에 액세스할 수 있도록 다른 단계를 수행해야 합니다.

  • Azure Portal에서 초기화 작업을 만드는 경우 아래에 설명된 대로 HPC Cache 초기화 캐시 설정 페이지에서 매니페스트 파일을 선택합니다. 캐시 설정에서 매니페스트 파일을 선택하면 초기화 파일에 대한 제한된 액세스 권한을 캐시에 제공하는 SAS(공유 액세스 서명)가 자동으로 만들어집니다.

  • 포털 대신 API를 사용하여 초기화 작업을 만드는 경우 캐시에 해당 파일에 액세스할 수 있는 권한이 있는지 확인합니다. 파일을 액세스 가능한 위치(예: 캐시 또는 스토리지 네트워크 내에 있고 본인이 제어할 수 있는 웹 서버)에 저장하거나, 초기화 파일의 SAS URL을 수동으로 만듭니다.

    초기화 매니페스트 파일의 계정 SAS URL을 만드는 방법을 알아보려면 SAS(공유 액세스 서명)를 사용하여 Azure Storage 리소스에 대한 제한된 액세스 권한 부여를 읽어보세요. 매니페스트 파일은 HTTPS를 통해 액세스할 수 있어야 합니다.

캐시는 초기화 작업이 시작될 때 매니페스트 파일에 한 번 액세스합니다. 캐시에 대해 생성된 SAS URL은 노출되지 않습니다.

초기화 작업 만들기

Azure Portal을 사용하여 초기화 작업을 만듭니다. 포털에서 Azure HPC Cache를 살펴보고 설정 제목 아래에서 초기화 캐시 페이지를 선택합니다.

포털의 [초기화] 페이지에서 다양한 상태의 여러 작업을 보여 주는 스크린샷

표 맨 위에 있는 초기화 작업 시작 텍스트를 클릭하여 새 작업을 정의합니다.

작업 이름 필드에 초기화 작업의 고유한 이름을 입력합니다.

초기화 파일 필드를 사용하여 초기화 매니페스트 파일을 선택합니다. 초기화 매니페스트가 저장되는 스토리지 계정, 컨테이너 및 파일을 선택합니다.

작업 이름 및 초기화 파일 경로가 채워진 [초기화 작업 시작] 페이지의 스크린샷. [초기화 파일] 필드 아래에는

초기화 매니페스트 파일을 선택하려면 링크를 클릭하고 스토리지 대상을 선택합니다. 그런 다음, .json 매니페스트 파일이 저장되는 컨테이너를 선택합니다.

매니페스트 파일을 찾을 수 없는 경우 캐시가 파일의 컨테이너에 액세스하지 못할 수 있습니다. 캐시가 네트워크를 통해 스토리지 계정에 연결되어 있고 컨테이너에서 데이터를 읽을 수 있는지 확인합니다.

초기화 작업 관리

초기화 작업은 Azure Portal의 초기화 캐시 페이지에 나열됩니다.

이 페이지에는 각 작업의 이름, 상태, 현재 상태 및 초기화 진행률에 대한 요약 통계가 표시됩니다. 세부 정보 열의 요약 정보는 작업이 진행되면서 주기적으로 업데이트됩니다. 초기화 작업이 시작될 때 작업 상태 필드가 채워집니다. 문제가 발생하면 이 필드도 잘못된 매니페스트와 같은 기본적인 오류 정보를 제공합니다.

작업이 실행되는 동안 완료율 열에 예상 진행률이 표시됩니다.

초기화 작업이 시작되기 전에는 대기 중 상태입니다. 작업 상태, 완료율세부 정보 필드는 비어 있습니다.

다양한 상태(실행 중, 일시 중지됨 및 성공)의 작업이 있는 포털의 초기화 작업 목록을 보여 주는 스크린샷. 한 작업 행의 오른쪽에서 ... 기호를 클릭했더니 바로 가기 메뉴에 일시 중지 또는 다시 시작 옵션이 표시되었습니다.

초기화 작업을 일시 중지하거나 다시 시작하려면 테이블 오른쪽에서 ... 섹션을 클릭합니다. (상태가 업데이트될 때까지 몇 분 정도 걸릴 수 있습니다.)

초기화 작업을 삭제하려면 목록에서 해당 작업을 선택하고 표 맨 위에 있는 중지 컨트롤을 사용합니다. 중지 컨트롤을 사용하여 모든 상태의 작업을 삭제할 수 있습니다.

Azure REST API

이러한 REST API 엔드포인트를 사용하여 HPC Cache 초기화 작업을 만들고 관리할 수 있습니다. 이 기능은 REST API 2022-05-01 버전의 일부이므로 api_version 용어에서 해당 문자열을 사용해야 합니다.

이러한 도구를 사용하는 방법을 알아보려면 Azure REST API 참조를 읽어보세요.

새 초기화 작업 추가

startPrimingJob 인터페이스는 초기화 작업을 만들고 큐에 추가합니다. 리소스를 사용할 수 있으면 작업이 자동으로 시작됩니다.


URL: POST

     https://MY-ARM-HOST/subscriptions/MY-SUBSCRIPTION-ID/resourceGroups/MY-RESOURCE-GROUP-NAME/providers/Microsoft.StorageCache/caches/MY-CACHE-NAME/startPrimingJob?api-version=2022-05-01

     BODY:
     {
         "primingJobName": "MY-PRIMING-JOB",
         "primingManifestUrl": "MY-JSON-MANIFEST-FILE-URL"
     }

primingManifestUrl 값으로는 캐시에 액세스할 수 있는 파일의 SAS URL 또는 기타 HTTPS URL을 전달합니다. 자세한 내용은 초기화 매니페스트 파일 업로드를 참조하세요.

초기화 작업 중지

stopPrimingJob 인터페이스는 작업을 취소하고(실행 중인 경우) 작업 목록에서 제거합니다. 이 인터페이스를 사용하여 모든 상태의 초기화 작업을 삭제할 수 있습니다.


URL: POST 
     https://MY-ARM-HOST/subscriptions/MY-SUBSCRIPTION-ID/resourceGroups/MY-RESOURCE-GROUP-NAME/providers/Microsoft.StorageCache/caches/MY-CACHE-NAME/stopPrimingJob?api-version=2022-05-01

BODY:
     {
         "primingJobId": "MY-JOB-ID-TO-REMOVE"
     }

초기화 작업 가져오기

Get cache API를 사용하여 캐시의 초기화 작업을 나열합니다. 이 API는 캐시에 대한 많은 정보를 반환합니다. "캐시 속성" 섹션에서 초기화 작업 정보를 살펴보세요.

초기화 작업 이름 및 ID가 다른 정보와 함께 반환됩니다.


URL: GET 
     https://MY-ARM-HOST/subscriptions/MY-SUBSCRIPTION-ID/resourceGroups/MY-RESOURCE-GROUP-NAME/providers/Microsoft.StorageCache/caches/MY-CACHE-NAME?api-version=2022-05-01

BODY:

초기화 작업 일시 중지

pausePrimingJob 인터페이스는 실행 중인 작업을 일시 중단합니다.


URL: POST 
     https://MY-ARM-HOST/subscriptions/MY-SUBSCRIPTION-ID/resourceGroups/MY-RESOURCE-GROUP-NAME/providers/Microsoft.StorageCache/caches/MY-CACHE-NAME/pausePrimingJob?api-version=2022-05-01

BODY:
     {
         "primingJobId": "MY-JOB-ID-TO-PAUSE"
     }

초기화 작업 다시 시작

resumePrimingJob 인터페이스를 사용하여 일시 중단된 초기화 작업을 다시 활성화합니다.


URL: POST 
     https://MY-ARM-HOST/subscriptions/MY-SUBSCRIPTION-ID/resourceGroups/MY-RESOURCE-GROUP-NAME/providers/Microsoft.StorageCache/caches/MY-CACHE-NAME/resumePrimingJob?api-version=2022-05-01

BODY:
     {
         "primingJobId": "MY-JOB-ID-TO-RESUME"
     }

자주 묻는 질문

  • 초기화 작업을 다시 사용할 수 있나요?

    아니요, 목록의 각 초기화 작업은 고유한 이름이 있어야 하기 때문입니다. 목록에서 초기화 작업을 삭제한 후, 동일한 이름으로 새 작업을 만들 수 있습니다.

    동일한 매니페스트 파일을 참조하는 여러 초기화 작업을 만들 수 있습니다.

  • 실패하거나 완료된 초기화 작업이 목록에 얼마나 오래 유지되나요?

    초기화 작업은 삭제할 때까지 목록에 유지됩니다. 포털의 초기화 캐시 페이지에서 작업 옆에 있는 확인란을 선택하고, 목록 맨 위에 있는 중지 컨트롤을 선택하여 작업을 삭제합니다.

  • 미리 로드하는 콘텐츠가 캐시 스토리지보다 크면 어떻게 되나요?

    캐시가 가득 차면 나중에 가져온 파일이 이전에 초기화된 파일을 덮어씁니다.

다음 단계