Materi Pak faisal

 • Platform Aplikasi: menata ulang PaaS untuk mempermudah Anda membangun, menerapkan, dan menskalakan aplikasi.

TUTORIAL

Cara Mengatur Mount NFS di Ubuntu 18.04

UbuntuJaringanUbuntu 18.04

Oleh Melissa Anderson dan Mark Drake

Diposting 5 Juli 2018 5 versi 310.7ktampilan

Tidak menggunakan Ubuntu 18.04?

Pilih versi atau distribusi yang berbeda.

Ubuntu 18.04Ubuntu 20.04Ubuntu 16.04Ubuntu 14.04

pengantar

NFS, atau Network File System, adalah protokol sistem file terdistribusi yang memungkinkan Anda memasang direktori jarak jauh di server Anda. Ini memungkinkan Anda mengelola ruang penyimpanan di lokasi berbeda dan menulis ke ruang itu dari banyak klien. NFS menyediakan cara yang relatif cepat dan mudah untuk mengakses sistem jarak jauh melalui jaringan dan bekerja dengan baik dalam situasi di mana sumber daya bersama harus diakses secara teratur.

Dalam panduan ini, kita akan membahas cara menginstal komponen yang diperlukan untuk fungsionalitas NFS, mengkonfigurasi mount NFS, dan melepas remote share NFS.

Prasyarat

Kami akan menggunakan dua server dalam tutorial ini, dengan satu bagian berbagi dari sistem berkasnya dengan yang lain. Untuk mengikutinya, Anda membutuhkan:

Dua server Ubuntu 18.04. Masing-masing harus memiliki pengguna non- root dengan sudohak istimewa yang dikonfigurasi, firewall sederhana yang diatur dengan UFW, dan jaringan pribadi, jika tersedia untuk Anda.

o Untuk bantuan dalam mengatur pengguna non- root dengan sudohak istimewa dan firewall, ikuti Panduan Pengaturan Server Awal dengan Ubuntu 18.04 .

o Untuk bantuan mengatur jaringan pribadi, lihat Cara Mengatur dan Menggunakan Jaringan Pribadi DigitalOcean .

Sepanjang tutorial ini, kami merujuk ke server yang membagikan direktorinya sebagai host dan server yang memasang direktori ini sebagai klien . Untuk menjaganya tetap lurus, kami akan menggunakan alamat IP berikut sebagai stand-in untuk nilai host dan klien :

Host :203.0.113.0

Klien :203.0.113.24

Saat alamat IP ini muncul di perintah dan file konfigurasi, Anda perlu menggantinya dengan alamat IP host dan klien Anda masing-masing .

Langkah 1 - Mengunduh dan Menginstal Komponen

Kami akan mulai dengan menginstal komponen yang diperlukan di setiap server.

Di Host

Di server host , instal nfs-kernel-serverpaket, yang memungkinkan Anda untuk membagikan direktori Anda. Karena ini adalah operasi pertama yang Anda lakukan aptdalam sesi ini, segarkan indeks paket lokal Anda sebelum penginstalan:

sudo apt update

sudo apt install nfs-kernel-server

Salinan

Setelah paket-paket ini diinstal, beralihlah ke server klien .

Pada Klien

Di server klien , kita perlu menginstal paket bernama nfs-common, yang menyediakan fungsionalitas NFS tanpa menyertakan komponen server yang tidak diperlukan. Sekali lagi, segarkan indeks paket lokal sebelum penginstalan untuk memastikan bahwa Anda memiliki informasi terbaru:

sudo apt update

sudo apt install nfs-common

Salinan

Sekarang kedua server memiliki paket yang diperlukan, kita dapat mulai mengkonfigurasinya.

Langkah 2 - Membuat Direktori Berbagi di Host

Kami akan membagikan dua direktori terpisah, dengan pengaturan konfigurasi berbeda, untuk menggambarkan dua cara utama agar pemasangan NFS dapat dikonfigurasi sehubungan dengan akses pengguna super.

Pengguna super dapat melakukan apa saja di mana saja di sistem mereka. Namun, direktori yang dipasang NFS bukan bagian dari sistem tempat mereka dipasang, jadi secara default, server NFS menolak untuk melakukan operasi yang memerlukan hak superuser. Pembatasan default ini berarti bahwa pengguna super pada klien tidak dapat menulis file sebagai root , menetapkan kembali kepemilikan, atau melakukan tugas pengguna super lainnya pada pemasangan NFS.

