파일 시스템 할당량

Google Cloud Managed Lustre 파일 시스템은 사용자, 그룹, 프로젝트 할당량을 지원하므로 관리자가 스토리지 사용량을 관리하고 공정한 리소스 할당을 보장할 수 있습니다. 이 문서에서는 이러한 할당량을 구성, 확인, 관리하는 방법을 설명합니다.

파일 시스템 할당량이란 무엇인가요?

관리형 Lustre의 할당량을 사용하면 사용자, 그룹 또는 프로젝트가 파일 시스템 내에서 사용할 수 있는 디스크 공간의 양과 파일 수를 제한할 수 있습니다.

할당량은 다음과 같은 다양한 항목에 적용됩니다.

  • 사용자 할당량은 개별 비루트 사용자가 소비하는 스토리지를 제한합니다.
  • 그룹 할당량은 특정 그룹의 모든 비루트 구성원이 사용하는 저장용량을 제한합니다.
  • 프로젝트 할당량은 특정 프로젝트 ID와 연결된 파일 및 디렉터리에서 사용하는 스토리지를 제한합니다. 이 프로젝트 ID는 Lustre 파일 시스템 식별자로, lfs project를 사용하여 정의되며Google Cloud 프로젝트 ID가 아닙니다. 자세한 내용은 프로젝트 할당량 설정을 참고하세요.

할당량은 다음 두 가지 리소스 유형에 대해 구성됩니다.

  • 블록 한도는 사용할 수 있는 디스크 공간의 양에 대한 제한입니다.
  • Inode 제한은 만들 수 있는 파일 및 디렉터리 수에 대한 제한입니다.

각 리소스 유형에는 다음과 같은 두 가지 수준의 제한이 있을 수 있습니다.

  • 소프트 한도는 초과될 때 구성 가능한 유예 기간을 트리거하는 할당량 기준입니다. 이 유예 기간 동안 사용자, 그룹 또는 프로젝트는 일시적으로 소프트 한도를 초과할 수 있으며, 하드 한도가 있는 경우 하드 한도까지 초과할 수 있으므로 차단되기 전에 사용량을 줄일 수 있습니다. 유예 기간이 만료된 후에도 사용량이 소프트 한도를 초과하면 소프트 한도가 엄격한 한도로 적용되어 디스크 공간 또는 아이노드 수가 소프트 한도 미만으로 떨어질 때까지 모든 새 쓰기가 차단됩니다.

    기본적으로 유예 기간은 1주일입니다.

  • 엄격한 한도는 절대 최댓값을 정의합니다. 이 한도에 도달하면 추가 쓰기 작업이 실패하고 '디스크 할당량 초과' 오류가 반환됩니다.

사용자 및 그룹 관리

Lustre는 사용자 및 그룹 이름과 ID에 클라이언트의 POSIX 속성을 사용합니다.

클라이언트가 파일 시스템 요청을 하면 로컬 UID와 GID가 Lustre 서버로 전송됩니다. 서버는 이러한 POSIX 속성을 사용하여 표준 파일 권한을 적용하고 할당량 사용량을 추적합니다.

다중 사용자 환경에서 일관된 동작을 위해 Lustre 파일 시스템을 마운트하는 모든 클라이언트는 일반적으로 LDAP 또는 NIS와 같은 중앙 집중식 서비스를 통해 관리되는 동기화된 UID 및 GID 매핑이 있어야 합니다.

루트 사용자에게는 할당량이 적용되지 않습니다. sudo로 실행되는 명령어는 할당량 검사도 우회합니다.

시작하기 전에

Lustre 할당량을 관리하려면 다음이 필요합니다.

  • 활성 Google Cloud Managed Lustre 파일 시스템에 대한 클라이언트 액세스
  • lfs 명령어를 실행하기 위한 클라이언트 시스템의 sudo 또는 루트 권한

할당량 설정

lfs setquota 명령어를 사용하여 블록 및 inode 제한을 구성합니다. 블록 제한만 지정하거나, inode 제한만 지정하거나, 둘 다 지정할 수 있습니다. 마찬가지로 하드 제한, 소프트 제한 또는 둘 다 지정할 수 있습니다.

sudo lfs setquota -u | g | p | U | G | P UGP_VALUE \
      -b SOFT_BLOCK_LIMIT -B HARD_BLOCK_LIMIT \
      -i SOFT_INODE_LIMIT -I HARD_INODE_LIMIT \
      MOUNT_DIR

각 항목의 의미는 다음과 같습니다.

  • -u는 사용자 이름 또는 UID로 사용자를 지정합니다.
  • -g는 그룹 이름 또는 GID로 그룹을 지정합니다.
  • -p는 프로젝트 ID로 프로젝트를 지정합니다.
  • U, G, P은 특정 할당량이 설정되지 않은 사용자, 그룹 또는 프로젝트의 기본 할당량을 설정합니다.
  • UGP_VALUE은 사용자 이름, 그룹 이름, UID, GID 또는 프로젝트 ID입니다. 기본 사용자, 그룹 또는 프로젝트 할당량을 지정하는 경우 이 값을 생략합니다.
  • -b-B은 블록 사용량의 소프트 및 하드 한도입니다. 소프트 한도는 하드 한도보다 작아야 합니다. 값은 바이트 (B), 킬로바이트 (K), 메가바이트 (M), 기가바이트 (G), 테라바이트 (T)로 지정할 수 있습니다. 기본 단위는 킬로바이트입니다.
  • -i-I은 inode 사용량의 소프트 및 하드 한도입니다. 소프트 한도는 하드 한도보다 작아야 합니다.
  • MOUNT_DIR은 관리 Lustre 파일 시스템의 마운트 지점입니다.

