diff --git a/docs/FreeBSD.md b/docs/FreeBSD.md index 931643c40..e917d1aac 100644 --- a/docs/FreeBSD.md +++ b/docs/FreeBSD.md @@ -9,57 +9,43 @@ This example assumes that you have a FreeBSD 10.x running As root on the FreeBSD edit `/etc/rc.conf` ```sh - zfs_enable="YES" - ``` Start ZFS service ```sh - - service zfs start - +service zfs start ``` ```sh - - dd if=/dev/zero of=/zfs bs=1M count=4000 - +dd if=/dev/zero of=/zfs bs=1M count=4000 ``` -Configure a loopback device on the `/zfs` file. +Configure a loopback device on the `/zfs` file. ```sh - - mdconfig -a -t vnode -f /zfs - +mdconfig -a -t vnode -f /zfs ``` Create zfs pool ```sh - - zpool create minio-example /dev/md0 - +zpool create minio-example /dev/md0 ``` ```sh - - df /minio-example +df /minio-example Filesystem 512-blocks Used Avail Capacity Mounted on minio-example 7872440 38 7872402 0% /minio-example - ``` Verify if it is writable ```sh - touch /minio-example/testfile ls -l /minio-example/testfile -rw-r--r-- 1 root wheel 0 Apr 26 00:51 /minio-example/testfile - ``` Now you have successfully created a ZFS pool for further reading please refer to [ZFS Quickstart Guide](https://www.freebsd.org/doc/handbook/zfs-quickstart.html) @@ -68,20 +54,17 @@ However, this pool is not taking advantage of any ZFS features, so let's create ```sh - - zfs create minio-example/compressed-objects - zfs set compression=lz4 minio-example/compressed-objects - +zfs create minio-example/compressed-objects +zfs set compression=lz4 minio-example/compressed-objects ``` To keep monitoring your pool use ```sh - - zpool status - pool: minio-example - state: ONLINE - scan: none requested +zpool status + pool: minio-example +state: ONLINE + scan: none requested config: NAME STATE READ WRITE CKSUM @@ -89,7 +72,6 @@ config: md0 ONLINE 0 0 0 errors: No known data errors - ``` #### Step 2. @@ -97,26 +79,22 @@ errors: No known data errors Now start minio server on the ``/minio-example/compressed-objects``, change the permissions such that this directory is accessibly by a normal user ```sh - - chown -R minio-user:minio-user /minio-example/compressed-objects - +chown -R minio-user:minio-user /minio-example/compressed-objects ``` -Now login as ``minio-user`` and start minio server. +Now login as ``minio-user`` and start minio server. ```sh - curl https://dl.minio.io/server/minio/release/freebsd-amd64/minio > minio chmod 755 minio ./minio server /minio-example/compressed-objects - ``` -Point your browser to http://localhost:9000 and login with the credentials displayed on the command line. +Point your browser to http://localhost:9000 and login with the credentials displayed on the command line. Now you have a S3 compatible server running on top of your ZFS backend which transparently provides disk level compression for your uploaded objects. -Thanks for using Minio, awaiting feedback :-) +Thanks for using Minio, awaiting feedback :-) #### Building Minio Server From Source diff --git a/docs/backend/fs/README.md b/docs/backend/fs/README.md index 1c16d02bf..8cb79ccb2 100644 --- a/docs/backend/fs/README.md +++ b/docs/backend/fs/README.md @@ -21,5 +21,4 @@ type fsMetaV1 struct { Meta map[string]string `json:"meta,omitempty"` Parts []objectPartInfo `json:"parts,omitempty"` } - ``` diff --git a/docs/erasure/README.md b/docs/erasure/README.md index 48cc12a29..9d089f989 100644 --- a/docs/erasure/README.md +++ b/docs/erasure/README.md @@ -48,9 +48,7 @@ Minio erasure code backend is limited by design to a minimum of 4 drives and a m Example: Start Minio server in a 12 drives setup. ```sh - minio server /mnt/export1/backend /mnt/export2/backend /mnt/export3/backend /mnt/export4/backend /mnt/export5/backend /mnt/export6/backend /mnt/export7/backend /mnt/export8/backend /mnt/export9/backend /mnt/export10/backend /mnt/export11/backend /mnt/export12/backend - ``` ## 3. Test your setup diff --git a/docs/shared-backend/DESIGN.md b/docs/shared-backend/DESIGN.md index cf7d2689f..d22d3520e 100644 --- a/docs/shared-backend/DESIGN.md +++ b/docs/shared-backend/DESIGN.md @@ -79,8 +79,8 @@ This doesn't apply for the writes because there is always one writer and many re An example here shows how the contention is handled with GetObject(). GetObject() holds a read lock on `fs.json`. -```go +```go fsMetaPath := pathJoin(fs.fsPath, minioMetaBucket, bucketMetaPrefix, bucket, object, fsMetaJSONFile) rlk, err := fs.rwPool.Open(fsMetaPath) if err != nil { @@ -93,7 +93,6 @@ GetObject() holds a read lock on `fs.json`. _, err = io.CopyBuffer(writer, reader, buf) ... after successful copy operation unlocks the read lock ... - ``` A concurrent PutObject is requested on the same object, PutObject() attempts a write lock on `fs.json`. @@ -134,4 +133,4 @@ On minio3 Once lock is acquired the minio2 validates if the file really exists to avoid obtaining lock on an fd which is already deleted. But this situation calls for a race with a third server which is also attempting to write the same file before the minio2 can validate if the file exists. It might be potentially possible `fs.json` is created so the lock acquired by minio2 might be invalid and can lead to a potential inconsistency. -This is a known problem and cannot be solved by POSIX fcntl locks. These are considered to be the limits of shared filesystem. \ No newline at end of file +This is a known problem and cannot be solved by POSIX fcntl locks. These are considered to be the limits of shared filesystem.