Namun, terkadang, ada pengguna tepercaya di sistem klien yang perlu melakukan tindakan ini pada sistem file yang dipasang tetapi tidak memerlukan akses pengguna super di host . Anda dapat mengonfigurasi server NFS untuk mengizinkan hal ini, meskipun server tersebut memperkenalkan elemen risiko, karena pengguna tersebut dapat memperoleh akses root ke seluruh sistem host .

Contoh 1: Mengekspor Tempat Tujuan Umum

Pada contoh pertama, kita akan membuat mount NFS tujuan umum yang menggunakan perilaku NFS default untuk mempersulit pengguna dengan hak akses root pada mesin klien untuk berinteraksi dengan host menggunakan hak istimewa superuser klien tersebut . Anda mungkin menggunakan sesuatu seperti ini untuk menyimpan file yang diunggah menggunakan sistem manajemen konten atau untuk menciptakan ruang bagi pengguna untuk berbagi file proyek dengan mudah.

Pertama, buat direktori share bernama nfs:

sudo mkdir /var/nfs/general -p

Salinan

Karena kita membuatnya dengan sudo, direktori ini dimiliki oleh pengguna root pada host .

ls -la /var/nfs/general

Salinan

Output

4 drwxr-xr-x  2 root   root    4096 Jul 25 15:26 .

NFS akan menerjemahkan semua operasi root pada klien ke nobody:nogroupkredensial sebagai tindakan keamanan. Oleh karena itu, kami perlu mengubah kepemilikan direktori agar sesuai dengan kredensial tersebut.

sudo chown nobody:nogroup /var/nfs/general

Salinan

Anda sekarang siap untuk mengekspor direktori ini.

Contoh 2: Mengekspor Direktori Utama

Dalam contoh kedua kami, tujuannya adalah untuk membuat direktori home pengguna yang disimpan di host tersedia di server klien , sambil mengizinkan administrator tepercaya dari server klien tersebut akses yang mereka butuhkan untuk mengelola pengguna dengan nyaman.

Untuk melakukan ini, kami akan mengekspor /homedirektori. Karena sudah ada, kita tidak perlu membuatnya. Kami juga tidak akan mengubah izin. Jika kami melakukannya , ini dapat menyebabkan berbagai masalah bagi siapa saja yang memiliki direktori home di mesin host .

Langkah 3 - Mengonfigurasi Ekspor NFS di Server Host

Selanjutnya, kita akan menyelami file konfigurasi NFS untuk mengatur berbagi sumber daya ini.

Buka /etc/exportsfile di editor teks Anda dengan hak akses root :

sudo nano /etc/exports

Salinan

File tersebut memiliki komentar yang menunjukkan struktur umum setiap baris konfigurasi. Sintaksnya pada dasarnya:

/ etc / export

directory_to_share    client(share_option1,...,share_optionN)

Salinan

Kita perlu membuat baris untuk setiap direktori yang akan kita bagikan. Karena klien contoh kami memiliki IP 203.0.113.24, baris kami akan terlihat seperti berikut. Pastikan untuk mengubah alamat IP yang ditampilkan di sini menjadi alamat klien Anda :

/ etc / export

/var/nfs/general    203.0.113.24(rw,sync,no_subtree_check)

/home       203.0.113.24(rw,sync,no_root_squash,no_subtree_check)

Salinan

Di sini, kami menggunakan opsi konfigurasi yang sama untuk kedua direktori dengan pengecualian no_root_squash. Mari kita lihat apa arti dari masing-masing opsi ini:

rw: Opsi ini memberi komputer klien akses baca dan tulis ke volume.

sync: Opsi ini memaksa NFS untuk menulis perubahan ke disk sebelum menjawab. Ini menghasilkan lingkungan yang lebih stabil dan konsisten karena balasan tersebut mencerminkan keadaan volume jarak jauh yang sebenarnya. Namun, ini juga mengurangi kecepatan operasi file.

no_subtree_check: Opsi ini mencegah pemeriksaan subpohon, yang merupakan proses di mana host harus memeriksa apakah file sebenarnya masih tersedia di pohon yang diekspor untuk setiap permintaan. Hal ini dapat menyebabkan banyak masalah saat file diubah namanya saat klien membukanya. Di hampir semua kasus, lebih baik menonaktifkan pemeriksaan subpohon.

