Cloud Storage FUSE 구성 파일

이 페이지에서는 Cloud Storage FUSE 구성 파일을 사용하여 Cloud Storage FUSE의 동작을 영구적으로 구성하는 방법을 설명합니다. 구성 파일을 사용하려면 마운트 명령어의 일부로 --config-file 플래그에 구성 파일의 경로를 지정합니다.

구성 파일은 다음 형식과 필드를 사용하는 YAML 파일입니다. 명령줄 옵션을 사용하여 일부 필드를 지정할 수도 있습니다.

app-name: "APP_NAME"
write:
  create-empty-file: CREATE_EMPTY_FILE
logging:
  file-path: "FILE_PATH"
  format: FORMAT
  severity: SEVERITY
  log-rotate:
    max-file-size-mb: MAX_FILE_SIZE
    backup-file-count: BACKUP_FILE_COUNT
    compress: COMPRESS
file-cache:
  max-size-mb: MAX_SIZE
  cache-file-for-range-read: CACHE_FILE_FOR_RANGE_READ
  enable-parallel-downloads: ENABLE_PARALLEL_DOWNLOADS
  parallel-downloads-per-file: PARALLEL_DOWNLOADS_PER_FILE
  max-parallel-downloads: MAX_PARALLEL_DOWNLOADS
  download-chunk-size-mb: DOWNLOAD_CHUNK_SIZE
metadata-cache:
  enable-nonexistent-type-cache: ENABLE_NONEXISTENT_TYPE_CACHE
  stat-cache-max-size-mb: STAT_CACHE_MAX_SIZE
  ttl-secs: TTL_SECS
  type-cache-max-size-mb: TYPE_CACHE_MAX_SIZE
cache-dir: "CACHE_DIR"
only-dir: "ONLY_DIR"
gcs-auth:
  anonymous-access: ANONYMOUS_ACCESS
  key-file: "KEY_FILE"
  reuse-token-from-url: REUSE_TOKEN_FROM_URL
  token-url: "TOKEN_URL"
gcs-connection:
  billing-project: "BILLING_PROJECT"
  client-protocol: CLIENT_PROTOCOL
  custom-endpoint: "CUSTOM_ENDPOINT"
  http-client-timeout: HTTP_CLIENT_TIMEOUT
  limit-bytes-per-sec: "LIMIT_BYTES_PER_SEC"
  limit-ops-per-sec: "LIMIT_OPS_PER_SEC"
  max-conns-per-host: MAX_CONNS_PER_HOST
  max-idle-conns-per-host: MAX_IDLE_CONNS_PER_HOST
  sequential-read-size-mb: SEQUENTIAL_READ_SIZE
implicit-dirs: IMPLICIT_DIRS
file-system:
  kernel-list-cache-ttl-secs: KERNEL_LIST_CACHE_TTL_SECS
  ignore-interrupts: IGNORE_INTERRUPTS
  dir-mode: "DIR_MODE"
  file-mode: "FILE_MODE"
  fuse-options: FUSE_OPTIONS
  gid: GID
  rename-dir-limit: RENAME_DIR_LIMIT
  temp-dir: "TEMP_DIR"
  uid: UID
foreground: FOREGROUND
gcs-retries:
  max-retry-sleep: MAX_RETRY_SLEEP
  multiplier: "MULTIPLIER"
metrics:
  stackdriver-export-interval: STACKDRIVER_EXPORT_INTERVAL
debug:
  log-mutex: LOG_MUTEX
  exit-on-invariant-violation: EXIT_ON_INVARIANT_VIOLATION

구성 필드

다음 표에서는 구성 파일에서 지정할 수 있는 필드를 설명합니다. 달리 명시되지 않는 한 모든 필드는 선택사항입니다.

필드 설명
app-name 마운트의 애플리케이션 이름입니다.
create-empty-file 마운트된 버킷의 새 파일에 쓰기 시작할 때 Cloud Storage에서 0바이트 파일을 만들지 여부를 지정하는 불리언 값입니다. 이 필드를 지정하지 않으면 기본값은 false입니다.
file-path 로그가 기록되는 로그 파일의 경로이며 문자열로 지정됩니다. 예를 들면 /var/log입니다. 이 필드가 지정되지 않으면 Cloud Storage FUSE가 포그라운드 모드에서 실행될 때 로그가 stdout으로 라우팅되고 Cloud Storage FUSE가 백그라운드 모드에서 실행될 때 syslog로 라우팅됩니다.
format 로그가 생성되는 형식이며 enum으로 표시됩니다. 값은 text 또는 json입니다. 이 필드를 지정하지 않으면 기본값은 json입니다.
severity

