diff --git a/docs/en/images/seaweedfs_arch_intro.png b/docs/en/images/seaweedfs_arch_intro.png new file mode 100644 index 000000000000..d3003f054307 Binary files /dev/null and b/docs/en/images/seaweedfs_arch_intro.png differ diff --git a/docs/en/images/seaweedfs_superblock.png b/docs/en/images/seaweedfs_superblock.png new file mode 100644 index 000000000000..a17a292ded75 Binary files /dev/null and b/docs/en/images/seaweedfs_superblock.png differ diff --git a/docs/en/introduction/comparison/juicefs_vs_seaweedfs.md b/docs/en/introduction/comparison/juicefs_vs_seaweedfs.md index 9b43902e21ff..78d24fe2fa54 100644 --- a/docs/en/introduction/comparison/juicefs_vs_seaweedfs.md +++ b/docs/en/introduction/comparison/juicefs_vs_seaweedfs.md @@ -1,5 +1,198 @@ --- +title: JuiceFS vs. SeaweedFS slug: /comparison/juicefs_vs_seaweedfs +description: This document compares JuiceFS and SeaweedFS, covering their architecture, storage mechanisms, client protocols, and other advanced features. --- -This chapter is currently only available in Chinese +[SeaweedFS](https://github.com/seaweedfs/seaweedfs) and [JuiceFS](https://github.com/juicedata/juicefs) are both open-source high-performance distributed file storage systems. They operate under the business-friendly Apache License 2.0. However, JuiceFS comes in two versions: a [Community Edition](https://juicefs.com/docs/community/introduction) and an [Enterprise Edition](https://juicefs.com/en/blog/solutions/juicefs-enterprise-edition-features-vs-community-edition), you can use JuiceFS Enterprise Edition as on-premises deployment, or [use Cloud Service](https://juicefs.com/docs/cloud) directly. The Enterprise Edition uses a proprietary metadata engine, while its client shares code extensively with the [Community Edition](https://github.com/juicedata/juicefs). + +This document compares the key attributes of JuiceFS and SeaweedFS in a table and then explores them in detail. You can easily see their main differences in the table below and delve into specific topics you're interested in within this article. By highlighting their contrasts and evaluating their suitability for different use cases, this document aims to help you make informed decisions. + +## A quick summary of SeaweedFS vs. JuiceFS + +| Comparison basis | SeaweedFS | JuiceFS | +| :--- | :--- | :--- | +| Metadata engine | Supports multiple databases | The Community Edition supports various databases; the Enterprise Edition uses an in-house, high-performance metadata engine. | +| Metadata operation atomicity | Not guaranteed | The Community Edition ensures atomicity through database transactions; the Enterprise Edition ensures atomicity within the metadata engine. | +| Changelog | Supported | Exclusive to the Enterprise Edition | +| Data storage | Self-contained | Relies on object storage | +| Erasure coding | Supported | Relies on object storage | +| Data consolidation | Supported | Relies on object storage | +| File splitting | 8MB | 64MB logical blocks + 4MB physical storage blocks | +| Tiered storage | Supported | Relies on object storage | +| Data compression | Supported (based on file extensions) | Supported (configured globally) | +| Storage encryption | Supported | Supported | +| POSIX compatibility | Basic | Full | +| S3 protocol | Basic | Basic | +| WebDAV protocol | Supported | Supported | +| HDFS compatibility | Basic | Full | +| CSI Driver | Supported | Supported | +| Client cache | Unsupported | Supported | +| Cluster data replication | Unidirectional and bidirectional replication is supported | Exclusive to the Enterprise Edition, only unidirectional replication is supported | +| Cloud data cache | Supported (manual synchronization) | Exclusive to the Enterprise Edition | +| Trash | Unsupported | Supported | +| Operations and monitoring | Supported | Supported | +| Release date | April 2015 | January 2021 | +| Primary maintainer | Individual (Chris Lu) | Company (Juicedata Inc.) | +| Programming language | Go | Go | +| Open source license | Apache License 2.0 | Apache License 2.0 | + +## The SeaweedFS architecture + +The system consists of three components: + +- The volume servers, which store files in the underlying layer +- The master servers, which manage the cluster +- An optional component, filer, which provides additional features to the upper layer + +![SeaweedFS architecture](../../images/seaweedfs_arch_intro.png) + +In the system operation, both the volume server and the master server are used for file storage: + +- The volume server focuses on data read and write operations. +- The master server primarily functions as a management service for the cluster and volumes. + +In terms of data access, SeaweedFS implements a similar approach to Haystack. A user-created volume in SeaweedFS corresponds to a large disk file ("Superblock" in the diagram below). Within this volume, all files written by the user ("Needles" in the diagram) are merged into the large disk file. + +![SeaweedFS Superblock](../../images/seaweedfs_superblock.png) + +Data write and read process in SeaweedFS: + +1. Before a write operation, the client initiates a write request to the master server. +2. SeaweedFS returns a File ID (composed of Volume ID and offset) based on the current data volume. During the writing process, basic metadata information such as file length and chunk details is also written together with the data. +3. After the write is completed, the caller needs to associate the file with the returned File ID and store this mapping in an external system such as MySQL. +4. During a read operation, since the File ID already contains all the necessary information to compute the file's location (offset), the file content can be efficiently retrieved. + +On top of the underlying storage services, SeaweedFS offers a component called filer, which interfaces with the volume server and the master server. It provides features like POSIX support, WebDAV, and the S3 API. Like JuiceFS, the filer needs to connect to an external database to store metadata information. + +## The JuiceFS architecture + +JuiceFS adopts an architecture that separates data and metadata storage: + +- File data is split and stored in object storage systems such as Amazon S3. +- Metadata is stored in a user-selected database such as Redis or MySQL. + +The client connects to the metadata engine for metadata services and writes actual data to object storage, achieving distributed file systems with strong consistency . + +![JuiceFS architecture](../../images/juicefs-arch-new.png) + +For details about JuiceFS' architecture, see the [Architecture](../architecture.md) document. + +## Architecture comparison + +### Metadata + +Both SeaweedFS and JuiceFS support storing file system metadata in external databases: + +- SeaweedFS supports up to [24 databases](https://github.com/seaweedfs/seaweedfs/wiki/Filer-Stores). +- JuiceFS has a high requirement for database transaction capabilities and currently supports [10 transactional databases across 3 categories](../../reference/how_to_set_up_metadata_engine.md). + +### Atomic operations + +JuiceFS ensures strict atomicity for every operation, which requires strong transaction capabilities from the metadata engine like Redis and MySQL. As a result, JuiceFS supports fewer databases. + +SeaweedFS provides weaker atomicity guarantees for operations. It only uses transactions of some databases (SQL, ArangoDB, and TiKV) during rename operations, with a lower requirement for database transaction capabilities. Additionally, during the rename operation, SeaweedFS does not lock the original directory or file during the metadata copying process. This may result in data loss under high loads. + +### Changelog and related features + +SeaweedFS generates changelog for all metadata operations. The changelog can be transmitted and replayed. This ensures data safety and enables features like file system data replication and operation auditing. + +SeaweedFS supports file system data replication between multiple clusters. It offers two asynchronous data replication modes: + +- Active-Active. In this mode, both clusters participate in read and write operations and they synchronize data bidirectionally. When there are more than two nodes in the cluster, certain operations such as renaming directories are subject to certain restrictions. +- Active-Passive. In this mode, a primary-secondary relationship is established, and the passive side is read-only. + +Both modes achieve consistency between different cluster data by transmitting and applying changelog. Each changelog has a signature to ensure that the same message is applied only once. + +The JuiceFS Community Edition does not implement a changelog, but it can use its inherent data replication capabilities from the metadata engine and object storage to achieve file system mirroring. For example, both [MySQL](https://dev.mysql.com/doc/refman/8.0/en/replication.html) and [Redis](https://redis.io/docs/management/replication) only support data replication. When combined with [S3's object replication feature](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication.html), either of them can enable a setup similar to SeaweedFS' Active-Passive mode without relying on JuiceFS. + +It's worth noting that the JuiceFS Enterprise Edition implements the metadata engine based on changelog. It supports [data replication](https://juicefs.com/docs/cloud/guide/replication) and [mirror file system](https://juicefs.com/docs/cloud/guide/mirror). + +## Storage comparison + +As mentioned earlier, SeaweedFS' data storage is achieved through volume servers + master servers, supporting features like merging small data blocks and erasure coding. + +JuiceFS' data storage relies on object storage services, and relevant features are provided by the object storage. + +### File splitting + +Both SeaweedFS and JuiceFS split files into smaller chunks before persisting them in the underlying data system: + +- SeaweedFS splits files into 8MB blocks. For extremely large files (over 8GB), it also stores the chunk index in the underlying data system. +- JuiceFS uses 64MB logical data blocks (chunks), which are further divided into 4MB blocks to be uploaded to object storage. For details, see [How JuiceFS stores files](../architecture.md#how-juicefs-store-files). + +### Tiered storage + +For newly created volumes, SeaweedFS stores data locally. For older volumes, SeaweedFS supports uploading them to the cloud to achieve [hot-cold data separation](https://github.com/seaweedfs/seaweedfs/wiki/Tiered-Storage). + +JuiceFS does not implement tiered storage but directly uses object storage's tiered management services, such as [Amazon S3 Glacier storage classes](https://aws.amazon.com/s3/storage-classes/glacier/?nc1=h_ls). + +### Data compression + +JuiceFS supports compressing all written data using LZ4 or Zstandard. +SeaweedFS determines whether to compress data based on factors such as the file extension and file type. + +### Encryption + +Both support encryption, including encryption during transmission and at rest: + +- SeaweedFS supports encryption both in transit and at rest. When data encryption is enabled, all data written to the volume server is encrypted using random keys. The corresponding key information is managed by the filer that maintains the file metadata. For details, see the [Wiki](https://github.com/seaweedfs/seaweedfs/wiki/Filer-Data-Encryption). +- For details about JuiceFS' encryption feature, see [Data Encryption](../../security/encrypt.md). + +## Client protocol comparison + +### POSIX + +JuiceFS is [fully POSIX-compatible](../../reference/posix_compatibility.md), while SeaweedFS currently [partially implements POSIX compatibility](https://github.com/seaweedfs/seaweedfs/wiki/FUSE-Mount), with ongoing feature enhancements. + +### S3 + +JuiceFS implements an [S3 gateway](https://juicefs.com/docs/community/s3_gateway), enabling direct access to the file system through the S3 API. It supports tools like s3cmd, AWS CLI, and MinIO Client (mc) for file system management. + +SeaweedFS currently [supports a subset of the S3 API](https://github.com/seaweedfs/seaweedfs/wiki/Amazon-S3-API), covering common read, write, list, and delete requests, with some extensions for specific requests like reads. + +### WebDAV + +Both support the WebDAV protocol. For details, see: + +- [SeaweedFS Wiki](https://github.com/seaweedfs/seaweedfs/wiki/WebDAV) +- [JuiceFS documentation](../../deployment/webdav.md) + +### HDFS + +JuiceFS is [fully compatible with the HDFS API](../../deployment/hadoop_java_sdk.md), including Hadoop 2.x, Hadoop 3.x, and various components within the Hadoop ecosystem. + +SeaweedFS offers [basic HDFS compatibility](https://github.com/seaweedfs/seaweedfs/wiki/Hadoop-Compatible-File-System). It lacks support for advanced operations like truncate, concat, checksum, and set attributes. + +### CSI Driver + +Both support a CSI Driver. For details, see: + +- [SeaweedFS CSI Driver](https://github.com/seaweedfs/seaweedfs-csi-driver) +- [JuiceFS CSI Driver](https://github.com/juicedata/juicefs-csi-driver) + +## Other advanced features + +### Client cache + +SeaweedFS client is equipped with [basic cache capabilities](https://github.com/seaweedfs/seaweedfs/wiki/FUSE-Mount), but its documentation weren't located at the time of writing, you can search for `cache` in the [source code](https://github.com/seaweedfs/seaweedfs/blob/master/weed/command/mount.go). + +JuiceFS' client supports [metadata and data caching](../../guide/cache_management.md), allowing users to optimize based on their application's needs. + +### Object storage gateway + +SeaweedFS can be used as an [object storage gateway](https://github.com/seaweedfs/seaweedfs/wiki/Gateway-to-Remote-Object-Storage), you can manually warm up specified data to local cache directory, while local modification is asynchronously uploaded to object storage. + +JuiceFS stores files in split form. Due to its architecture, it does not support serving as a cache for object storage or a cache layer. However, the JuiceFS Enterprise Edition has a standalone feature to provide caching services for existing data in object storage, which is similar to SeaweedFS' object storage gateway. + +### Trash + +By default, JuiceFS enables the [Trash](../../security/trash.md) feature. To prevent accidental data loss and ensure data safety, deleted files are retained for a specified time. +However, SeaweedFS does not support this feature. + +### Operations and maintenance + +Both offer comprehensive maintenance and troubleshooting solutions: + +- JuiceFS provides [`juicefs stats`](../../administration/fault_diagnosis_and_analysis.md#stats) and [`juicefs profile`](../../administration/fault_diagnosis_and_analysis.md#profile) to let users view real-time performance metrics. It offers a [`metrics`](../../administration/monitoring.md#collect-metrics) API to integrate monitoring data into Prometheus for visualization and monitoring alerts in Grafana. +- SeaweedFS uses [`weed shell`](https://github.com/seaweedfs/seaweedfs/wiki/weed-shell) to interactively execute maintenance tasks, such as checking the current cluster status and listing file directories. It also supports [push and pull](https://github.com/seaweedfs/seaweedfs/wiki/System-Metrics) approaches to integrate with Prometheus. diff --git a/docs/zh_cn/introduction/comparison/juicefs_vs_seaweedfs.md b/docs/zh_cn/introduction/comparison/juicefs_vs_seaweedfs.md index 4fc9ede28a47..fc11a4335299 100644 --- a/docs/zh_cn/introduction/comparison/juicefs_vs_seaweedfs.md +++ b/docs/zh_cn/introduction/comparison/juicefs_vs_seaweedfs.md @@ -1,13 +1,16 @@ --- title: JuiceFS 对比 SeaweedFS slug: /comparison/juicefs_vs_seaweedfs +description: 本文对比 JuiceFS 和 SeaweedFS 的架构、存储机制、客户端协议及其他高级功能。 --- [SeaweedFS](https://github.com/seaweedfs/seaweedfs) 与 [JuiceFS](https://github.com/juicedata/juicefs) 皆是开源的高性能分布式文件存储系统,但二者存在诸多设计区别与功能差异,本章将会详述他们的区别和各自适用场景,帮助你的团队进行技术选型。 -SeaweedFS 于 2015 年 4 月发布,而 JuiceFS 于 2021 年 1 月发布,都使用 Go 语言编写,并采用了对商用更友好的 Apache License 2.0。你可以通过下表速查两者的关键特性对比,然后在本文中选取感兴趣的话题详细阅读。 +SeaweedFS 和 JuiceFS 都采用了对商用更友好的 Apache License 2.0,但 JuiceFS 分为[社区版](https://juicefs.com/docs/zh/community/introduction)和[企业版](https://juicefs.com/zh-cn/blog/solutions/juicefs-enterprise-edition-features-vs-community-edition),企业版提供多种交付形式,例如私有部署和[云服务](https://juicefs.com/docs/zh/cloud)。JuiceFS 企业版使用自研的闭源元数据引擎,其客户端则与[社区版](https://github.com/juicedata/juicefs)大量共享代码。你可以通过下表速查两者的关键特性对比,然后在本文中选取感兴趣的话题详细阅读。 -| | SeaweedFS | JuiceFS | +## JuiceFS 和 SeaweedFS 对比一览 + +| 对比项 | SeaweedFS | JuiceFS | | :--- | :--- | :--- | | 元数据引擎 | 支持多种数据库 | 社区版支持多种数据库、企业版使用自研高性能元数据引擎 | | 元数据操作原子性 | 未保证 | 社区版通过数据库事务保证、企业版元数据引擎自身保证操作原子性 | @@ -25,7 +28,7 @@ SeaweedFS 于 2015 年 4 月发布,而 JuiceFS 于 2021 年 1 月发布,都 | HDFS 兼容性 | 基本 | 完整 | | CSI 驱动 | 支持 | 支持 | | 客户端缓存 | 不支持 | 支持 | -| 集群数据复制 | 双向异步、多模式 | 仅企业版支持 | +| 集群数据复制 | 支持单向、双向复制模式 | 仅企业版支持单向复制 | | 云上数据缓存 | 支持(手动同步) | 仅企业版支持 | | 回收站 | 不支持 | 支持 | | 运维与监控 | 支持 | 支持 | @@ -36,23 +39,40 @@ SeaweedFS 于 2015 年 4 月发布,而 JuiceFS 于 2021 年 1 月发布,都 ## SeaweedFS 技术架构 -系统由 3 部分组成,底层存储文件的 **Volume Server**,用于管理集群的 **Master Server**,以及一个向上提供更多特性的 **Filer** 可选组件。 +系统由 3 部分组成: + +- **Volume Server**,用于底层存储文件 +- **Master Server**,用于管理集群 +- **Filer**,一个向上提供更多特性的可选组件 ![SeaweedFS 系统架构](../../images/seaweedfs_arch_intro.png) -Volume Server 与 Master Server 一并构成文件存储服务。Volume Server 专注于数据的写入与读取,Master Server 负责管理集群与 Volumes。 +Volume Server 与 Master Server 一并构成文件存储服务: -在读写数据时,SeaweedFS 的实现与 Haystack 相似,用户创建的文件系统(Volume)实际上是一个大磁盘文件,也就是下图的 Superblock。在此 Volume 中,用户写入的所有文件都会被合并到该大磁盘文件中,借用 Haystack 的术语,每一个文件都是“一根针”,needle。 +- Volume Server 专注于数据的写入与读取 +- Master Server 负责管理集群与 Volumes -在开始写入数据之前,客户端需要向 Master Server 发起写入申请,随后 SeaweedFS 会根据当前的数据量返回一个 File ID,这个 ID 由 Volume ID 与该 Volume 中可供写入位置的偏移量计算而来。在写入的过程中,一并被写入的还有基础的元数据信息(文件长度与 Chunk 等信息);当写入完成之后,调用者需要在一个外部系统(例如 MySQL)中对该文件与返回的 File ID 进行关联保存。在读取数据时,由于 File ID 已经包含了计算文件位置(偏移)的所有信息,因此可以高效地将文件的内容读取出来。 +在读写数据时,SeaweedFS 的实现与 Haystack 相似,用户创建的文件系统(Volume)实际上是一个大磁盘文件,也就是下图的 Superblock。在此 Volume 中,用户写入的所有文件都会被合并到该大磁盘文件中,借用 Haystack 的术语,每一个文件都是“一根针”,needle。 ![SeaweedFS Superblock](../../images/seaweedfs_superblock.png) +SeaweedFS 中数据写入和读取流程: + +1. 在开始写入数据之前,客户端向 Master Server 发起写入申请。 +2. SeaweedFS 根据当前的数据量返回一个 File ID,这个 ID 由 Volume ID 与该 Volume 中可供写入位置的偏移量计算而来。在写入的过程中,一并被写入的还有基础的元数据信息(文件长度与 Chunk 等信息)。 +3. 当写入完成之后,调用者需要在一个外部系统(例如 MySQL)中对该文件与返回的 File ID 进行关联保存。 +4. 在读取数据时,由于 File ID 已经包含了计算文件位置(偏移)的所有信息,因此可以高效地将文件的内容读取出来。 + 在上述的底层存储服务之上,SeaweedFS 提供了一个名为 Filer 的组件,他对接 Volume Server 与 Master Server,对外提供丰富的功能与特性,如 POSIX 支持、WebDAV、S3 API。与 JuiceFS 相同,Filer 也需要对接一个外部数据库以保存元数据信息。 ## JuiceFS 技术架构 -JuiceFS 采用元数据与数据分离存储的架构,文件数据本身会被切分保存在对象存储(如 S3)当中,而元数据则是会被保存在元数据引擎中,元数据引擎是一个由用户自行选择数据库,如 Redis、MySQL。客户端连接元数据引擎获取元数据服务,然后将实际数据写入对象存储,实现强一致性分布式文件系统。 +JuiceFS 采用元数据与数据分离存储的架构: + +- 文件数据本身会被切分保存在对象存储(如 S3)当中 +- 元数据被保存在元数据引擎中,元数据引擎是一个由用户自行选择数据库,如 Redis、MySQL。 + +客户端连接元数据引擎获取元数据服务,然后将实际数据写入对象存储,实现强一致性分布式文件系统。 ![JuiceFS Arch](../../images/juicefs-arch-new.png) @@ -62,7 +82,10 @@ JuiceFS 的架构在[「技术架构」](../architecture.md)有更详细的介 ### 元数据 -SeaweedFS 与 JuiceFS 都支持通过外部数据库以存储文件系统的元数据信息。SeaweedFS 支持多达 [24](https://github.com/seaweedfs/seaweedfs/wiki/Filer-Stores) 种数据库。JuiceFS 对数据库事务能力要求更高(下方会详细介绍),当前支持了 3 类共 10 种事务型数据库。 +SeaweedFS 与 JuiceFS 都支持通过外部数据库以存储文件系统的元数据信息: + +- SeaweedFS 支持多达 [24](https://github.com/seaweedfs/seaweedfs/wiki/Filer-Stores) 种数据库。 +- JuiceFS 对数据库事务能力要求更高(下方会详细介绍),当前支持了 [3 类共 10 种事务型数据库](../../reference/how_to_set_up_metadata_engine.md)。 ### 原子性操作 @@ -73,7 +96,12 @@ SeaweedFS 与 JuiceFS 都支持通过外部数据库以存储文件系统的元 SeaweedFS 会为所有的元数据操作生成变更日志(changelog),日志可以被传输、重放,保证数据安全的同时,还能用来实现文件系统数据复制、操作审计等功能。 -SeaweedFS 支持在多个集群之间进行文件系统数据复制,存在两种异步数据复制模式:「Active-Active」与「Active-Passive」,Active-Active 模式中,两个集群都能够参与文件写入并双向同步,Active-Passive 模式则是主从关系,Passive 一方只读。2 种模式都是通过传递 changelog 再应用的机制实现了不同集群数据间的一致性,对于每一条 changelog,其中会有一个签名信息以保证同一个修改不会被循环多次。在集群节点数量超过 2 个节点的 Active-Active 模式下,SeaweedFS 的一些操作(如重命名目录)会受到一些限制。 +SeaweedFS 支持在多个集群之间进行文件系统数据复制,存在两种异步数据复制模式: + +- 「Active-Active」:此模式中,两个集群都能够参与文件写入并双向同步。如果集群节点数量超过 2,SeaweedFS 的一些操作(如重命名目录)会受到一些限制。 +- 「Active-Passive」:此模式是主从关系,Passive 一方只读。 + +这两种模式都是通过传递 changelog 再应用的机制实现了不同集群数据间的一致性,对于每一条 changelog,其中会有一个签名信息以保证同一个修改不会被循环多次。 JuiceFS 社区版没有实现变更日志,但可以自行使用元数据引擎和对象存储自身的数据复制能力实现文件系统镜像功能,比方说 [MySQL](https://dev.mysql.com/doc/refman/8.0/en/replication.html) 或 [Redis](https://redis.io/docs/management/replication) 仅支持数据复制,配合上 [S3 的复制对象功能](https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/userguide/replication.html),就能脱离 JuiceFS 实现类似 SeaweedFS 的 Active-Passive 模式。 @@ -85,7 +113,10 @@ JuiceFS 社区版没有实现变更日志,但可以自行使用元数据引擎 ### 文件拆分 -SeaweedFS 与 JuiceFS 都会将文件拆分成若干个小块再持久化到底层的数据系统中。SeaweedFS 将文件拆分成 8MB 的块,对于超大文件(超过 8GB),它会将 Chunk 索引也保存到底层的数据系统中。而 JuiceFS 内部会使用 64MB 的逻辑数据块(Chunk),再拆成 4MB 的 Block 上传至对象存储,这点在[架构文档](../architecture.md#how-juicefs-store-files)中有更详细的介绍。 +SeaweedFS 与 JuiceFS 都会将文件拆分成若干个小块再持久化到底层的数据系统中: + +- SeaweedFS 将文件拆分成 8MB 的块,对于超大文件(超过 8GB),它会将 Chunk 索引也保存到底层的数据系统中。 +- JuiceFS 内部会使用 64MB 的逻辑数据块(Chunk),再拆成 4MB 的 Block 上传至对象存储,这点在[架构文档](../architecture.md#how-juicefs-store-files)中有更详细的介绍。 ### 分层存储 @@ -99,8 +130,8 @@ JuiceFS 支持使用 LZ4 或者 Zstandard 来为所有写入的数据进行压 二者均支持加密,包括传输中加密及静态加密: -* SeaweedFS 支持传输中加密与静态加密。在开启了数据加密后,所有写入 Volume Server 的数据都会使用随机的密钥进行加密,而这些对应的随机密钥信息则由维护文件元数据的 Filer 进行管理,详见 [Wiki](https://github.com/seaweedfs/seaweedfs/wiki/Filer-Data-Encryption) -* JuiceFS 的加密功能详见[文档](../../security/encrypt.md) +* SeaweedFS 支持传输中加密与静态加密。在开启了数据加密后,所有写入 Volume Server 的数据都会使用随机的密钥进行加密,而这些对应的随机密钥信息则由维护文件元数据的 Filer 进行管理,详见 [Wiki](https://github.com/seaweedfs/seaweedfs/wiki/Filer-Data-Encryption)。 +* JuiceFS 的加密功能详见[文档](../../security/encrypt.md)。 ## 客户端协议对比 @@ -112,7 +143,7 @@ JuiceFS [完全兼容 POSIX](../../reference/posix_compatibility.md),而 Seawe JuiceFS 实现了 [S3 网关](https://juicefs.com/docs/zh/community/s3_gateway),因此如果有需要,可以通过 S3 API 直接访问文件系统,也能使用 s3cmd、AWS CLI、MinIO Client(mc)等工具直接管理文件系统。 -SeaweedFS 当前[支持部分 S3 API](https://github.com/seaweedfs/seaweedfs/wiki/Amazon-S3-API),覆盖了常用的读写查删等请求,对一些特定的请求(如 Read)还做了功能上的扩展。。 +SeaweedFS 当前[支持部分 S3 API](https://github.com/seaweedfs/seaweedfs/wiki/Amazon-S3-API),覆盖了常用的读写查删等请求,对一些特定的请求(如 Read)还做了功能上的扩展。 ### WebDAV @@ -136,13 +167,15 @@ JuiceFS [完整兼容 HDFS API](../../deployment/hadoop_java_sdk.md)。包括 Ha ### 客户端缓存 -JuiceFS 客户端支持[元数据以及数据缓存](../../guide/cache_management.md),允许用户根据自己的应用场景进行调优,而 SeaweedFS 不具备客户端缓存能力。 +SeaweedFS 客户端[具备简单客户端缓存能力](https://github.com/seaweedfs/seaweedfs/wiki/FUSE-Mount),由于在写作期间未能找到具体文档,可以直接在其[源码](https://github.com/seaweedfs/seaweedfs/blob/master/weed/command/mount.go)中搜索 `cache` 相关字样。 + +JuiceFS 客户端支持[元数据以及数据缓存](../../guide/cache_management.md),提供更丰富的定制空间,允许用户根据自己的应用场景进行调优。 -### 对象存储数据缓存 +### 对象存储网关 -SeaweedFS 可以作为对象存储的缓存层来使用,支持通过命令手动预热数据。数据也支持本地修改,会异步同步到对象存储中。 +SeaweedFS 可以作为[对象存储的网关(Gateway)](https://github.com/seaweedfs/seaweedfs/wiki/Gateway-to-Remote-Object-Storage)来使用,可以将对象存储中指定的数据预热到本地,在本地发生的数据修改也会异步同步到对象存储中。 -由于 JuiceFS 使用对象存储的方式是将文件进行切分存储,因架构所限,不支持作为对象存储的缓存服务。但是在 JuiceFS 企业版,我们开发了单独的功能,为对象存储中已有的数据提供缓存服务,功能类似 SeaweedFS。 +由于 JuiceFS 使用对象存储的方式是将文件进行切分存储,因架构所限,不支持直接作为对象存储的网关或者缓存层。但是在 JuiceFS 企业版,我们开发了单独的功能,为对象存储中已有的数据提供缓存服务,功能类似 SeaweedFS。 ### 回收站 @@ -153,4 +186,4 @@ JuiceFS 支持并默认开启[回收站](../../security/trash.md)功能,删除 二者均提供完善的运维和排查调优方案: * JuiceFS 可以通过 [`juicefs stats`](../../administration/fault_diagnosis_and_analysis.md#stats),[`juicefs profile`](../../administration/fault_diagnosis_and_analysis.md#profile) 来实时观测文件系统性能。也可以通过 [`metrics API`](../../administration/monitoring.md#collect-metrics) 将监控数据接入到 Prometheus,用 Grafana 进行可视化和监控告警。 -* SeaweedFS 可以通过 [weed shell](https://github.com/seaweedfs/seaweedfs/wiki/weed-shell) 来交互式执行运维工作,例如查看当前集群状态、列举文件列表。SeaweedFS 同时支持 [push 和 pull 方式](https://github.com/seaweedfs/seaweedfs/wiki/System-Metrics) 对接 Prometheus。 +* SeaweedFS 可以通过 [`weed shell`](https://github.com/seaweedfs/seaweedfs/wiki/weed-shell) 来交互式执行运维工作,例如查看当前集群状态、列举文件列表。SeaweedFS 同时支持 [push 和 pull 方式](https://github.com/seaweedfs/seaweedfs/wiki/System-Metrics) 对接 Prometheus。