문제해결

이 페이지에서는 Filestore 사용 시 문제가 발생할 경우 도움이 될 수 있는 문제 해결 단계를 보여줍니다.

느린 성능

  1. 클라이언트 VM에 권장 머신 유형을 사용 중인지 확인합니다.
  2. 클라이언트 VM이 Linux를 실행하는 경우 기본 마운트 옵션을 사용하고 있는지 확인합니다.

  3. 클라이언트 VM과 Filestore 인스턴스가 동일한 리전에 있는지 확인합니다. 리전 간에 마운트하면 성능이 저하될 뿐만 아니라 네트워킹 비용도 발생합니다.

  4. fio 도구를 사용하여 Filestore 인스턴스의 성능을 테스트합니다.

    테스트 결과에 비정상적인 성능 저하가 나타나면 비즈니스 계정 담당자에게 문의하세요. 테스트 결과가 예상과 비슷하거나 더 나은 경우 다음 섹션을 계속 진행하세요.

성능 저하를 일으키는 사용 사례

다음은 성능이 저하되는 몇 가지 사용 사례와 시나리오입니다.

작은 파일이 대량 포함된 워크로드

Filestore 파일 공유는 데이터 안전 및 NFS 프로토콜 규정 준수를 위해 sync 내보내기 옵션을 사용합니다. 즉, 대부분의 데이터 수정 작업에서 Filestore 인스턴스는 클라이언트 VM의 요청에 응답하기 전에 데이터가 스토리지에 커밋될 때까지 기다립니다. 여러 파일이 작업과 관련이 있는 경우 클라이언트가 끊임없이 일련의 동기 작업을 만들고 누적 지연 시간이 증가합니다.

파일 공유 시스템에서 TAR 파일과 같은 보관 파일을 추출하는 것을 예로 들 수 있습니다. TAR은 많은 파일이 포함된 보관 파일을 추출할 때 일련의 많은 동기 작업을 유발합니다. 이로 인해 성능이 크게 저하됩니다.

많은 작은 파일을 파일 공유에 복사하려는 경우 gsutil과 같은 도구를 사용하여 파일을 동시에 생성해보세요.

mkdir -p /mnt/nfs/many_files_rsync/
time gsutil -m -q rsync -rp many_files /mnt/nfs/many_files_rsync/

Cloud Storage와 Filestore 간 데이터 복사

gsutil을 사용하여 Cloud Storage에서 Filestore 인스턴스로 데이터를 복사하는 작업은 현재 속도가 느린 것으로 알려져 있습니다. 알려진 완화 방법이 없습니다.

Filestore가 응답하지 않음

예약된 유지관리

Filestore가 몇 분 동안 응답하지 않고 응답이 다시 확인되면 예약된 유지보수 이벤트로 인해 응답하지 않는 기간이 생기는 경향이 있습니다. Filestore의 SLA는 SLA 페이지를 참조하세요.

Filestore는 고객 정의 유지보수 기간을 지원하지 않습니다. Filestore의 유지보수 기간 일정도 고객에게 제공되지 않습니다.

클라이언트에 마운트되어 있는 동안 인스턴스가 삭제됨

파일 작업 또는 unix 명령어(예: df, ls) 또는 읽기/쓰기 작업이 응답하지 않는 경우 Filestore 인스턴스는 클라이언트에 마운트된 상태에서 삭제되었을 수 있습니다.

인스턴스가 여전히 있는지 확인합니다.

    gcloud filestore instances list

인스턴스가 더 이상 표시되지 않으면 삭제한 인스턴스와 동일한 IP 주소 및 파일 공유 이름으로 새 인스턴스를 만들어 제어를 복구할 수 있습니다. 인스턴스가 생성되면 응답하지 않는 작업은 오류와 함께 종료됩니다. 필요하지 않은 경우 파일 공유의 마운트를 해제하고 Filestore 인스턴스를 삭제할 수 있습니다.

향후 이러한 일이 발생하지 않도록 하려면 먼저 Filestore 인스턴스를 마운트 해제한 다음 삭제하세요.

'기기에 남아 있는 공간이 없음'

  1. 클라이언트 VM에서 다음 명령어를 실행하여 Filestore 인스턴스에 충분한 inode가 있는지 확인합니다.

    df -i
    

    이 명령어는 다음과 비슷한 결과를 반환합니다.

    Filesystem           Inodes        IUsed      IFree         IUse%  Mounted on
    10.0.0.2:/vol1    134217728        13         134217715     1%     /mnt/test
    

    파일 공유에 저장된 파일마다 inode 하나를 사용합니다. IUse%가 100%인 경우 여유 inode가 없음을 의미하며, 할당된 최대 한도에 도달하지 않았더라도 파일 공유에 더 이상의 파일을 저장할 수 없습니다. inode 수는 용량에 따라 확장됩니다. inode를 추가하려면 용량을 추가해야 합니다.

  2. 아직 inode가 남아 있는 경우 디렉터리의 최대 항목 수(파일 또는 하위 디렉터리)에 도달한 것일 수 있습니다. 디렉터리에 포함할 수 있는 최대 항목 수는 해당 항목의 이름 길이에 따라 다릅니다. 하지만 이 한도에 도달하는 것은 엄격한 제한이 아닌 확률입니다. 이 문제를 해결하려면 항목을 하위 디렉터리에 배포하여 더 세분화된 파일 계층 구조를 만들어야 합니다.

