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 中创建零字节文件。如果未指定此字段,则值默认为 false
file-path 日志写入的日志文件的路径,以字符串形式指定。例如 /var/log。如果未指定此字段,则当 Cloud Storage FUSE 在前台模式下运行时,日志会路由到 stdout;当 Cloud Storage FUSE 在后台模式下运行时,日志会路由到 syslogs。
format 生成日志的格式,以枚举表示。 值为 textjson。如果未指定此字段,则值默认为 json
severity

您希望 Cloud Storage FUSE 生成的日志的严重级别,以枚举表示。严重级别按照从最低严重级别到最高严重级别的顺序排列:

  • trace
  • debug
  • info
  • warning
  • error

指定严重级别时,Cloud Storage FUSE 会生成严重级别相同或更高的日志。例如,如果指定 warning,Cloud Storage FUSE 会生成警告和错误日志。 您还可以指定 off 以关闭所有日志记录。通常,我们建议使用 info 严重级别。

如果您的命令中指定了以下任一选项,则严重级别会自动设置为 trace

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

如果未指定此字段,则值默认为 info

注意:启用文件缓存时,使用 tracedebug 严重级别可能会因日志记录开销而导致性能下降,因此应仅暂时使用或在问题排查期间使用。

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 缓存可以在其装载目录中使用的总容量,这将非常有用。

  • 指定 -1 可使用您为 cache-dir 指定的目录中的缓存的全部可用容量。
  • 指定 0 可停用文件缓存。

如果未指定此字段,则值默认为 -1

cache-file-for-range-read

一个布尔值,用于确定在从非零偏移处完成首次读取时,是否应异步下载完整对象并将其存储在 Cloud Storage FUSE 缓存目录中。如果您计划执行多次随机读取或部分读取,则应将其设置为 true。如果未指定此字段,则值默认为 false

请注意,如果您从偏移量 0 开始执行部分读取,则 Cloud Storage FUSE 始终会异步下载并缓存整个对象。

enable-parallel-downloads

通过使用文件缓存目录作为预提取缓冲区,并使用多个工作器并行下载大型文件,从而加快大型文件的读取速度。默认值为 false


如需使用并行下载功能,您必须启用文件缓存。如需详细了解并行下载并配置其支持的属性,请参阅使用并行下载提升读取性能
parallel-downloads-per-file

指定要为每个文件生成的 goroutine 数量上限,以便将对象从 Cloud Storage 下载到文件缓存中。 默认值为 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 可确保读取最新的文件。 使用此值会发出 Get 元数据调用,以确保缓存中文件的对象世代与 Cloud Storage 中存储的文件的对象世代一致。如需了解详情,请参阅配置缓存失效

如果未指定此字段,则值默认为 60s

type-cache-max-size-mb

类型缓存可以使用的每个目录的大小上限(以 MiB 为单位)。 类型缓存始终完全保留在内存中。

  • 如果要装载的存储桶的单个目录内文件数量上限包含 20,000 个或更少的文件,请指定 4。 如果要装载的单个目录中的文件数上限超过 20,000,则每 5,000 个文件,值将增加 1,平均每个文件大约增加 200 个字节。
  • 指定 -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 时用于获取访问令牌的网址。
billing-project 指定在访问已装载的存储桶时要用于结算的项目。在装载启用了请求者付款功能的存储桶时,此标志通常是必需的。 默认项目为无。
client-protocol 指定用于与 Cloud Storage 后端进行通信的协议。该值可以是 http1(对于 HTTP/1.1)或 http2(对于 HTTP/2)。默认值为 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 可从 Cloud Storage 中读取数据的带宽限制(根据 30 秒的时间段计量得出)。默认限制值为 "-1",指定无限制。
limit-ops-per-sec 指定每秒执行的操作数限制(根据 30 秒的时间段计量得出)。默认限制值为 "-1",指定无限制。
max-conns-per-host 指定每个服务器允许的 TCP 连接数上限。此选项在 client-protocol 设置为 http1 时生效。 默认值为 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 指示 Cloud Storage FUSE 忽略系统中断信号,例如由 Control+C 触发的 SIGINT。这样可以防止信号终止进行中的操作。值为 truefalse。默认值为 true
dir-mode 目录的权限位,以八进制表示。默认值为 "755"
file-mode 指定文件的权限位,以八进制表示。默认值为 "644"
fuse-options 指定其他系统特定的装载选项。
gid 指定所有 inode 的群组标识符 (GID) 所有者。 默认 GID 值为 -1
rename-dir-limit 允许重命名包含的后代目录少于指定限制的目录。默认限制值为 0
temp-dir 指定在上传到 Cloud Storage 之前用于暂存写入数据的临时目录的路径。默认值为系统默认值,例如 "/tmp"
uid 指定所有 inode 的用户标识符 (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,这包括轨迹日志、调试日志、信息日志、警告日志和错误日志。 默认值为 false
exit-on-invariant-violation 检测到内部变体违规行为时退出程序。默认值为 false