Pengantar NFS
Sistem File Jaringan (NFS) memungkinkan server untuk berbagi hierarki direktori (sistem file) dengan sistem jarak jauh melalui jaringan. Server NFS mengekspor direktori dan klien NFS memasang direktori yang diekspor. Direktori server kemudian muncul ke sistem klien seolah-olah mereka adalah direktori lokal. NFS mengurangi kebutuhan penyimpanan dan meningkatkan konsistensi dan keandalan data, karena pengguna mengakses file yang disimpan di server terpusat.
RedHat Linux 7 tidak mendukung NFS versi 2 (NFSv2). Dua versi berikut didukung:
NFS versi 3 (NFSv3).
NFS versi 4 (NFSv4).
NFS bergantung pada Remote Procedure Calls (RPC) antara klien dan server. Layanan RPC dikendalikan oleh layanan rpcbind. Layanan rpcbind menggantikan portmap, yang digunakan di versi Linux sebelumnya untuk memetakan nomor program RPC ke kombinasi nomor port alamat IP. rpcbind menanggapi permintaan untuk layanan RPC dan mengatur koneksi ke layanan RPC yang diminta. rpcbind tidak digunakan dengan NFSv4, karena server mendengarkan pada port TCP 2049 yang terkenal. Protokol pemasangan dan penguncian juga telah dimasukkan ke dalam protokol NFSv4, jadi NFSv4 juga tidak berinteraksi dengan daemon lockd dan rpc.statd.
Proses Server NFS dan RPC
Memulai layanan nfs-server memulai server NFS dan proses RPC lain yang diperlukan untuk melayani permintaan untuk sistem file NFS bersama. Anda dapat menggunakan nama pendek “nfs ” daripada “nfs-server ” saat memulai layanan. Contoh:
# systemctl start nfs
Ini adalah proses server NFS yang mengimplementasikan bagian tingkat pengguna dari layanan NFS. Fungsionalitas utama ditangani oleh modul kernel nfsd. Program ruang pengguna hanya menentukan jenis soket yang didengarkan oleh server kernel, versi NFS apa yang didukungnya, dan berapa banyak utas kernel nfsd yang digunakannya. Gunakan perintah ps –e untuk menunjukkan jumlah thread yang sedang berjalan.
# ps -ef | grep nfs root 9093 2 0 11:21 ? 00:00:00 [nfsd4_callbacks] root 9099 2 0 11:21 ? 00:00:00 [nfsd] root 9100 2 0 11:21 ? 00:00:00 [nfsd] root 9101 2 0 11:21 ? 00:00:00 [nfsd] root 9102 2 0 11:21 ? 00:00:00 [nfsd] root 9103 2 0 11:21 ? 00:00:00 [nfsd] root 9104 2 0 11:21 ? 00:00:00 [nfsd] root 9105 2 0 11:21 ? 00:00:00 [nfsd] root 9106 2 0 11:21 ? 00:00:00 [nfsd]
Jumlah utas nfsd yang akan dijalankan ditentukan di /proc/fs/nfsd/utas mengajukan. Dalam contoh ini, 8 utas nfsd ditentukan:
# cat /proc/fs/nfsd/threads 8
Memulai layanan nfs-server juga memulai proses RPC. Anda dapat menggunakan perintah ps –e untuk menampilkan nama proses RPC.
# ps -e | grep -i rpc 177 ? 00:00:00 rpciod 9080 ? 00:00:00 rpc.statd 9081 ? 00:00:00 rpc.idmapd 9082 ? 00:00:00 rpcbind 9083 ? 00:00:00 rpc.mountd 9084 ? 00:00:00 rpc.rquotad
rpc.statd
Proses ini mengimplementasikan protokol RPC Monitor Status Jaringan (NSM), yang memberi tahu klien NFS ketika server NFS dimulai ulang tanpa diturunkan dengan anggun. Ini tidak digunakan dengan NFSv4.
rpc.mountd
Ini adalah daemon pemasangan NFS yang mengimplementasikan sisi server dari permintaan pemasangan dari klien NFSv3. Ia memeriksa bahwa bagian NFS yang diminta saat ini diekspor oleh server NFS, dan bahwa klien diizinkan untuk mengaksesnya. Untuk NFSv4, daemon rpc.mountd hanya diperlukan di server NFS untuk menyiapkan ekspor.
rpc.idmapd
Ini memberikan panggilan ke klien dan server NFSv4, yang memetakan antara nama NFSv4 on-the-wire (yang berupa string dalam bentuk user@domain) dan UID dan GID lokal. Agar idmapd berfungsi dengan NFSv4, /etc/idmapd.conf harus dikonfigurasi. Layanan ini diperlukan untuk digunakan dengan NFSv4, meskipun tidak jika semua host berbagi nama domain DNS yang sama.
rpc.rquotad
Proses ini memberikan informasi kuota pengguna untuk pengguna jarak jauh. Ini dimulai secara otomatis oleh layanan nfs dan tidak memerlukan konfigurasi pengguna. Hasilnya digunakan oleh perintah quota untuk menampilkan kuota pengguna untuk sistem file jarak jauh dan oleh perintah edquota untuk mengatur kuota pada sistem file jarak jauh.
terkunci
Ini adalah utas kernel yang berjalan di klien dan server. Ini mengimplementasikan protokol Network Lock Manager (NLM), yang memungkinkan klien NFSv3 untuk mengunci file di server. Ini dimulai secara otomatis setiap kali server NFS dijalankan dan setiap kali sistem file NFS dipasang.
nfslock
Memulai layanan ini memulai proses RPC yang memungkinkan klien NFS mengunci file di server.
Konfigurasi Server NFS
Untuk mulai mengonfigurasi sistem sebagai server NFS, instal paket nfs-utils:
# yum install nfs-utils
File konfigurasi utama untuk server NFS adalah /etc/exports . File ini menyimpan daftar hierarki direktori yang diekspor yang dapat dipasang oleh sistem jarak jauh. Format entri adalah:
export-point client1(options) [client2(options) ... ]
Titik ekspor adalah nama jalur absolut dari hierarki direktori yang akan diekspor. Satu atau lebih sistem klien, masing-masing dengan opsi khusus, dapat memasang titik ekspor. Tidak ada spasi antara atribut klien dan braket terbuka. Bila tidak ada opsi klien yang ditentukan, pengaturan default berikut berlaku:
- ro:Hanya baca . Host klien tidak dapat mengubah data yang dibagikan di sistem file. Untuk mengizinkan host klien membuat perubahan pada sistem file, tentukan opsi rw (baca/tulis).
- sinkronisasi :Server NFS membalas permintaan hanya setelah perubahan yang dibuat oleh permintaan sebelumnya ditulis ke disk. async menetapkan bahwa server tidak harus menunggu.
- penundaan :Server NFS menunda melakukan permintaan tulis ketika mencurigai permintaan tulis lain sudah dekat. Untuk menonaktifkan penundaan, gunakan opsi no_wdelay. no_wdelay hanya tersedia jika opsi sinkronisasi default juga ditentukan.
- root_squash :Mencegah pengguna root yang terhubung dari jarak jauh agar tidak memiliki hak akses root, secara efektif "memadamkan" kekuatan pengguna root jarak jauh. Permintaan tampaknya datang dari pengguna nfsnobody, pengguna yang tidak memiliki hak istimewa di sistem lokal, atau seperti yang ditentukan oleh anonuid. Untuk menonaktifkan root squashing, tentukan opsi no_root_squash.
- no_all_squash :Tidak mengubah pemetaan pengguna jarak jauh. Untuk menekan setiap pengguna jarak jauh (termasuk root), gunakan opsi all_squash.
Untuk menentukan ID pengguna (UID) dan ID grup (GID) yang ditetapkan oleh server NFS ke pengguna jarak jauh, gunakan opsi anonuid dan anongid sebagai berikut:
export-point client(anonuid=uid,anongid=gid)
Opsi anonuid dan anongid memungkinkan Anda membuat akun pengguna dan grup khusus untuk dibagikan oleh pengguna NFS jarak jauh. Secara default, daftar kontrol akses (ACL) didukung oleh NFS. Untuk menonaktifkan fitur ini, tentukan opsi no_acl saat mengekspor sistem file.
Anda dapat menggunakan karakter wildcard, seperti (*) dan (?) dalam nama klien. Anda juga dapat mengekspor direktori ke semua host di jaringan IP. Untuk melakukan ini, tentukan alamat IP dan pasangan netmask sebagai alamat/netmask. Salah satu dari formulir berikut ini valid:
192.168.1.0/24 192.168.1.0/255.255.255.0
/etc/exports Contoh
Dalam contoh berikut, sistem klien dengan alamat IP 192.0.2.102 dapat memasang direktori /export/dengan izin baca/tulis. Semua penulisan ke disk tidak sinkron:
/export/directory 192.0.2.102(rw,async)
Contoh berikut mengekspor direktori /exports/apps ke semua klien, mengonversi semua pengguna yang terhubung ke pengguna nfsnobody anonim lokal, dan membuat direktori hanya-baca:
/exports/apps *(all_squash, ro)
Contoh berikut mengekspor direktori /spreadsheets/proj1 dengan izin baca-saja ke semua klien di subnet 192.168.1.0, dan izin baca/tulis ke sistem klien bernama mgmtpc:
/spreadsheets/proj1 192.168.1.0/24(ro) mgmtpc(rw)
Memulai Layanan NFS
Layanan rpcbind harus dimulai sebelum memulai nfs. Perintah berikut memeriksa apakah layanan rpcbind diaktifkan dan berjalan.
# systemctl status rpcbind
Jika layanan rpcbind berjalan, layanan nfs dapat dimulai. Mulai ulang nfs setelah membuat perubahan konfigurasi di /etc/exports atau jalankan perintah exportfs -a.
# systemctl start nfs
Periksa apakah layanan nfslock diaktifkan dan berjalan. Memulai layanan ini memulai proses RPC yang memungkinkan klien NFS mengunci file di server.
# systemctl status nfslock
Gunakan perintah systemctl enable untuk memulai layanan secara otomatis saat boot. Gunakan nama lengkap nfs-server saat mengaktifkan layanan NFS.
# systemctl enable nfs-server
Tentukan opsi dan argumen konfigurasi dengan menempatkannya di /etc/sysconfig/nfs . File ini berisi beberapa komentar untuk membantu Anda dalam menentukan opsi argumen. Gunakan perintah showmount –e untuk menampilkan sistem file yang diekspor:
# showmount –e
Utilitas ekspor
Anda juga dapat mengkonfigurasi server NFS dari baris perintah dengan menggunakan exportfs. Perintah ini memungkinkan pengguna root untuk mengekspor atau membatalkan ekspor direktori secara selektif tanpa mengubah /etc/exports dan tanpa memulai ulang layanan NFS. Sintaks untuk perintahnya adalah:
# exportfs [options] [client:dir ...]
Argumen klien adalah nama sistem klien tempat dir diekspor. Argumen dir adalah nama path absolut dari direktori yang diekspor. Berikut adalah daftar beberapa opsi:
- -r :Ekspor ulang entri di /etc/exports dan sinkronkan /var/lib/nfs/etab dengan /etc/exports. File /var/lib/nfs/etab adalah tabel ekspor master. rpc.mountd membaca file ini ketika klien mengirimkan perintah pemasangan NFS.
- -a :Ekspor entri di /etc/exports tetapi jangan sinkronkan /var/lib/nfs/etab. Jalankan exportfs –a setelah melakukan perubahan konfigurasi.
- -i :Abaikan entri di /etc/exports dan gunakan hanya argumen baris perintah.
- -u :Batalkan ekspor satu atau beberapa direktori.
- -o :Tentukan opsi klien seperti yang ditentukan dalam /etc/exports.
Konfigurasi Klien NFS
Untuk mulai mengonfigurasi sistem sebagai klien NFS, instal paket nfs-utils:
# yum install nfs-utils
Gunakan perintah mount untuk memasang sistem file yang diekspor (bagikan NFS) di sisi klien. Sintaks untuk perintahnya adalah:
# mount -t nfs -o options host:/remote/export /local/directory
Berikut ini adalah deskripsi dari argumen:
- -t nfs :Menunjukkan bahwa jenis sistem file adalah nfs. Dengan opsi ini, mount menggunakan NFSv4 jika server mendukungnya; jika tidak, ia menggunakan NFSv3.
- -o opsi :Daftar opsi pemasangan yang dipisahkan koma
- tuan rumah :/remote/export:Nama host yang mengekspor sistem file, diikuti dengan titik dua, diikuti dengan nama path absolut dari NFS share
- /local/directory :Titik pemasangan pada sistem klien
Misalnya, untuk memasang direktori /home yang diekspor dari host abc dengan izin baca-saja (opsi ro) pada titik pemasangan lokal /abc_home, dan mencegah pengguna jarak jauh mendapatkan hak istimewa yang lebih tinggi dengan menjalankan program setuid (opsi nosuid):
# mount -t nfs -o ro,nosuid abc:/home /abc_home
Untuk me-mount share NFS pada saat boot, tambahkan entri ke tabel mount sistem file, /etc/fstab. Entri dalam format berikut:
# vi /etc/fstab server:/exported-filesystem local_mount_point nfs options 0 0
Misalnya, entri /etc/fstab yang mereplikasi perintah mount pada halaman sebelumnya adalah:
# vi /etc/fstab abc:/home /abc_home nfs ro,nosuid 0 0
Perintah df menampilkan sistem file yang dipasang, termasuk sistem file yang dipasang di NFS. Untuk pemasangan NFS, kolom "Sistem file" menampilkan server:/informasi sistem file yang diekspor. Gunakan -T opsi untuk menyertakan kolom “Jenis”:
# df -hT Filesystem Type Size Used Avail Use% Mounted on host03:/Dev nfs4 976M 2.5M 907M 1% /remote_devCentOS / RHEL 7 :Mengkonfigurasi server NFS dan klien NFS