本文档介绍了如何使用 Cloud Storage FUSE 配置文件以永久性的方式配置 Cloud Storage FUSE 的行为。如需使用配置文件,请在运行 gcsfuse
命令时,在 --config-file
选项中指定配置文件的路径。
Cloud Storage FUSE 配置文件是一个 YAML 文件,使用以下格式和字段。您还可以使用 Cloud Storage FUSE CLI 设置由配置文件字段控制的行为。
Cloud Storage FUSE 配置文件格式和字段
以下 YAML 配置示例展示了 Cloud Storage FUSE 中可用的格式和字段。
app-name: "APP_NAME" 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 cache-dir: "CACHE_DIR" 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 negative-ttl-secs: ENABLE_NEGATIVE_TTL_SECS stat-cache-max-size-mb: STAT_CACHE_MAX_SIZE ttl-secs: TTL_SECS type-cache-max-size-mb: TYPE_CACHE_MAX_SIZE 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-attempts: MAX_RETRY_ATTEMPTS max-retry-sleep: MAX_RETRY_SLEEP multiplier: "MULTIPLIER" metrics: cloud-metrics-export-interval-secs: CLOUD_METRICS_EXPORT_INTERVAL prometheus-port: PROMETHEUS_PORT debug: log-mutex: LOG_MUTEX exit-on-invariant-violation: EXIT_ON_INVARIANT_VIOLATION write: enable-streaming-writes: STREAMING_WRITES global-max-blocks: MAXIMUM_GLOBAL_BLOCKS read: enable-buffered-read: ENABLE_BUFFERED_READ global-max-blocks: MAXIMUM_GLOBAL_READ_BLOCKS profile: PROFILE
Cloud Storage FUSE 配置文件字段
下表介绍了您可以在 Cloud Storage FUSE 配置文件中指定的字段。除非另有说明,否则所有字段均为可选字段。
字段 | 说明 | 有效值 | 默认值 |
---|---|---|---|
|
装载的应用名称。 | 字符串值,例如:"my-bucket-mount" 。 |
"" |
|
日志写入的日志文件的路径。如果未指定此字段,则当 Cloud Storage FUSE 在前台模式下运行时,日志会路由到 stdout ;当 Cloud Storage FUSE 在后台模式下运行时,日志会路由到 syslogs 。 |
字符串值,例如:"/var/log" 。 |
"" |
|
指定日志文件的格式。 |
|
json |
|
您希望 Cloud Storage FUSE 生成日志时所对应的严重级别。严重级别按照从最低严重级别到最高严重级别的顺序排列。例如,如果指定 |
|
info |
|
日志文件在轮替之前可以达到的大小上限,以兆字节 (MB) 为单位。 | 整数。最小值为 1 。 |
512 |
|
要保留的轮替日志文件数上限,不包括日志写入的活跃文件。 |
|
10 |
|
指定是否使用 gzip 压缩轮替的日志文件。 |
布尔值:true 、false 。 |
true |
|
启用文件缓存并指定用于存储文件缓存数据的目录。 |
路径,例如:"/tmp/gcsfuse-cache-path" 。
空值表示此字段处于停用状态。此字段默认处于停用状态。 |
|
|
用于指定文件缓存可以使用的大小上限(以 MiB 为单位),并使您能够限制文件缓存可以在其装载的目录中使用的总容量。 |
|
-1 |
|
确定从非零偏移量完成首次读取时,是否应异步下载完整对象并将其存储在 Cloud Storage FUSE 缓存目录中。如果您打算执行多次随机读取或部分读取,则应将此字段设置为 true 。
|
布尔值:true 、false 。 |
false |
|
通过使用文件缓存目录作为预提取缓冲区,并使用多个工作器并行下载文件的多个部分,从而加快大型文件的读取速度。 启用文件缓存后,系统会自动启用并行下载。 如需详细了解文件缓存,请参阅使用Cloud Storage FUSE 文件缓存。 如需详细了解并行下载以及如何配置支持的属性,请参阅并行下载。 |
布尔值:true 、false 。 |
true |
|
指定要为每个文件生成的 goroutine 数量上限,以便将对象从 Cloud Storage 下载到文件缓存中。 | 整数 | 16 |
|
在任何给定时间,所有文件下载作业可同时生成的 goroutine 数上限。 |
|
机器上的 CPU 核心数的两倍或 16 (以较高者为准)。 |
|
指定每个 goroutine 将对象下载到文件缓存时向 Cloud Storage 发出的每个读取请求的大小(以 MiB 为单位)。 | 整数 | 200 |
|
如果在 Cloud Storage 中找不到某个文件,则会创建一个类型为 NonexistentType 的类型缓存条目。如果文件是在 Cloud Storage 中创建的,但文件的 NonexistentType 条目已缓存,则在从类型缓存中移除 NonexistentType 条目之前,Cloud Storage FUSE 无法请求该文件。 |
布尔值:true 、false 。 |
false |
|
统计信息缓存可以使用的内存大小上限(以 MiB 为单位)。统计信息缓存始终完全保留在内存中。 |
|
32 |
|
定义负统计信息缓存条目的存留时间 (TTL)(以秒为单位),该条目会存储缓存中不存在的文件的结果。 |
|
5 |
|
定义缓存元数据条目的存留时间 (TTL)(以秒为单位)。 |
|
60 |
|
类型缓存可以使用的每个目录的大小上限(以 MiB 为单位)。 类型缓存始终完全保留在内存中。 |
|
4 |
|
仅在存储桶中装载特定目录。 | 路径,例如:"/etc/gcsfuse.yaml" 。 |
|
|
为请求停用身份验证。如果您使用的是不支持身份验证的自定义端点,应设置此字段。如果您将 Cloud Storage FUSE 与公共存储桶搭配使用,也应设置此字段。 | 布尔值:true 、false 。 |
false |
|
指定用于对发送到 Cloud Storage 的请求进行身份验证的凭据 JSON 密钥文件的绝对路径。默认情况下,Cloud Storage FUSE 使用应用默认凭据对请求进行身份验证。 | 网址。 | 如果未设置此字段,系统将使用应用默认凭证。 |
|
指定是否重复使用从 --token-url 获取的令牌。 |
布尔值:true 、false 。 |
true |
|
指定不存在 --key-file 时用于获取访问令牌的网址。 |
网址。 | |
|
指定在访问已装载的存储桶时要用于结算的项目。在装载启用了请求者付款功能的存储桶时,此字段通常是必需的。 | 表示“项目 ID”的字符串值。 | "" |
|
指定用于与 Cloud Storage 后端进行通信的协议。 |
|
http1 |
|
指定用于提取数据的备用自定义端点。
自定义端点必须支持与 Cloud Storage JSON 端点 storage.UNIVERSE_DOMAIN_NAME:443 等效的资源和操作。
如果未指定自定义端点,Cloud Storage FUSE 会使用全球 Cloud Storage JSON API 端点 storage.googleapis.com:443 。
如果您指定的自定义端点不支持身份验证,请将 anonymous-access 字段设置为 true 以绕过身份验证。 |
端点,例如:storage.googleapis.com:443 。 |
|
|
指定 Cloud Storage FUSE HTTP 客户端在超时之前等待多长时间才能收到来自服务器的响应。 | 时长,例如:1h10m10s 表示 1 小时 10 分钟 10 秒。0s 指定不超时。 |
0s ,表示不超时 |
|
指定供 Cloud Storage FUSE 可从 Cloud Storage 中读取数据的带宽限制(根据 30 秒的时间段计量得出)。 | "-1" ,表示没有限制。 |
|
|
指定每秒执行的操作数限制(根据 30 秒的时间段计量得出)。 | 浮点数。-1 指定无限制。 |
"-1" |
|
指定每个服务器允许的 TCP 连接数上限。
此选项在 --client-protocol 设置为 http1 时生效。 |
0 |
|
|
指定每个服务器允许的空闲连接数上限。
此选项在 --client-protocol 设置为 http1 时生效。 |
介于 0 和 2147483647 之间的整数。
0 指定 TCP 连接数量不受限制。 |
0 |
|
指定要从 Cloud Storage 下载的数据的区块大小,以兆字节 (MB) 为单位。 | 介于 1 和 1024 之间的整数。 |
200 |
|
隐式包含文件夹和托管文件夹。 如需了解详情,请参阅 Cloud Storage FUSE GitHub 文档中的文件和目录。 | 布尔值:true 、false 。 |
false |
|
启用列表缓存,并定义缓存列表条目的存留时间 (TTL)(以秒为单位)。列表缓存保留在页面缓存的内存中,由内核根据可用内存进行控制。 |
| 0 |
|
指示 Cloud Storage FUSE 忽略系统中断信号,例如由 Control+C 触发的 SIGINT。这样可以防止信号终止进行中的操作。 |
布尔值:true 、false 。 |
true |
|
目录的权限位,以八进制表示。 | 介于 000 和 777 之间的整数(含边界值)。 |
"755" |
|
指定文件的权限位,以八进制表示。 | 介于 000 和 777 之间的整数(含边界值)。 |
"644" |
|
指定其他系统特定的装载选项。 | ||
|
指定所有 inode 的群组标识符 (GID) 所有者。 |
|
-1 |
|
允许重命名包含的后代目录少于指定限制的目录。 | 介于 0 和 2147483647 之间的整数。 |
0 |
|
指定在上传到 Cloud Storage 之前用于暂存写入数据的临时目录的路径。 | 字符串路径,例如:"/mnt/ssd/example-user-gcsfuse-temp-dir" 。 |
"/tmp" |
|
指定所有 inode 的用户标识符 (UID) 所有者。 |
|
-1 |
|
在前台运行 gcsfuse 命令。 |
布尔值:true 、false 。 |
false |
|
指定操作失败时重试操作的最大次数,以防止无限重试循环。 |
|
0 |
|
使用指数退避算法指定在重试循环中允许 Cloud Storage FUSE 休眠的时长上限。退避时长超过指定的时长上限后,重试会以指定的时长上限继续。 | 时长,例如:1h5m50s (1 小时 5 分钟 50 秒)或 60s (60 秒)。 |
30s |
|
指定连续重试之间的指数退避算法的乘数。 | 浮点数 | "2" |
|
以指定的时间间隔将指标导出到 Cloud Monitoring。 |
表示以秒为单位的值的整数,例如:10 (10 秒)。0 指定禁止导出。 |
0 |
|
在指定的端口和 |
表示您要指定的端口的整数。 | 0 |
|
当互斥锁持续时间过长时,输出调试消息。如果指定了此字段,日志的严重级别会自动设置为 trace ,这包括轨迹日志、调试日志、信息日志、警告日志和错误日志。 |
布尔值:true 、false 。 |
false |
|
检测到内部变体违规行为时退出程序。 | 布尔值:true 、false 。 |
false |
|
控制写入路径流程,以便在写入数据时将其直接上传到 Cloud Storage,而不是在本地完全暂存写入内容,然后在执行 close() 或 fsync() 时上传。如需详细了解流式写入,请参阅 Cloud Storage FUSE GitHub 文档中的读取/写入。 |
布尔值:true 、false 。 |
true |
|
指定可用于跨所有文件进行流式写入的数据块的最大数量。默认情况下,每个文件使用一个 32 MiB 数据块。 |
|
|
|
指定将 Cloud Storage 对象的部分内容异步预提取到内存缓冲区中,从而可以从缓冲区进行后续读取操作,而无需进行网络调用。 | 布尔值:true 、false 。 |
false |
|
指定在所有文件句柄间可用于缓冲读取的最大块数。 |
|
40 |
|
应用一组预定义且经过优化的 Cloud Storage FUSE 配置,用于缓存、线程处理和缓冲区大小,以帮助您针对特定工作负载类型(例如训练、部署和检查点设置)实现高性能。如需详细了解基于工作负载类型的每种预定义配置,请参阅面向 AI/ML 工作负载的基于配置文件的配置。 |
|
"" |