인스턴스를 만들 수 없음

Filestore 인스턴스 생성 시 PERMISSION DENIED

  1. Filestore API가 사용 설정되었는지 확인합니다.

    gcloud services enable file.googleapis.com
    
  2. roles/file.editor 역할이 있는지 확인합니다. 자세한 내용은 IAM 역할 및 권한을 참조하세요.

  3. 오류가 계속 발생하면 Filestore 서비스 계정에서 해당 file.serviceAgent 역할을 삭제했을 수 있습니다. 이를 확인하려면 다음을 실행합니다.

    gcloud projects get-iam-policy project-name  \
        --flatten="bindings[].members" \
        --format='table(bindings.role)' \
        --filter="bindings.members:service-project-id@cloud-filer.iam.gserviceaccount.com"
    

    각 매개변수는 다음과 같습니다.

    • project-name은 Google Cloud 프로젝트 이름입니다.
    • project-id은 Google Cloud 프로젝트의 ID 번호입니다.

    이 명령어는 다음과 유사한 결과를 반환합니다.

    ROLE
    roles/file.serviceAgent
    

    roles/file.serviceAgent가 나열되지 않는 경우 다음을 실행하여 복원할 수 있습니다.

    gcloud projects add-iam-policy-binding project-id --member serviceAccount:service-project-id@cloud-filer.iam.gserviceaccount.com --role roles/file.serviceAgent
    

    여기서 project-id는 Google Cloud 프로젝트의 ID 번호입니다.

인스턴스를 만들 때 오류 코드 13 수신

인스턴스를 만드는 중에 오류 코드 13 오류가 발생하는 이유는 몇 가지가 있지만 가장 일반적인 원인은 Filestore가 내부 네트워크 할당량에 도달하는 것입니다.

Filestore 인스턴스를 만드는 모든 VPC 네트워크에서 Filestore는 해당 네트워크와 피어링된 내부 네트워크를 만들어야 합니다. 이러한 내부 네트워크는 Filestore 인스턴스와 연결된 Filestore 인스턴스 및 VPC 네트워크가 삭제되더라도 보존됩니다.

프로젝트의 내부 네트워크 수가 50개에 도달하면 Filestore는 더 이상 새 내부 네트워크를 만들 수 없으므로 새 VPC 네트워크에서 Filestore 인스턴스를 만들 수 없습니다. 그렇게 하면 오류가 발생합니다.

Error code 13, message: an internal error has occurred

내부 네트워크를 삭제할 수 있는 유일한 방법은 Filestore API를 사용 중지했다가 다시 사용 설정하는 것입니다.

gcloud services disable file.googleapis.com

gcloud services enable file.googleapis.com

필요한 Filestore 인스턴스를 삭제할 수 없어서 이를 수행할 수 없는 경우 비즈니스 계정 담당자에게 문의하여 피어링된 네트워크를 수동으로 삭제해 달라고 요청해야 합니다.

VPC 네트워크 및 Filestore 인스턴스를 정기적으로 삭제하고 만들어야 하는 경우 네트워크 할당량 부족을 방지하는 두 가지 방법이 있습니다.

  1. VPC 네트워크를 만들 때 Filestore 인스턴스 생성에 사용한 이전 네트워크와 동일한 이름을 사용합니다.

  2. 삭제 후 다시 만드는 대신 50개 이하의 VPC 네트워크 풀을 순환합니다.

파일 공유를 마운트할 수 없음

파일 공유를 마운트하려고 할 때 권한이 거부됨

인스턴스에 NFS 내보내기 옵션이 있는지 확인합니다.

gcloud filestore instances describe instance-id \
    --zone=zone

각 매개변수는 다음과 같습니다.

  • instance-id는 Filestore의 인스턴스 ID입니다.
  • zone은 Filestore 인스턴스가 있는 영역입니다.

이 명령어는 다음과 유사한 결과를 반환합니다.

createTime: '2019-10-11T17:28:23.340943077Z'
fileShares:
- capacityGb: '1024'
  name: vol1
  nfsExportOptions:
  - accessMode: READ_WRITE
    ipRanges:
    - 128.0.0.0/29
    squashMode: NO_ROOT_SQUASH
name: projects/yourproject/locations/us-central1-c/instances/nfs-server
networks:
- ipAddresses:
  - 10.0.0.2
  modes:
  - MODE_IPV4
  network: default
  reservedIpRange: 10.0.0.0/29
state: READY
tier: BASIC_HDD

nfsExportOptions가 나열된 경우 클라이언트의 IP 주소가 예상된 accessMode에 대해 ipRanges에 표시된 범위 중 하나 내에 있는지 확인합니다. 그렇지 않은 경우 NFS 내보내기 옵션을 수정해야 합니다. 자세한 내용은 인스턴스 수정을 참조하세요.

App Engine에 파일 공유를 마운트할 수 없음

Filestore는 App Engine을 지원하지 않습니다.