no_root_squash: Secara default, NFS menerjemahkan permintaan dari pengguna root dari jarak jauh menjadi pengguna yang tidak memiliki hak istimewa di server. Ini dimaksudkan sebagai fitur keamanan untuk mencegah akun root pada klien menggunakan sistem file host sebagai root . no_root_squashmenonaktifkan perilaku ini untuk bagian tertentu.

Setelah Anda selesai membuat perubahan, simpan dan tutup file. Kemudian, untuk membuat saham tersedia untuk klien yang Anda konfigurasikan, mulai ulang server NFS dengan perintah berikut ini:

sudo systemctl restart nfs-kernel-server

Salinan

Namun, sebelum Anda benar-benar dapat menggunakan share baru, Anda harus memastikan bahwa lalu lintas ke share tersebut diizinkan oleh aturan firewall.

Langkah 4 - Menyesuaikan Firewall di Host

Pertama, mari kita periksa status firewall untuk melihat apakah itu diaktifkan dan, jika demikian, untuk melihat apa yang saat ini diizinkan:

sudo ufw status

Salinan

Output

Status: active


To                         Action      From

--                         ------      ----

OpenSSH                    ALLOW       Anywhere

OpenSSH (v6)               ALLOW       Anywhere (v6)

Di sistem kami, hanya lalu lintas SSH yang diizinkan masuk, jadi kami perlu menambahkan aturan untuk lalu lintas NFS.

Dengan banyak aplikasi, Anda dapat menggunakan sudo ufw app listdan mengaktifkannya berdasarkan nama, tetapi nfsbukan salah satunya. Namun, karena ufwjuga memeriksa /etc/servicesport dan protokol suatu layanan, kita masih dapat menambahkan NFS berdasarkan nama. Praktik terbaik merekomendasikan agar Anda mengaktifkan aturan paling ketat yang masih mengizinkan lalu lintas yang ingin Anda izinkan, jadi daripada mengaktifkan lalu lintas dari mana saja, kami akan lebih spesifik.

Gunakan perintah berikut untuk membuka porta 2049pada host , pastikan untuk mengganti alamat IP klien Anda :

sudo ufw allow from 203.0.113.24 to any port nfs

Salinan

Anda dapat memverifikasi perubahan dengan mengetik:

sudo ufw status

Salinan

Anda harus melihat lalu lintas yang diizinkan dari port 2049pada keluaran:

Output

Status: active


To                         Action      From

--                         ------      ----

OpenSSH                    ALLOW       Anywhere                 

2049                       ALLOW       203.0.113.24        

OpenSSH (v6)               ALLOW       Anywhere (v6)

Ini menegaskan bahwa UFW hanya akan mengizinkan lalu lintas NFS di porta 2049dari mesin klien kami .

Langkah 5 - Membuat Mount Points dan Mount Direktori pada Klien

Sekarang server host dikonfigurasi dan melayani bagiannya, kami akan mempersiapkan klien kami .

Untuk membuat remote share tersedia di klien , kita perlu me-mount direktori pada host yang ingin kita bagikan ke direktori kosong pada klien .

Catatan: Jika ada file dan direktori di mount point Anda, mereka akan disembunyikan segera setelah Anda me-mount share NFS. Untuk menghindari hilangnya file penting, pastikan jika Anda memasang di direktori yang sudah ada, direktori tersebut kosong.


Kami akan membuat dua direktori untuk tunggangan kami:

sudo mkdir -p /nfs/general

sudo mkdir -p /nfs/home

Salinan

Sekarang kita memiliki lokasi untuk meletakkan remote share dan kita telah membuka firewall, kita dapat me-mount share dengan menangani server host kita , yang dalam panduan ini adalah 203.0.113.0:

sudo mount 203.0.113.0:/var/nfs/general /nfs/general

sudo mount 203.0.113.0:/home /nfs/home

Salinan

Perintah ini akan memasang saham dari komputer host ke mesin klien . Anda dapat memeriksa ulang apakah mereka berhasil dipasang dengan beberapa cara. Anda dapat memeriksa ini dengan polos mountatau findmntperintah, tetapi df -hmemberikan output yang lebih mudah dibaca yang menggambarkan bagaimana penggunaan disk ditampilkan secara berbeda untuk NFS share:

df -h

Salinan

Output

Filesystem                Size  Used Avail Use% Mounted on

udev                      238M     0  238M   0% /dev

tmpfs                      49M  628K   49M   2% /run

/dev/vda1                  20G  1.2G   18G   7% /

