4 ms·
We started to build JuiceFS since 2016, released it as a SaaS solution in 2017. After years of improvements, we released the core of JuiceFS recently, hopefully
by daviesliu 6y ago
We started to build JuiceFS since 2016, released it as a SaaS solution in 2017. After years of improvements, we released the core of JuiceFS recently, hopefully you will find it useful.
I'm the founder of JuiceFS, would like to answer any questions here.
- bogomipz 6y agoHi. I'm pretty interested and excited about this project. Under "Credits" the project states: >"The design of JuiceFS was inspired by Google File System, HDFS and MooseFS, thanks to their great work." Would you consider writing up a design doc for JuiceFS. I would be interested to know more about what specific implementation ideas you used for each of those if any, design choices and tradeoffs made, learnings etc. It would make a great blog post. Cheers.
- daviesliu 6y agoThe whole idea was came from GFS: separate the metadata and data, load all the meta into memory, single meta server for simplicity, fixed-size chunk. The POSIX and FUSE stuff was learned from MooseFS, but changed to use read-only chunk, and merge them together, and do compaction in background. Since most of object storage provide eventual consistency, the model work pretty well, also simplify the burden on cache eviction. In order to access object store in parallel, we divide the chunk into smaller blocks (4MB), which is also a good unit for caching. The Hadoop SDK (not released yet) was learned from HDFS. One key thing in the implementation is to use Redis transaction to guarantee atomicy on metadata operations, otherwise we will get into millions of random bugs.
- crest 6y agoWhat's the recommended Redis configuration for JuiceFS?
- daviesliu 6y agoRight now, the hosted Redis is the easiest one. If you run it on your own, please pay attention on the persistency options and HA solution, there should be plenty of article on these.
- daviesliu 6y agoRedisraft [1] is a good thing to expect. [1] https://github.com/RedisLabs/redisraft https://github.com/RedisLabs/redisraft
- crest 6y ago1. Does JuiceFS support TLS encrypted Redis? 2. Is there any access control and if there is who enforces it?
- daviesliu 6y ago> 1. Does JuiceFS support TLS encrypted Redis? Yes, please use `rediss://host:port/` > 2. Is there any access control and if there is who enforces it? You may specify port 0 to disable the non-TLS port completely. To enable only TLS on the default Redis port, use: -port 0 -tls-port 6379
- pjmlp 6y agoCongratulations on picking Go instead of being yet another C project. Good luck with the project.
- yossigo 6y agoCongratulations for this work! Do you have some documentation describing how the metadata is modelled in Redis?
- daviesliu 6y agoThey are summaried here: https://github.com/juicedata/juicefs/blob/main/pkg/redis/redis.go#L38 https://github.com/juicedata/juicefs/blob/main/pkg/redis/red...