Wednesday, July 31, 2019

Install Goofys di Ubuntu Server 18.04 LTS

Goofys
Mumpung lagi ngoprek S3 bucket dan tool mountingnya (dikantor pake goofys dan s3fs), sekalian deh nulis dokumentasinya. Bagi yang belum tau S3 bucket, singkatnya S3 bucket adalah layanan Amazon Web Service (AWS) yang berupa penyimpanan dalam bentuk object storage. Selain harganya yang (katanya sih) murah, AWS menjamin ketahanan layanan ini dengan angka yang hampir sempurna, cek aja disini. Jangan lupa di hitung yak berapa angka dibelakang komanya. untuk lebih lengkap bisa mampir ke situs resminya  yang bahasa indonesia disini.

Ceritanya saya disuruh migrasi dari server AWS ke server fisik. Kebetulan spek server fisiknya lebih gede dan lagi ngurangi pengeluaran untuk biaya infrastruktur. Dokumentasi kali ini spesial buat si goofys, karena barusan rilis versi baru setelah lama ga rilis katanya. Oke, bagi yang belum tau goofys, menurut readme di repository resminya goofys adalah : 
Goofys is a high-performance, POSIX-ish Amazon S3 file system written in Go.
Goofys allows you to mount an S3 bucket as a filey system. It's a Filey System instead of a File System because goofys strives for performance first and POSIX second. Particularly things that are difficult to support on S3 or would translate into more than one round-trip would either fail (random writes) or faked (no per-file permission). Goofys does not have an on disk data cache (checkout catfs), and consistency model is close-to-open.
Ya intinya goofys ini punya performa yang tinggi dan di tulis dengan bahasa pemrograman golang. Memang si sejauh ini rasanya goofys lebih stabil dan lebih kenceng dibanding s3fs. Langsung aja untuk cara install goofys di ubuntu server ada dua cara sebenarnya.
  1. Download binary dari sini, kasi permission excutable, lalu tempatkan di salah satu folder yang ada di $PATH, atau
  2. Compile dari source code, lalu tempatkan di salah satu folder di $PATH
Perbedaannya adalah, kalo kita download pre-built binary dari repo, bisa jadi binary tersebut bukan hasil compile dari commit yang terakhir. Dengan kata lain, meskipun versi sama, tapi kalo commit lebih usang, berarti ada fitur baru yang belum ikut tercompile waktu bang Ka-hing release binary filenya.

Berikut adalah perbedaan versi hasil download dan hasil compile (di download dan di compile dengan hari yang sama)
Komparasi Versi
Oh ya, biasa, first thing first. Berikut adalah environment atau dependensi yang saya gunakan
OS : Ubuntu server 18.04.2 LTS
Golang : go 1.10.4 linux/amd64
Git : git version 2.17.1 (opsional) 
Untuk install golang dan git, bisa menggunakan perintah :
sudo apt-get install -y git golang
Dan bagi pengguna ubuntu server dengan versi dibawah 18.04, bisa install golang dengan versi yang lebih terbaru dari reponya ubuntu, saya pernah nulis catetannya, bisa lihat disini

Oke, untuk cara compile nya :
export GOPATH=$HOME/work
go get github.com/kahing/goofys
Bagian yang saya kasih tebal bisa anda ganti sesuai kebutuhan, yang penting folder itu kepemilikannya sama dengan user saat anda mengkompilasi. Proses setelah export akan memakan waktu beberapa saat, tergantu kecepatan internet dan prosesor server yang digunakan untuk mengcompile. Dan. . . . kalo uda selese, ngga ada notifikasinya, cuma ada folder yang dihasilkan dan siap di compile.
Folder setelah eksekusi perintah go get
File goofys nya memang uda ada si di folder bin. Tapi menurut command go, perintah get hanya mendownload package dan dependensi (lihat manual go dengan perintah man go dari terminal), belum terkompile. Kemudian, untuk mengkompilasi, kita gunakan perintah :
go install github.com/kahing/goofys
Lalu kita bisa coba eksekusi goofys hasil kompilasi dengan perintah
$GOPATH/bin/goofys --version
Eksekusi goofys
Jika output yang dihasilkan seperti gambar diatas, berarti hasil kompilasi berhasil. Setelah itu tinggal copy ke salah satu folder yang ada di $PATH agar goofys bisa dipanggil dari berbagai direktori.

Memberi Hash Version Goofys
Kalo di perhatikan, versi hasil kompilasinya "ngga bener" ya. Begini cara mbenerinnya
Masuk ke direktori source code goofys dengan perintah
cd $GOPATH/src/github.com/kahing/goofys
Pastikan isi direktori tersebut sama dengan gambar berikut
Daftar isi direktori goofys
Setelah itu, kita eksekusi perintah
make build && make install
Kemudian, kita cek ulang versi goofys tadi dengan perintah yang sama
$GOPATH/bin/goofys --version
Kurang lebih hasilnya seperti gambar berikut
Goofys dengan versi
Dan kalo kita cek, hash ini diambil dari hash commit terakhir branch master repository goofys
Hash yang sama
Semoga bermanfaat. :)

referensi :

No comments:

Post a Comment