tmpfs                     245M     0  245M   0% /dev/shm

tmpfs                     5.0M     0  5.0M   0% /run/lock

tmpfs                     245M     0  245M   0% /sys/fs/cgroup

tmpfs                      49M     0   49M   0% /run/user/0

203.0.113.0:/home      20G  1.2G   18G   7% /nfs/home

203.0.113.0:/var/nfs/general   20G  1.2G   18G   7% /nfs/general

Kedua bagian yang kami pasang muncul di bagian bawah. Karena mereka dipasang dari sistem file yang sama, mereka menunjukkan penggunaan disk yang sama. Untuk melihat berapa banyak ruang yang sebenarnya digunakan di bawah setiap titik pemasangan, gunakan perintah penggunaan disk dudan jalur pemasangan. The -sbendera menyediakan ringkasan penggunaan daripada menampilkan penggunaan untuk setiap file. Hasil -hcetakan dapat dibaca manusia.

Sebagai contoh:

du -sh /nfs/home

Salinan

Output

36K /nfs/home

Ini menunjukkan kepada kita bahwa isi dari seluruh direktori home hanya menggunakan 36K dari ruang yang tersedia.

Langkah 6 - Menguji Akses NFS

Selanjutnya, mari kita uji akses ke share dengan menulis sesuatu untuk masing-masing share tersebut.

Contoh 1: Pembagian Tujuan Umum

Pertama, tulis file uji untuk /var/nfs/generaldibagikan:

sudo touch /nfs/general/general.test

Salinan

Kemudian, periksa kepemilikannya:

ls -l /nfs/general/general.test

Salinan

Output

-rw-r--r-- 1 nobody nogroup 0 Aug  1 13:31 /nfs/general/general.test

Because we mounted this volume without changing NFS’s default behavior and created the file as the client machine’s root user via the sudo command, ownership of the file defaults to nobody:nogroup. client superusers won’t be able to perform typical administrative actions, like changing the owner of a file or creating a new directory for a group of users, on this NFS-mounted share.

Example 2: The Home Directory Share

To compare the permissions of the General Purpose share with the Home Directory share, create a file Home Directory the same way:

sudo touch /nfs/home/home.test

Copy

Then look at the ownership of the file:

ls -l /nfs/home/home.test

Copy

Output

-rw-r--r-- 1 root root 0 Aug  1 13:32 /nfs/home/home.test

We created home.test as root using the sudo command, exactly the same way we created the general.test file. However, in this case it is owned by root because we overrode the default behavior when we specified the no_root_squash option on this mount. This allows our root users on the client machine to act as root and makes the administration of user accounts much more convenient. At the same time, it means we don’t have to give these users root access on the host.

Step 7 — Mounting the Remote NFS Directories at Boot

We can mount the remote NFS shares automatically at boot by adding them to /etc/fstab file on the client.

Open this file with root privileges in your text editor:

sudo nano /etc/fstab

Copy

At the bottom of the file, add a line for each of our shares. They will look like this:

/etc/fstab

. . .

203.0.113.0:/var/nfs/general    /nfs/general   nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0

203.0.113.0:/home       /nfs/home      nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0

Copy

Note: You can find more information about the options we are specifying here in the NFS man page. You can access this by running the following command:

man nfs

Copy

The client server will automatically mount the remote partitions at boot, although it may take a few moments to establish the connection and for the shares to be available.

Step 8 — Unmounting an NFS Remote Share

If you no longer want the remote directory to be mounted on your system, you can unmount it by moving out of the share’s directory structure and unmounting, like this:

cd ~

sudo umount /nfs/home

sudo umount /nfs/general

Copy

This will remove the remote shares, leaving only your local storage accessible:

df -h

Copy

Output


Filesystem      Size  Used Avail Use% Mounted on

/dev/vda         59G  1.3G   55G   3% /

none            4.0K     0  4.0K   0% /sys/fs/cgroup

udev            2.0G   12K  2.0G   1% /dev

tmpfs           396M  320K  396M   1% /run

none            5.0M     0  5.0M   0% /run/lock

none            2.0G     0  2.0G   0% /run/shm

none            100M     0  100M   0% /run/user

If you also want to prevent them from being remounted on the next reboot, edit /etc/fstab and either delete the line or comment it out by placing a # symbol at the beginning of the line. You can also prevent auto-mounting by removing the auto option, which will allow you to mount it manually.

Conclusion

