Network File System atau NFS singkat adalah protokol sistem file terdistribusi yang memungkinkan Anda memasang direktori jarak jauh di server Anda. NFS memungkinkan Anda untuk mengakses file dan folder dari server atau klien yang berbeda. Anda dapat menulis ke server itu dari beberapa klien atau sistem jarak jauh melalui jaringan. Teknologi ini memberi Anda fleksibilitas untuk berbagi sumber daya melalui beberapa sistem.
Dalam tutorial ini, kita akan mempelajari cara menyiapkan Server NFS dan cara memasang NFS Shares pada klien menggunakan Ubuntu 20.04.
Prasyarat
- Dua Sistem Ubuntu 20.04. Setiap server harus memiliki pengguna non-root dengan hak istimewa sudo dan firewall UFW.
- Anda dapat menyiapkan server dan klien melalui jaringan pribadi. Untuk tutorial kita, saya akan menggunakan host_ip untuk menunjukkan host_ip alamat dan client_ip untuk merujuk ke alamat IP Klien.
Langkah 1 - Instal NFS di Server dan Klien
Tuan rumah
Kita perlu menginstal nfs-kernel-server
paket di host untuk membagikan direktori Anda.
$ sudo apt update
$ sudo apt install nfs-kernel-server
Klien
Untuk klien, kami akan menginstal nfs-common
paket yang memungkinkan Klien untuk memasang direktori host tetapi tidak dapat meng-host direktori itu sendiri.
$ sudo apt update
$ sudo apt install nfs-common
Langkah 2 - Buat direktori Berbagi di Host
Ada dua cara Anda dapat memberikan akses ke direktori di host ke klien. Secara default, server NFS tidak mengizinkan operasi yang memerlukan hak sudo. Ini berarti bahwa pengguna super pada klien tidak dapat menulis file sebagai root, menetapkan kembali kepemilikan, atau melakukan tugas apa pun yang memerlukan hak istimewa yang lebih tinggi.
Namun terkadang, klien perlu melakukan operasi tertentu pada host yang memerlukan hak istimewa yang lebih tinggi tetapi tidak memerlukan akses pengguna super untuk itu.
Metode Pertama
Ini adalah cara default untuk berbagi direktori. Ini mempersulit pengguna root pada klien untuk berinteraksi dengan host menggunakan hak istimewa yang lebih tinggi.
Pertama, buat direktori berbagi.
$ sudo mkdir /var/nfs/general -p
Jika Anda melakukan operasi root pada klien, maka NFS akan menerjemahkannya ke nobody:nogroup
kredensial pada mesin host. Oleh karena itu, kita perlu memberikan kepemilikan yang sesuai pada direktori bersama.
$ sudo chown nobody:nogroup /var/nfs/general
Metode Kedua
Di sini, kami akan membagikan direktori home host dengan klien. Ini akan memungkinkan pengguna root pada klien mengakses host dengan benar.
Karena direktori home sudah ada di server host, kita tidak perlu membuatnya. Izin juga tidak perlu diubah karena akan menimbulkan banyak masalah bagi pengguna di mesin host.
Langkah 3 - Konfigurasi NFS di Host
Saatnya mengonfigurasi NFS untuk menyiapkan berbagi.
Buka file /etc/exports
di server Host.
$ sudo nano /etc/exports
Tambahkan baris berikut di bagian bawah, masing-masing satu, untuk setiap direktori yang Anda bagikan.
/var/nfs/general client_ip(rw,sync,no_subtree_check)
/home client_ip(rw,sync,no_root_squash,no_subtree_check)
Mari kita bahas semua opsi ini dan artinya.
- rw :Ini memberi klien akses baca dan tulis di direktori host.
- sinkronisasi :Opsi ini memaksa NFS untuk menulis perubahan sebelum membalas. Ini berarti NFS pertama-tama akan menyelesaikan penulisan ke direktori host dan kemudian menanggapi klien. Ini memastikan bahwa keadaan sebenarnya dari server host tercermin tetapi dapat memperlambat kecepatan operasi file.
- no_subtree_check :Opsi ini menonaktifkan pemeriksaan Subtree. Pemeriksaan subpohon adalah operasi di mana dengan setiap permintaan NFS, server harus memeriksa apakah file yang diakses ada dan ada di pohon yang diekspor. Operasi ini menyebabkan masalah saat file yang sedang diakses oleh klien diganti namanya. Jadi yang terbaik adalah membiarkannya dinonaktifkan dalam banyak kasus. Ini memiliki beberapa implikasi keamanan ringan tetapi dapat meningkatkan keandalan.
- no_root_squash :Secara default, NFS menerjemahkan semua operasi yang dilakukan sebagai root oleh klien ke pengguna yang tidak memiliki hak istimewa di server. Hal ini dilakukan dengan maksud untuk meningkatkan keamanan. Opsi ini menonaktifkan perilaku tersebut untuk pembagian tertentu.
Setelah selesai, tutup file dengan menekan Ctrl + X dan memasukkan Y saat diminta.
Mulai ulang server NFS untuk menerapkan perubahan.
$ sudo systemctl restart nfs-kernel-server
Langkah 4 - Konfigurasikan Firewall Host
Praktik terbaik dengan NFS adalah mengaktifkannya secara khusus untuk setiap alamat IP klien secara terpisah alih-alih mengizinkan akses ke sana dari mana saja.
NFS menggunakan port 2049. Aktifkan akses untuk NFS dengan perintah berikut.
$ sudo ufw allow from client_ip to any port nfs
Periksa status untuk memverifikasi.
$ sudo ufw status
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
2049 ALLOW 167.100.34.78
OpenSSH (v6) ALLOW Anywhere (v6)
Langkah 5 - Buat Poin Mount pada Klien
Setelah host kita dikonfigurasi, sekarang saatnya menyiapkan klien.
Buat dua direktori untuk mount pada klien.
$ sudo mkdir -p /nfs/general
$ sudo mkdir -p /nfs/home
Sekarang setelah kita mengatur semuanya di ujung host, kita dapat memasang share menggunakan alamat IP Host.
$ sudo mount host_ip:/var/nfs/general /nfs/general
$ sudo mount host_ip:/home /nfs/home
Anda dapat memeriksa apakah mereka telah berhasil dipasang dengan perintah berikut.
$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 448M 0 448M 0% /dev
tmpfs 99M 664K 98M 1% /run
/dev/vda1 25G 3.2G 21G 14% /
tmpfs 491M 0 491M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 491M 0 491M 0% /sys/fs/cgroup
tmpfs 99M 0 99M 0% /run/user/1000
123.175.112.87:/var/nfs/general 25G 18G 6.3G 74% /nfs/general
123.175.112.87:/home 25G 18G 6.3G 74% /nfs/home
Anda dapat melihat kedua bagian yang dipasang di bagian bawah daftar. Karena keduanya dipasang dari sistem file yang sama, keduanya menunjukkan penggunaan disk penuh dan bukan penggunaan sebenarnya dari direktori yang dipasang.
Untuk melihat seberapa banyak ruang aktual yang digunakan di bawah setiap mount, gunakan perintah berikut.
$ du -sh /nfs/general
36K /nfs/general
Langkah 6 - Uji Berbagi NFS
Buat file uji ke /var/nfs/general
bagikan.
$ sudo touch /nfs/general/general.test
Periksa kepemilikannya.
$ ls -l /nfs/general/general.test
-rw-r--r-- 1 nobody nogroup 0 Aug 1 13:31 /nfs/general/general.test
Ini dipasang menggunakan opsi NFS default dan karena kami membuat file menggunakan root dari mesin klien, kepemilikan host dipindahkan ke nobody:nogroup
. Di sini, pengguna klien tidak dapat melakukan pekerjaan administratif pada mesin host.
Buat file uji ke /nfs/home` share.
$ sudo touch /nfs/home/home.test
Periksa kepemilikannya.
$ ls -l /nfs/home/home.test
-rw-r--r-- 1 root root 0 Aug 1 13:32 /nfs/home/home.test
Di sini karena kami membuat file uji menggunakan root dari mesin klien, kepemilikan dipertahankan pada mesin host. Ini karena kami menggunakan no_root_squash
flag yang mengizinkan pengguna root pada mesin klien sebagai pengguna root pada mesin host juga.
Langkah 7 - Pasang Berbagi NFS selama Boot
Mount ini tidak akan disimpan setelah Anda mem-boot mesin klien. Untuk membuatnya permanen, kita perlu mengedit /etc/fstab
berkas.
Buka /etc/fstab
file untuk diedit.
$ sudo nano /etc/fstab
Rekatkan baris berikut di bagian bawah file. Setiap baris sesuai dengan setiap direktori yang ingin kita mount saat boot.
. . .
host_ip:/var/nfs/general /nfs/general nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
host_ip:/home /nfs/home nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
Untuk mempelajari tentang opsi ini, periksa halaman manual nfs
.
$ man nfs
Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.
Reboot server untuk memeriksa mount.
$ sudo reboot
Masuk ke server klien dan verifikasi bahwa mount ada.
$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 448M 0 448M 0% /dev
tmpfs 99M 664K 98M 1% /run
/dev/vda1 25G 3.2G 21G 14% /
tmpfs 491M 0 491M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 491M 0 491M 0% /sys/fs/cgroup
tmpfs 99M 0 99M 0% /run/user/1000
123.175.112.87:/var/nfs/general 25G 18G 6.3G 74% /nfs/general
123.175.112.87:/home 25G 18G 6.3G 74% /nfs/home
Langkah 8 - Lepas NFS Shares
Setelah Anda tidak memerlukan pemasangan NFS, Anda dapat melepasnya dengan menggunakan perintah berikut.
$ sudo umount /nfs/home
$ sudo umount /nfs/general
Kesalahan umum adalah menggunakan unmount
bukannya umount
yang merupakan perintah sebenarnya.
Verifikasi bahwa mereka telah dilepas dengan benar.
$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 448M 0 448M 0% /dev
tmpfs 99M 664K 98M 1% /run
/dev/vda1 25G 3.2G 21G 14% /
tmpfs 491M 0 491M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 491M 0 491M 0% /sys/fs/cgroup
tmpfs 99M 0 99M 0% /run/user/1000
Anda juga perlu menghapus entri mereka dari /etc/fstab
file sehingga mereka tidak di-remount saat boot. Anda juga dapat menghapus komentar entri mereka dengan menempatkan #
karakter di depan jika Anda perlu menggunakan kembali tunggangan.
Kesimpulan
Ini mengakhiri tutorial kami di mana kami belajar cara membuat mount NFS pada mesin host dan cara mengaksesnya dari mesin klien yang berbeda. Jika Anda memiliki pertanyaan, tulis di komentar di bawah.