할당량을 만드는 동시에 유예 기간을 구성할 수는 없습니다. 소프트 한도의 기본 유예 기간은 1주일입니다. 유예 기간을 업데이트하려면 유예 기간 구성을 참고하세요.

예시

사용자 할당량 설정

/mnt/lustre에서 user1의 유연한 차단 한도를 100GB, 엄격한 차단 한도를 120GB, 유연한 inode 한도를 10,000, 엄격한 inode 한도를 12,000으로 설정합니다.

sudo lfs setquota -u user1 -b 100G -B 120G -i 10000 -I 12000 /mnt/lustre

그룹 할당량 설정

/mnt/lustre에서 groupA의 엄격한 차단 한도를 50TB로 설정합니다.

sudo lfs setquota -g groupA -B 50T /mnt/lustre

프로젝트 할당량 설정

프로젝트 할당량에는 디렉터리와 파일을 프로젝트 ID와 연결하는 추가 단계가 필요합니다.

  1. lfs project 명령어를 사용하여 프로젝트 ID를 할당합니다. 이 ID는 프로젝트를 식별하는 임의의 정수입니다.

    sudo lfs project -spr LFS_PROJECT_ID PATH/TO/DIR/OR/FILE
    

    각 항목의 의미는 다음과 같습니다.

    • -s는 상속을 설정하므로 지정된 디렉터리에 생성된 새 파일과 디렉터리가 프로젝트 ID를 상속합니다.
    • -r는 모든 하위 디렉터리와 파일에 프로젝트 ID를 반복적으로 적용합니다.
    • -p는 지정된 파일 또는 디렉터리에 지정된 프로젝트 ID를 설정하도록 명령어에 지시합니다.
    • PATH/TO/DIR/OR/FILE는 프로젝트 ID를 설정할 디렉터리 또는 파일의 경로입니다. 경로 또는 파일은 하나만 지정할 수 있습니다.

    추가 플래그 및 정보를 확인하려면 클라이언트에서 man lfs project를 실행하세요.

    예를 들어 프로젝트 101/mnt/lustre/my-project 및 모든 하위 요소(신규 및 기존)에 할당하려면 다음을 실행합니다.

    sudo lfs project -spr 101 /mnt/lustre/my-project
    
  2. lfs setquota를 사용하여 할당량을 설정합니다.

    sudo lfs setquota -p LFS_PROJECT_ID \
      -b SOFT_BLOCK_LIMIT -B HARD_BLOCK_LIMIT \
      -i SOFT_INODE_LIMIT -I HARD_INODE_LIMIT \
      MOUNT_DIR
    

기본 할당량 설정

특정 할당량 설정이 없는 모든 사용자에 대해 강제 차단 한도를 50TB로 설정합니다.

sudo lfs setquota -U -B 50T /mnt/lustre

할당량 수정

기존 할당량을 수정하려면 새 값으로 lfs setquota를 다시 실행합니다. 이 명령어는 지정된 사용자, 그룹 또는 프로젝트의 이전 설정을 덮어씁니다.

유예 기간 구성

유예 기간은 소프트 한도가 하드 한도로 작동하기 전에 사용자, 그룹 또는 프로젝트가 소프트 한도를 초과할 수 있는 기간을 정의합니다. 기본적으로 이 값은 1주일입니다. 유예 기간은 모든 사용자, 그룹 또는 프로젝트에 설정되며 특정 ID에는 설정할 수 없습니다.

유예 기간을 업데이트하려면 lfs setquota -t 명령어를 사용합니다.

sudo lfs setquota -t -u | g | p \
  -b BLOCK_GRACE_PERIOD -i INODE_GRACE_PERIOD \
  MOUNT_DIR

각 항목의 의미는 다음과 같습니다.

  • -u는 사용자 할당량에 유예 기간을 적용합니다.
  • -g은 그룹 할당량에 유예 기간을 적용합니다.
  • -p은 프로젝트 할당량에 유예 기간을 적용합니다.
  • -b-i은 각각 블록 및 inode 유예 기간을 지정합니다. 기본 단위는 초입니다. XwXdXhXmXs(주, 일, 시간, 분, 초) 형식으로 다른 단위를 사용할 수 있습니다. 두 할당량 유형 중 하나 또는 둘 다에 한도를 설정할 수 있습니다.

    소프트 한도를 초과한 경우 lfs quota의 출력을 별표로 표시하려면 시간 값 대신 'notify'을 지정합니다. 'notify'이 지정된 경우 하드 한도에 도달할 때까지 새 쓰기가 차단되지 않습니다.

