Berbagi ZFS Dataset Lewat NFS

Saya baru mencoba membagi ZFS dataset di Solaris 10 melalui NFS (Network File System). Beberapa hal yang perlu saya siapkan adalah :

  1. Dataset mana yang akan saya bagi?
  2. Server mana saja yang akan saya ijinkan mengakses dataset tadi? Siapa NFS client-nya? Berapa IP NFS client tersebut?
  3. Apakah permission yang akan diberikan? read only? read write?

Sebagai contoh misalnya saya punya sebuah server berisi Solaris 10 (hostname-nya nfs-server), lalu saya ingin membagi sebuah ZFS dataset dengan komputer lainnya. Saya akan membuat ZFS dataset baru rpool/testnfsrpool/testnfs akan saya mount di direktori /sharenfs. Berikut perintah yang saya gunakan untuk membuat ZFS dataset tadi :

root@nfs-server:/# zfs create -o mountpoint=/sharenfs rpool/testnfs

Untuk memeriksa ZFS dataset yang sudah baru saja dibuat saya gunakan perintah ini :

root@nfs-server:/# df -h | grep sharenfs
rpool/testnfs          134G    31K    83G     1%    /sharenfs
root@nfs-server:/#

Untuk dapat berbagi ZFS dataset tadi, saya perlu mengaktifkan service NFS Server terlebih dahulu. Untuk memeriksa apakah NFS server sudah aktif saya gunakan perintah berikut ini :

root@nfs-server:/# svcs | grep nfs
online         Jun_25   svc:/network/nfs/rquota:default
offline        Jun_25   svc:/network/nfs/status:default
offline        Jun_25   svc:/network/nfs/nlockmgr:default
offline        Jun_25   svc:/network/nfs/cbd:default
offline        Jun_25   svc:/network/nfs/mapid:default
offline        Jun_25   svc:/network/nfs/client:default
offline        16:59:36 svc:/network/nfs/server:default
root@nfs-server:/#

Ternyata service NFS (network/nfs/server) belum aktif, saya perlu mengaktifkannya dengan perintah berikut ini :

root@nfs-server:/# svcadm  -v enable -r network/nfs/server
svc:/network/nfs/server:default enabled.
svc:/milestone/network enabled.
svc:/network/loopback enabled.
svc:/network/physical enabled.
svc:/network/nfs/nlockmgr enabled.
svc:/network/rpc/bind enabled.
svc:/system/filesystem/minimal enabled.
svc:/system/filesystem/usr enabled.
svc:/system/boot-archive enabled.
svc:/system/filesystem/root enabled.
svc:/system/device/local enabled.
svc:/system/identity:node enabled.
svc:/system/sysidtool:net enabled.
svc:/milestone/single-user:default enabled.
svc:/milestone/devices enabled.
svc:/system/device/fc-fabric enabled.
svc:/system/sysevent enabled.
svc:/system/manifest-import enabled.
svc:/system/filesystem/local:default enabled.
svc:/milestone/single-user enabled.
svc:/system/filesystem/minimal:default enabled.
svc:/system/identity:domain enabled.
svc:/network/nfs/status enabled.
svc:/system/filesystem/local enabled.
root@nfs-server:/#

Sekarang service NFS sudah aktif :

root@nfs-server:/# svcs | grep nfs
online         Jun_25   svc:/network/nfs/rquota:default
online         17:05:00 svc:/network/nfs/status:default
online         17:05:01 svc:/network/nfs/cbd:default
online         17:05:01 svc:/network/nfs/mapid:default
online         17:05:01 svc:/network/nfs/nlockmgr:default
online         17:05:01 svc:/network/nfs/client:default
online         17:05:02 svc:/network/nfs/server:default
root@nfs-server:/#

Langkah berikutnya adalah membagi dataset rpool/testnfs (dengan kata lain membagi direktori /sharenfs), caranya dengan menggunakan perintah berikut ini :

root@nfs-server:/# zfs set sharenfs='rw=10.22.237.113,root=10.22.237.113' rpool/testnfs

Pada perintah di atas, saya menyertakan juga opsi untuk memberi akses kepada komputer lain yang akan menjadi NFS client. Komputer dengan IP 10.22.237.113 akan diijinkan untuk mengakses ZFS dataset rpool/testnfs, akses yang diberikan adalah read-write. Dengan kata lain client dapat mengakses data-data di dalam /sharenfs dan juga dapat menyimpan data di direktori tersebut.

Untuk memastikan direktori /sharenfs sudah tersedia, saya gunakan perintah share seperti contoh berikut ini :

root@nfs-server:/# share
-               /sharenfs   sec=sys,rw=10.22.237.113,root=10.22.237.113   ""  
root@nfs-server:/#

Perlu diingat bahwa perintah “zfs set sharenfs” sifatnya tidak permanen (hilang saat restart). Untuk membuat sharing ini permanen, kita perlu mendaftarkan direktori yang akan di-share tersebut ke dalam file /etc/dfs/dfstab. Contohnya seperti berikut ini :

root@nfs-server:/# cat /etc/dfs/dfstab 

share -F nfs -o rw=10.22.237.113,root=10.22.237.113 /sharenfs

root@nfs-server:/# 

Mari beralih ke NFS client (komputer dengan IP 10.22.237.113). Komputer ini akan mengakses ZFS dataset rpool/testnfs dari nfs-server. IP nfs-server adalah 10.22.250.181. Perintah yang saya gunakan adalah seperti berikut ini :

root@client:/# mount -F nfs 10.22.250.181:/sharenfs /nfs

Direktori /sharenfs akan di-mount pada direktori /nfs.

Berikut tampilan yang muncul bila akses NFSnya berfungsi dengan baik :

root@client:/# df -h | grep nfs
10.22.250.181:/sharenfs
                        83G    31K    83G     1%    /nfs
root@client:/#

Dengan demikian si client sekarang bisa mengakses ZFS dataset rpool/testnfs yang dimiliki oleh nfs-server.

Berikut contoh kemungkinan error yang muncul saat mengakses NFS direktori :

root@client:/# mount -F nfs 10.22.250.181:/sharenfs /nfs
nfs mount: 10.22.250.181: : RPC: Program not registered
nfs mount: retrying: /nfs
^C
root@client:/#

Bila muncul error seperti di atas, kemungkinan besar NFS service di server belum diaktifkan (lihat kembali contoh perintah untuk mengaktifkan NFS service dengan perintah svcadm ).

Contoh error lain saat mencoba mengakses NFS direktori adalah seperti berikut :

root@client:/# mount -F nfs 10.22.250.181:/sharenfs /nfs
nfs mount: mount: /nfs: I/O error
root@client:/# 

Bila muncul error seperti di atas, dapat dipastikan proses sharing di NFS server-nya tidak berhasil. Silakan cek kembali NFS server-nya dengan perintah share (seperti yang sudah dicontohkan sebelumnya).

Leave a Reply