Antbird enables Hummingbird to use GlusterFS as storage backend over Libgfapi. This project aims to be Go implementation of SwiftOnFile project.
- Set up the hummingbird environment with SAIO as described here
- Use this branch to install hummingbird. This will make hummingbird pluggable.
- Create GlusterFS volumes and export it over libgfapi
- Install gogfapi:
go get github.com/kshlm/gogfapi
- Add GlusterFS volume names to object ring as devices.
- Apply following diff to hummingbird code referred in Step 2:
diff --git a/go/objectserver/main.go b/go/objectserver/main.go
index 7c428be..afb1451 100644
--- a/go/objectserver/main.go
+++ b/go/objectserver/main.go
@@ -39,6 +39,7 @@ import (
"github.com/justinas/alice"
"github.com/openstack/swift/go/hummingbird"
"github.com/openstack/swift/go/middleware"
+ "github.com/prashanthpai/antbird"
)
type ObjectServer struct {
@@ -730,9 +731,9 @@ func GetServer(conf string, flags *flag.FlagSet) (bindIP string, bindPort int, s
// Change this section to use a different backend implementation
server.getDiskFile = func() hummingbird.DiskFile {
- return &DefaultDiskFile{}
+ return &antbird.GlusterDiskFile{}
}
- server.DiskFileGlobals, err = SetupDefaultDiskFile(&serverconf, server.logger)
+ server.DiskFileGlobals, err = antbird.SetupGlusterDiskFile(&serverconf, server.logger)
if err != nil {
server.logger.Err(fmt.Sprintf("DiskFile Setup failed: %s", err.Error()))
os.Exit(-1)
As hummingbird is not storage policy aware yet, GlusterFS volume == Swift device == Swift account
It's helpful to see a trace of libgfapi calls made by hummingbird:
# ltrace -C -T -ff -e glfs_*@MAIN -p <pid>