You need to enable JavaScript to run this app.
对象存储

对象存储

复制全文
FSX
FSX 原理
复制全文
FSX 原理

本文介绍 FSX 客户端文件读写、文件、目录、数据缓存的语义,帮助您更好的使用 FSX 客户端。

文件读写

应用程序可以通过 FSX 客户端访问 TOS 桶内的整个对象或者指定偏移读取某一部分数据。FSX 客户端针对大文件顺序读场景进行了优化,会自动的向 TOS 并发预读数据,以提高顺序读场景的吞吐带宽。默认场景下, FSX 客户端不会将文件下载到本地目录,也不会占用本地空间,只有配置读缓存挂载参数后,才会将数据缓存在读缓存目录。
对于写操作,应用程序必须从文件的起始位置写入,而且只支持顺序写,不支持随机写。FSX 客户端默认会先写入到本地临时文件目录,临时文件目录可以在挂载时指定 temp_dir 参数进行配置,默认在 /tmp/ 下创建临时目录作为临时文件目录。如果您对性能敏感,可以在挂载时指定 tmpfs 作为写临时文件目录。写满一个段大小(part_size)后,FSX 会异步的将这部分数据上传到 TOS 服务端,并通过并发上传的方式优化写入吞吐。
应用程序只有 close 后,该文件才能对其他客户端可见,且不允许再在此文件上继续写入。对于覆盖已存在的文件场景,应用程序打开文件(open)时需要设置 O_TRUNC 标志,代表需要截断(truncate) 该文件。

注意

由于写操作首先会将数据写入临时文件目录,因此需要确保临时文件目录有足够的空间来暂存写入数据。临时文件目录空间至少需要保证 10240*分段数据 的大小,对于默认分段数据大小为 8M 的场景,即需要 80GiB 的空间。

列举文件/目录

FSX 客户端对列举文件/目录场景进行了优化,由于 List 操作耗时较长,FSX 客户端增加了预取缓存来减少对 TOS 服务端的 List 请求次数,提升列举性能的同时,也降低了 List 请求的成本。

文件和目录

目录对文件系统来说至关重要,FSX 客户端会将对象名称中的 / 解释成目录的分隔符,从而自动推断 TOS 存储桶的目录结构。例如桶内存在名为 dir1/dir2/file 的对象,其中的 dir1/、dir2/ 将被解释成目录,file 被解释成文件,这三者的文件系统架构为 dir1/、dir1/dir2/、dir1/dir2/file。
对于目录和文件同名场景,保证目录优先级高于文件的原则,因此会忽略文件。例如同时存在对象 a/b 和 a/b/c,在 a/b 中会将 b 解释成文件,在 a/b/c 中会将 b 解释成目录,映射时会忽略掉对象 a/b。如果后续 a/b/c 被删除,b 不存在重名的问题,a/b 将再次可见。

数据缓存

FSX 客户端支持本地数据缓存功能,此功能适用于小数据量频繁读取某一批文件场景。通过开启数据缓存,从同一计算实例对同一批数据读取时,可以有效减少对 TOS 的请求访问,降低成本的同时,也可以提升读取性能。

注意

使用数据缓存功能,会影响数据的一致性和有效性,可能会读取过期的数据,对于数据实时性、一致性要求较高的场景,不建议使用数据缓存功能。
对于文件一次性读取场景,使用数据缓存会对性能和成本无提升作用,不建议启用数据缓存功能。

开启数据缓存功能后,需要指定缓存目录和缓存空间大小。FSX 客户端会在挂载时指定的缓存目录下创建一个新的子目录,并且在挂载和卸载时删除该子目录下的任何文件和目录。缓存的数据达到设置的缓存空间大小后,FSX 客户端会主动从缓存目录中清理最近最少使用的数据块。

最近更新时间:2025.07.04 16:25:34
这个页面对您有帮助吗?
有用
有用
无用
无用