Cloud Storage FUSE에서 생성하려는 로그의 심각도이며 enum으로 표시됩니다. 심각도 수준은 심각도가 가장 낮은 순에서 높은 순으로 정렬됩니다.

  • trace
  • debug
  • info
  • warning
  • error

심각도 수준을 지정하면 Cloud Storage FUSE는 심각도가 같거나 더 높은 로그를 생성합니다. 예를 들어 warning을 지정하면 Cloud Storage FUSE가 경고 및 오류에 대한 로그를 생성합니다. off를 지정하여 모든 로깅을 중지할 수도 있습니다. 다음 세 가지 옵션 중 하나라도 명령어의 일부로 지정되면 심각도 수준이 trace로 자동 설정됩니다.

  • --debug_fuse
  • --debug_gcs
  • --debug_mutex

이 필드를 지정하지 않으면 기본값은 info입니다.

max-file-size-mb 로그 파일이 순환되기 전에 도달할 수 있는 최대 크기(MB)입니다. 최솟값은 1입니다. 이 필드를 지정하지 않으면 기본값은 512입니다.
backup-file-count 로그를 쓸 활성 파일을 제외하고 보관할 최대 순환 로그 파일 수입니다. 값이 0으로 설정되면 순환된 모든 로그 파일이 보관됩니다. 이 필드를 지정하지 않으면 기본값은 10입니다.
compress 순환된 로그 파일이 gzip을 통해 압축되는지 여부를 지정하는 불리언 값입니다. 이 필드를 지정하지 않으면 기본값은 true입니다.
max-size-mb

파일 캐시에서 사용할 수 있는 최대 크기(MiB)입니다. 있으면 max-size-mb는 Cloud Storage FUSE에서 파일 캐싱을 사용 설정하며 Cloud Storage FUSE 캐시가 마운트된 디렉터리 내에서 사용할 수 있는 총 용량을 제한하려는 경우에 유용합니다.

  • cache-dir에 지정한 디렉터리에서 캐시의 사용 가능한 전체 용량을 사용하려면 -1을 지정합니다.
  • 0을 지정하여 파일 캐시를 사용 중지합니다.

이 필드를 지정하지 않으면 기본값은 -1입니다.

cache-file-for-range-read

0이 아닌 오프셋에서 첫 번째 읽기를 수행할 때 전체 객체를 비동기식으로 다운로드하여 Cloud Storage FUSE 캐시 디렉터리에 저장해야 하는지 여부를 결정하는 불리언입니다. 임의 읽기나 부분 읽기를 여러 번 수행하려면 true로 설정해야 합니다. 이 필드를 지정하지 않으면 기본값은 false입니다.

오프셋 0에서 시작하는 부분 읽기를 수행하는 경우 Cloud Storage FUSE는 항상 전체 객체를 비동기식으로 다운로드하고 캐시합니다.

enable-parallel-downloads

파일 캐시 디렉터리를 프리페치 버퍼로 사용하여 여러 작업자가 대용량 파일을 동시에 다운로드하게 함으로써 대용량 파일의 읽기를 가속화합니다. 기본값은 false입니다.


동시 다운로드를 사용하려면 파일 캐싱을 사용 설정해야 합니다. 동시 다운로드에 관해 자세히 알아보고 지원 속성을 구성하려면 동시 다운로드를 사용하여 읽기 성능 개선을 참고하세요.
parallel-downloads-per-file

Cloud Storage에서 파일 캐시로 객체를 다운로드하기 위해 파일당 생성할 최대 goroutine 수를 지정합니다. 기본값은 16입니다.

max-parallel-downloads

파일의 모든 다운로드 작업에서 특정 시점에 생성할 수 있는 최대 goroutine 수입니다. 기본값은 머신의 CPU 코어 수의 두 배입니다. 한도를 우회하려면 값을 -1로 지정합니다.

download-chunk-size-mb

객체를 파일 캐시로 다운로드할 때 각 goroutine이 Cloud Storage에 전송하는 각 읽기 요청의 크기(MiB)를 지정합니다. 기본값은 50입니다.

enable-nonexistent-type-cache 파일을 Cloud Storage에서 찾을 수 없으면 NonexistentType 유형으로 유형 캐시 항목을 만듭니다. Cloud Storage에 파일이 생성되지만 파일의 NonexistentType 항목이 캐시되면 NonexistentType 항목이 유형 캐시에서 삭제될 때까지 Cloud Storage FUSE가 파일을 요청할 수 없습니다. 기본값은 false입니다.
stat-cache-max-size-mb

