Project Description: GlusterFS is an open source NAS file system with very good scalability. GlusterFS has a modular, stackable design and a unique, no-metadata server architecture. GlusterFS is now used in various applications in this "big data" era, for instance, scalable cloud storage with replication.
GlusterFS is a userland filesystem based on FUSE, it first came out on Linux, so the code relies a lot on Linux semantics. Now GlusterFS can run on NetBSD as well. Although the code doesn't compile on FreeBSD right now, the availability of FUSE in FreeBSD now also makes it possible to port it to FreeBSD.
In this project, I'll try to make GlusterFS fully work on FreeBSD. Thus we can take full advantage of GlusterFS' various capabilities, i.e., we can make many ZFS enabled machines into a large storage cloud.
1.Make changes to make the code compile on FreeBSD
2.Fix all semantic-difference (between Linux and FreeBSD) problems
3.Write /etc/rc.d script and add auto-configure and auto-build support
4.Package it all and submit to FreeBSD Port
1. Download source code from: https://github.com/cosql/glusterfs
git clone https://github.com/cosql/glusterfs
2. Build and install gluster code
make & make install
3. Add a new disk and create a partition on the disk
- For example,
newfs /dev/da2s1a && mount /dev/das1a /mnt
4. Create a gluster volume
gluster volume create gv0 replica 2 $server_ip:/mnt/exp1 $server_ip:/mnt/exp2
gluster volume gv0 start
5. Check volume status
- gluster volume info
glusterfs --log-file=log --log-level=INFO --volfile-id=gv0 --volfile-server=$server_ip <mount_point>
Now you can have fun with your mounted gluster volume.
I'm planning to test the code on a local machine and in a distributed system as well. I'll use the following test suites to evaluate correctness, stability and performance of the changes
Regression testsuite framework for functional degradation(https://github.com/amarts/regression) Posix compliance test suite, blogbench tests, fsx test
1.Fix all the errors while compiling(May 27th - June 9th)
2.Make changes for FreeBSD semantic peculiarities (June 10th - June 30th)
3.Run and pass regression test (July 1st - July 21st)
4.Work on mid-term report (July 22nd - July 29th)
5.Add auto-build support and write /etc/rc.d script(July 30th - August 3rd)
6.Run Posix compliance test, blogbench test and fsx test (August 4th - August 31th)
7.Finalize and submit the changes to GlusterFS and make the package available in FreeBSD Ports. (September 1st - September 15th)
8.Cleanup all the work and submit final report(September 16th - September 27th)