예를 들어 모든 사용자 할당량에 대해 차단 유예 기간을 7일로 설정하려면 다음을 실행합니다.

sudo lfs setquota -t -u -b 7d /mnt/lustre

프로젝트 할당량에 대해 24시간의 inode 유예 기간을 설정하려면 다음을 실행하세요.

sudo lfs setquota -t -p -i 24h /mnt/lustre

차단 소프트 한도를 초과할 때 알림을 받으려면 다음 단계를 따르세요.

sudo lfs setquota -t -u -b 'notify' /mnt/lustre

기존 할당량 보기

lfs quota 명령어는 현재 사용자의 사용량과 한도를 표시합니다.

lfs quota MOUNT_DIR

전체 옵션 목록을 보려면 클라이언트에서 man lfs quota를 실행하세요.

예를 들어 /mnt/lustre에서 user1의 할당량을 보려면 다음을 실행합니다.

sudo lfs quota -u user1 /mnt/lustre

다른 사용자의 할당량 및 사용량을 보려면 sudo로 명령어를 실행해야 합니다.

출력은 다음과 같습니다.

  • Filesystem: Lustre 마운트 지점입니다.
  • kbytes: 현재 디스크 사용량(KB)입니다.
  • bquota: 킬로바이트 단위의 소프트 차단 한도입니다.
  • blimit: 하드 블록 제한(킬로바이트)입니다.
  • bgrace: 차단 소프트 한도를 초과한 경우 남은 유예 기간입니다. 별표 (*)는 소프트 한도가 초과되었음을 나타냅니다.
  • files: 사용된 inode 수입니다.
  • iquota: 소프트 inode 한도입니다.
  • ilimit: 엄격한 inode 한도입니다.
  • igrace: inode 소프트 한도를 초과한 경우 남은 유예 기간입니다. 별표 (*)는 소프트 한도가 초과되었음을 나타냅니다.

모든 사용자 할당량에 대해 구성된 유예 기간을 보려면 다음을 실행하세요.

lfs quota -t -u /mnt/lustre

할당량 삭제

할당량을 삭제하려면 소프트 및 하드 한도를 0로 설정하세요.

sudo lfs setquota -u | g | p | U | G | P UGP_VALUE -b 0 -B 0 -i 0 -I 0 MOUNT_DIR

예를 들어 user1의 블록 및 inode 할당량을 삭제하려면 다음을 실행합니다.

sudo lfs setquota -u user1 -b 0 -B 0 -i 0 -I 0 /mnt/lustre

기본 프로젝트 차단 한도를 삭제하려면 다음 단계를 따르세요.

sudo lfs setquota -P -b 0 -B 0 /mnt/lustre

일반적인 문제

Lustre 할당량을 사용할 때는 다음 일반적인 문제에 유의하세요.

  • 허용된 캐시: 허용된 캐시는 클라이언트가 데이터 쓰기를 위해 객체 스토리지 타겟 (OST)으로부터 스토리지 블록을 '허용'으로 받을 수 있도록 하는 Lustre 기능입니다. 클라이언트에 이 캐시가 부여되면 데이터가 클라이언트의 로컬 캐시에 있고 데이터가 디스크에 물리적으로 기록되기 전에도 쓰기 작업에 대한 성공 메시지를 사용자에게 즉시 반환할 수 있습니다. 이는 지연 시간을 최소화하는 성능 최적화입니다.

    부여된 캐시는 할당량 초과 가능성을 도입합니다. 부여된 캐시를 사용하면 서버 측 할당량이 소진된 경우에도 클라이언트가 캐시에 데이터를 계속 쓸 수 있으므로 사용자가 하드 제한을 초과할 수 있습니다.

  • 잘못된 프로젝트 ID 할당: 프로젝트 할당량이 작동하려면 lfs project -spr를 사용하여 디렉터리와 파일에 프로젝트 ID가 올바르게 할당되어야 합니다. -r를 생략하면 프로젝트 ID가 기존 파일 및 하위 디렉터리에 적용되지 않습니다. -s를 생략하면 나중에 생성된 새 파일과 디렉터리가 프로젝트 ID를 상속하지 않습니다.

  • 여러 할당량 및 '가장 제한적인 할당량 우선': 사용자는 사용자 할당량, 하나 이상의 그룹 할당량, 하나 이상의 프로젝트 할당량을 동시에 적용받을 수 있습니다. Lustre는 이러한 제한 중 가장 제한적인 제한을 적용합니다. 즉, 사용자의 개인 할당량은 클 수 있지만 해당 프로젝트 디렉터리 내 파일의 프로젝트 할당량은 더 작을 수 있습니다.

  • 루트 사용자 할당량 우회: root 사용자의 쓰기가 할당량 적용을 우회합니다. 이로 인해 다른 사용자에 대한 할당량이 설정되어 있어도 관리 작업으로 파일 시스템이 채워질 수 있습니다.

  • fallocate가 할당량을 준수하지 않음: 사용자는 fallocate를 사용하여 하드 한도를 초과하는 파일 시스템의 공간을 예약할 수 있습니다.