통계 캐시에서 사용할 수 있는 MiB 단위의 최대 크기입니다. 통계 캐시는 항상 메모리에 온전히 보관됩니다.

  • 워크로드에 파일이 최대 20,000개까지 포함된 경우 32를 지정합니다. 워크로드가 파일 20,000개를 초과하면 파일 6,000개가 추가될 때마다 크기가 10씩 증가합니다(파일당 평균은 약 1,500바이트).
  • 통계 캐시에서 필요한 만큼 메모리를 사용하도록 하려면 -1을 지정합니다.
  • 0을 지정하여 통계 캐시를 사용 중지합니다.

이 필드를 지정하지 않으면 기본값은 32입니다.

ttl-secs

캐시된 메타데이터 항목의 TTL(수명)을 초 단위로 정의합니다.

  • -1을 지정하여 TTL 만료를 우회하고 사용 가능할 때마다 캐시에서 파일을 제공합니다.
  • 최신 파일을 읽었는지 확인하려면 0을 지정합니다. 이 값을 사용하면 메타데이터 가져오기 호출을 실행하여 캐시에 있는 파일의 객체 생성이 Cloud Storage에 저장된 객체 생성과 일치하는지 확인합니다. 자세한 내용은 캐시 무효화 구성을 참조하세요.

이 필드를 지정하지 않으면 기본값은 60s입니다.

type-cache-max-size-mb

유형 캐시에서 사용할 수 있는 디렉터리당 최대 크기(MiB)입니다. 유형 캐시는 항상 메모리에 온전히 보관됩니다.

  • 마운트하는 버킷의 단일 디렉터리 내에 있는 최대 파일 수에 파일이 20,000개 이하로 포함된 경우 4를 지정합니다. 마운트하는 단일 디렉터리 내의 최대 파일 수에 파일이 20,000개 넘게 있으면 파일 5,000개(파일당 평균 약 200 바이트)마다 값을 1씩 늘립니다.
  • 유형 캐시에서 필요한 만큼 메모리를 사용하도록 하려면 -1을 지정합니다.
  • 0을 지정하여 유형 캐시를 사용 중지합니다.

이 필드를 지정하지 않으면 기본값은 4입니다.

cache-dir 파일 캐시 데이터를 저장할 디렉터리를 지정합니다. 파일 캐싱을 사용 설정하려면 이 필드를 지정해야 합니다.
only-dir 버킷 내에서 특정 디렉터리만 마운트합니다.
anonymous-access 요청에 대한 인증을 사용 중지합니다. 인증을 지원하지 않는 커스텀 엔드포인트를 사용하거나 Cloud Storage FUSE를 사용하여 공개 버킷을 마운트하는 경우 이 필드를 설정합니다. 기본값은 false입니다.
key-file Cloud Storage에 대해 요청을 인증하기 위해 JSON 키 파일에 대한 절대 경로를 지정합니다. 기본적으로 Cloud Storage FUSE는 인증 요청을 위해 애플리케이션 기본 사용자 인증 정보를 사용합니다.
reuse-token-from-url token-url에서 가져온 토큰을 사용하도록 지정합니다. 기본값은 true입니다.
token-url key-file이 없으면 액세스 토큰을 가져오기 위한 URL을 지정합니다.
billing-project 마운트된 버킷에 액세스할 때 청구에 사용할 프로젝트를 지정합니다. 이 플래그는 요청자 지불을 사용 설정해서 버킷을 마운트할 때 종종 필수입니다. 기본 프로젝트는 없음입니다.
client-protocol Cloud Storage 백엔드와 통신하는 데 사용되는 프로토콜을 지정합니다. 값은 HTTP/1.1의 경우 http1 또는 HTTP/2의 경우 http2입니다. 기본값은 http1입니다.
custom-endpoint 데이터 가져오기를 위한 대체 커스텀 엔드포인트를 지정합니다. 커스텀 엔드포인트는 Cloud Storage JSON 엔드포인트 https://storage.googleapis.com/storage/v1과 같이 상응하는 리소스 및 작업을 지원해야 합니다. 커스텀 엔드포인트를 지정하지 않으면 Cloud Storage FUSE가 전역 Cloud Storage JSON API 엔드포인트인 https://storage.googleapis.com/storage/v1을 사용합니다. 지정한 커스텀 엔드포인트에서 인증이 지원되지 않는 경우 anonymous-access 플래그를 true로 설정하여 인증을 우회합니다.
http-client-timeout 시간 초과되기 전 서버에서 응답을 받기 위해 Cloud Storage FUSE HTTP 클라이언트가 대기할 수 있는 기간을 지정합니다. 기본값은 0s이고, 시간 제한이 없음을 나타냅니다.
limit-bytes-per-sec Cloud Storage FUSE가 Clous Storage에서 데이터를 읽을 수 있도록 30초 동안 측정된 대역폭 한도를 지정합니다. 기본 한도 값은 한도 없음을 지정하는 "-1"입니다.
limit-ops-per-sec 30초 동안 측정된, 초당 수행되는 작업 한도를 지정합니다. 기본 한도 값은 한도 없음을 지정하는 "-1"입니다.
max-conns-per-host 서버당 허용되는 TCP 연결의 최대 개수를 지정합니다. 이것은 client-protocolhttp1로 설정된 경우에 적용됩니다. 기본값은 0이며 이는 머신 사양에서 설정한 제한사항을 제외하고 TCP 연결에 한도가 없음을 지정합니다.
max-idle-conns-per-host 서버당 허용되는 유휴 연결의 최대 개수를 지정합니다. 기본값은 100입니다.
sequential-read-size-mb Cloud Storage에서 다운로드할 데이터의 청크 크기(MB)를 지정합니다. 기본값은 200입니다.
implicit-dirs