In this tutorial, we created an NFS host and illustrated some key NFS behaviours by creating two different NFS mounts, which we shared with our NFS client. If you’re looking to implement NFS in production, it’s important to note that the protocol itself is not encrypted. In cases where you’re sharing files that are intended to be publicly accessible, this doesn’t cause any serious problems.

If you’re using NFS for private data, however, you’ll need to decide how you want to protect that data. You might be able to route NFS over SSH or a VPN connection to create a more secure experience, but this often comes with a significant reduction in performance. If performance is an issue, consider SSHFS. It’s slightly slower than unencrypted NFS traffic, but usually much faster than tunnelled NFS. Kerberos authenticated encryption for NFS is another option to explore.

Was this helpful?YesNo

  

5

Report an issue

About the authors


 


Melissa Anderson

has authored 96 tutorials.


 


Mark Drake

Technical Writer @ DigitalOcean

Still looking for an answer?

Ask a questionSearch for more help

Comments

5 Comments

B

I

UL

OL

Link

Code

Highlight

Table

Sign In to Comment

0

skarekrow September 2, 2018

“Two Ubuntu 18.04 servers” - Is it imperative that the ubuntu versions are the same? I’m having trouble with getting an untukserver” error by the way.

Reply Report

 

0

rjb10 December 26, 2018

What permissions are required? I have nobody:nogroup on the server and root:root on the client machine (both using Ubuntu 18.04). Works great for data directories but not an external hard disk drive attached to the server. When trying to access the HDD from the client machine I receive a message that I don’t “have the permissions necessary to view the contents.” This is new to 18.04. It worked well on 16.04 and prior versions. Any ideas appreciated.

Reply Report

 

0

anibalardid June 13, 2019

Hi ! Amazing tutorial, but I have a problem.

It was mounted ok, I could write and create new file from client and saw from host.

But, I couldn’t list files or directories (ls ) from client.

Neither create file in some folder from this mounted directory.

The same happened to me using sshfs.

PD: My volumen shared size is 1TB

Best Regards !

Reply Report

 

0

dtsmith July 19, 2019

There is one problem with this - you are making the assumption that uid and gid for the relevant user(s) are the same on client and host.

These need to be synchronized on client and server. It’s one of those little gotchas with NFS.

However, you can use echo N > /sys/module/nfs/parameters/nfs4_disable_idmapping (using sudo). NFS will not send numeric uid/gid.

Source https://serverfault.com/a/632315

Reply Report

 

0

bdmorin March 23, 2020

Just a FYI - intr hasn’t been supported in the kernal since 2.65. Don’t set it, it doesn’t do anything.

In most cases defaults as mount options will do you fine.

Reply Report

 

 

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.


 

GET OUR BIWEEKLY NEWSLETTER

Sign up for Infrastructure as a Newsletter.


 

HUB FOR GOOD

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.


 

BECOME A CONTRIBUTOR

You get paid; we donate to tech nonprofits.

Featured on CommunityKubernetes CourseLearn Python 3Machine Learning in PythonGetting started with GoIntro to Kubernetes

 

DigitalOcean ProductsVirtual MachinesManaged DatabasesManaged KubernetesBlock StorageObject StorageMarketplaceVPCLoad Balancers

Welcome to the developer cloud

DigitalOcean membuatnya mudah untuk diluncurkan di cloud dan ditingkatkan seiring pertumbuhan Anda - baik Anda menjalankan satu mesin virtual atau sepuluh ribu.

Belajarlah lagi

 



© 2020 DigitalOcean, LLC. Seluruh hak cipta.

Perusahaan

Tentang

Kepemimpinan

Blog

Karir

Mitra

Program Referensi

tekan

Hukum

Pusat Keamanan & Kepercayaan

Produk

Penetapan harga

Ikhtisar Produk

Droplet

Kubernetes

Database yang Dikelola

Spasi

Marketplace

Load Balancers

Blokir Penyimpanan

Dokumentasi API

Dokumentasi

Catatan Rilis

Masyarakat

Tutorial

Tanya Jawab

Alat dan Integrasi

Tag

Ide Produk

Menulis untuk DigitalOcean

Hibah Presentasi

Program Startup Hatch

Belanja Swag

Program Penelitian

Sumber Terbuka

Kode etik

Kontak

Dapatkan Dukungan

Kesulitan Masuk?

Penjualan

Laporkan Penyalahgunaan

Status sistem


Komentar