From cf1791e3214a7fc0b10312c7f200f094fabf33c0 Mon Sep 17 00:00:00 2001 From: timfeirg Date: Thu, 17 Aug 2023 10:53:54 +0800 Subject: [PATCH] docs: translate juicefs_vs_seaweedfs (#3970) --- docs/en/images/seaweedfs_arch_intro.png | Bin 0 -> 110961 bytes docs/en/images/seaweedfs_superblock.png | Bin 0 -> 35398 bytes .../comparison/juicefs_vs_seaweedfs.md | 195 +++++++++++++++++- .../comparison/juicefs_vs_seaweedfs.md | 71 +++++-- 4 files changed, 246 insertions(+), 20 deletions(-) create mode 100644 docs/en/images/seaweedfs_arch_intro.png create mode 100644 docs/en/images/seaweedfs_superblock.png diff --git a/docs/en/images/seaweedfs_arch_intro.png b/docs/en/images/seaweedfs_arch_intro.png new file mode 100644 index 0000000000000000000000000000000000000000..d3003f054307804e1f73b157bb7b0109bdc82348 GIT binary patch literal 110961 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 %c&=*V-G*|D8F?7DrOhQ@YB0U# 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 aU)s92c4bm^fo~XruhTkbPZF>;LH`HyCDO|P literal 0 HcmV?d00001 diff --git a/docs/en/images/seaweedfs_superblock.png b/docs/en/images/seaweedfs_superblock.png new file mode 100644 index 0000000000000000000000000000000000000000..a17a292ded750f64ca02c6a7cf18001fdc7c5d77 GIT binary patch literal 35398 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 >*t|&WsUt#Pq==vPk5rGoIwO94-@m# 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 literal 0 HcmV?d00001 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。