폴더관리 폴더를 암시적으로 포함합니다.

자세한 내용은 GitHub의 파일 및 디렉터리 문서를 참조하세요.
kernel-list-cache-ttl-secs 목록 캐시를 사용 설정하고 캐시된 목록 항목의 TTL(수명)을 초 단위로 정의합니다. 목록 캐시의 메모리 할당은 사용 가능한 메모리를 기반으로 커널에 의해 제어됩니다. 기본값은 0이며 목록 캐싱을 사용 중지합니다.

kernel-list-cache-ttl-secs 필드를 설정하려면 커널의 페이지 캐시에 디렉터리 목록 응답을 보관하기 위한 양수 값을 초 단위로 지정합니다. 항목 만료를 우회하고 사용 가능한 경우 항상 캐시에서 목록 응답을 반환하려면 -1 값을 지정합니다.
ignore-interrupts Control+C에 의해 트리거된 SIGINT와 같은 시스템 중단 신호를 무시하도록 Cloud Storage FUSE에 지시합니다. 그러면 신호로 인해 진행 중인 작업이 종료되지 않습니다. 값은 true 또는 false입니다. 기본값은 true입니다.
dir-mode 디렉터리의 권한 비트(8진수)입니다. 기본값은 "755"입니다.
file-mode 파일의 권한 비트(8진수)를 지정합니다. 기본값은 "644"입니다.
fuse-options 시스템별 추가 마운트 옵션을 지정합니다.
gid 모든 노드의 그룹 식별자(GID) 소유자를 지정합니다. 기본 GID 값은 -1입니다.
rename-dir-limit 지정된 한도보다 하위 요소가 더 적게 포함된 디렉터리의 이름 바꾸기를 허용합니다. 기본 한도 값은 0입니다.
temp-dir Cloud Storage에 업로드되기 전 쓰기가 스테이징되는 임시 디렉터리의 경로를 지정합니다. 기본값은 시스템 기본값입니다(예: "/tmp").
uid 모든 아이노드의 사용자 식별자(UID) 소유자를 지정합니다. 기본 UID 값은 -1입니다.
foreground 포그라운드에서 gcsfuse 명령어를 실행합니다. 기본값은 false입니다.
max-retry-sleep Cloud Storage FUSE가 지수 백오프를 사용하여 재시도 루프에서 절전 모드로 전환될 수 있는 최대 기간을 지정합니다. 백오프 기간이 지정된 최대 기간을 초과하면 지정된 최대 기간 동안 재시도가 계속됩니다. 기본값은 30s(30초)입니다.
multiplier 재시도 사이에 지수 백오프를 지정합니다. 여기서 값은 이전 대기 시간을 기준으로 후속 대기 시간의 배수입니다. 기본값은 "2"입니다.
stackdriver-export-interval 지정된 간격으로 Cloud Monitoring에 측정항목을 내보냅니다. 기본값은 내보내기 없음을 지정하는 0s(0초)입니다.
log-mutex 뮤텍스가 너무 오랫동안 유지되면 디버그 메시지를 출력합니다. 이 옵션을 지정하면 로그의 심각도 수준이 trace로 자동 설정되며 trace 로그, 디버그 로그, 정보 로그, 경고 로그, 오류 로그가 포함됩니다. 기본값은 false입니다.
exit-on-invariant-violation 내부 변이 위반이 인식되면 프로그램을 종료합니다. 기본값은 false입니다.