From 4d1b3d5e9ab850c782dce77c6d57494c573ce4ac Mon Sep 17 00:00:00 2001 From: nomadlogic Date: Fri, 29 Apr 2016 13:35:20 -0700 Subject: [PATCH] docs: FreeBSD minio source intructions (#1421) * Modifications of documentation for using and building minio server on FreeBSD. - update example of enabling compression to use lz4 vs gzip and provide explanation of benefits of lz4 - provide walkthrough of building minio server on FreeBSD with binary golang and gmake * Fixing markdown syntax for code blocks so we render correctly. * typo fix * reword compression enablement docs for easier reading --- FreeBSD.md | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 51 insertions(+), 2 deletions(-) diff --git a/FreeBSD.md b/FreeBSD.md index f83b3c087..94c6809e9 100644 --- a/FreeBSD.md +++ b/FreeBSD.md @@ -43,11 +43,12 @@ Verify if it is writable Now you have successfully created a ZFS pool for futher reading please refer to [ZFS Quickstart Guide](https://www.freebsd.org/doc/handbook/zfs-quickstart.html) -However, this pool is not taking advantage of any ZFS features. To create a dataset on this pool with compression enabled: +However, this pool is not taking advantage of any ZFS features, so let's create a ZFS filesytem on this pool with compression enabled. ZFS supports many compression algorithms: lzjb, gzip, zle, lz4. LZ4 is often the most performant algorithm in terms of compression of data versus system overhead. + ``` # zfs create minio-example/compressed-objects -# zfs set compression=gzip minio-example/compressed-objects +# zfs set compression=lz4 minio-example/compressed-objects ``` To keep monitoring your pool use @@ -105,3 +106,51 @@ Now you have a S3 compatible server running on top of your ZFS backend which tra Thanks for using Minio, awaiting feedback :-) +#### Building Minio Server From Source + +It is possible to build the minio server from source on FreeBSD. To do this we will used the golang distribution provided by the FreeBSD pkg infrastructure. + +First we will need to install golang as well as GNU make: + +``` +$ sudo pkg install go gmake +Updating FreeBSD repository catalogue.. +FreeBSD repository is up-to-date. +All repositories are up-to-date. +The following 1 package(s) will be affected (of 0 checked): + +New packages to be INSTALLED: + go: 1.6.2,1 + gmake: 4.1_2 + + The process will require 261 MiB more space. + 40 MiB to be downloaded. + + Proceed with this action? [y/N]: y + Fetching go-1.6.2,1.txz: 100% 40 MiB 10.4MB/s 00:04 + Fetching gmake-4.1_2.txz: 100% 363 KiB 372.2kB/s 00:01 + Checking integrity... done (0 conflicting) + [1/2] Installing go-1.6.2,1... + [1/2] Extracting go-1.6.2,1: 100% + [2/2] Installing gmake-4.1_2... + [2/2] Extracting gmake-4.1_2: 100% +``` + +Next we need to configure our environment for golang. Insert the following lines into your ~/.profile file, and be sure to source the file before proceeding to the next step: + +``` +GOPATH=$HOME/golang; export GOPATH +GOROOT=/usr/local/go/; export GOROOT +``` + +Now we can proceed with the normal build process of minio server as found [here](https://github.com/nomadlogic/minio/blob/master/CONTRIBUTING.md). The only caveat is we need to specify gmake (GNU make) when building minio server as the current Makefile is not BSD make compatible: + +``` +$ mkdir -p $GOPATH/src/github.com/minio +$ cd $GOPATH/src/github.com/minio +$ git clone +$ cd minio +$ gmake +``` + +From here you can start the server as you would with a precompiled minio server build.