GNU/Linux >> Belajar Linux >  >> Cent OS

Panduan Pemula untuk NFS di CentOS / RHEL

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_dev
CentOS / RHEL 7 :Mengkonfigurasi server NFS dan klien NFS


Cent OS
  1. Cara Setup Server NFS di CentOS 7 / RHEL 7

  2. Panduan Utama untuk Meningkatkan Kernel di CentOS/RHEL/Fedora

  3. CentOS / RHEL 7 :Panduan pemula untuk systemd

  1. Panduan Pemula untuk Menyetel Profil di CentOS/RHEL

  2. Panduan Pemula untuk Mengelola Aliran Modul Paket di CentOS/RHEL 8

  3. CentOS / RHEL :panduan pemecahan masalah iptables

  1. Instal Webmin di CentOS 7 / RHEL 7

  2. CentOS / RHEL 7 :Mengkonfigurasi server NFS dan klien NFS

  3. CentOS / RHEL 7 :Panduan pemula untuk firewalld