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
Posting Komentar