Apa itu NFS?
Network File System (NFS) adalah salah satu produk file sharing komputer tertua yang ada saat ini. Ini masih yang paling populer untuk berbagi direktori file antara sistem UNIX dan Linux. NFS memungkinkan server untuk menetapkan direktori tertentu agar tersedia bagi host yang ditunjuk dan kemudian memungkinkan sistem klien untuk terhubung ke direktori tersebut dengan memasangnya secara lokal.
NFS dapat diamankan menggunakan aturan firewall (iptables), pembungkus TCP (untuk mengizinkan dan menolak akses host), dan SELinux (untuk membatasi bagaimana protokol berbagi file dapat berbagi sumber daya NFS). Meskipun NFS pada dasarnya tidak aman saat dibuat (data dibagikan tidak terenkripsi dan akses pengguna cukup terbuka), fitur di NFS versi 4 telah membantu meningkatkan keamanan NFS secara keseluruhan.
Apa itu 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.
Bagaimana Mengkonfigurasi server NFS dan klien NFS di CentOS/RHEL?
Silakan baca posting di bawah ini untuk mengkonfigurasi server NFS dan mesin klien.
Panduan Pemula untuk NFS di CentOS / RHELCentOS / RHEL 7 :Mengonfigurasi server NFS dan klien NFS
Apa file Konfigurasi untuk server NFS?
Konfigurasi utama untuk server NFS adalah file /etc/exports. Ini adalah file yang Anda gunakan untuk menentukan direktori apa yang ingin Anda bagikan dengan klien NFS. Sintaks file ini adalah:
Directory hostname(options)
Nilai Direktori harus diganti dengan nama direktori yang ingin Anda bagikan (misalnya, /usr/share/doc). Nilai hostname harus menjadi nama host klien yang dapat diselesaikan menjadi alamat IP. Nilai opsi digunakan untuk menentukan bagaimana sumber daya harus dibagikan.
Misalnya, entri berikut dalam file /etc/exports akan berbagi direktori /usr/share/doc dengan klien NFS client01 (dengan opsi baca-tulis) dan klien NFS client02 (dengan opsi read-only ):
# vi /etc/exports /usr/share/doc client01(rw) client02(ro)
Perhatikan bahwa ada spasi antara nama/opsi client01 dan client02, tetapi tidak ada spasi antara nama host dan opsi yang sesuai.
Memahami File /etc/exportsApa opsi berbagi NFS yang paling umum digunakan di /etc/exports
Ada banyak opsi berbagi NFS yang berbeda, termasuk ini:
- rw :Bagikan sebagai baca-tulis. Perlu diingat bahwa izin Linux normal masih berlaku. (Perhatikan bahwa ini adalah opsi default.)
- ro :Bagikan sebagai hanya-baca.
- sinkronisasi :Perubahan data file segera dilakukan ke disk, yang berdampak pada kinerja, tetapi kecil kemungkinannya mengakibatkan hilangnya data. Pada beberapa distribusi ini adalah default.
- tidak sinkron :Kebalikan dari sinkronisasi; perubahan data file dibuat pada awalnya ke memori. Ini mempercepat kinerja tetapi lebih cenderung mengakibatkan hilangnya data. Pada beberapa distribusi ini adalah default.
- root_squash :Memetakan pengguna root dan akun grup dari klien NFS ke akun anonim, biasanya akun none atau akun nfsnobody. Lihat bagian selanjutnya, “Pemetaan ID Pengguna,” untuk detail selengkapnya. (Perhatikan bahwa ini adalah opsi default.)
- no_root_squash :Memetakan pengguna root dan akun grup dari klien NFS ke akun root dan grup lokal.
Bagaimana cara mendapatkan informasi tentang kinerja share NFS?
Perintah nfsiostat berfungsi seperti perintah iostat kecuali hanya untuk titik pemasangan NFS. Nfsiostat mendapatkan input dari /proc/self/mountstats dan memberikan informasi tentang kinerja input/output dari share NFS yang dipasang di sistem. Perintah nfsiostat disediakan oleh nfs-utils paket.
Di bawah ini adalah contoh keluaran dari perintah nfsiostat.
Tabel di bawah ini menampilkan deskripsi singkat dari setiap kolom di output about.
Field | Deskripsi |
---|---|
op/s | Ini adalah jumlah operasi per detik. |
rpc bklog | Ini adalah panjang antrian backlog. |
kB/s | Ini adalah jumlah kB yang ditulis/dibaca per detik. |
kB/op | Ini adalah jumlah kB yang ditulis/dibaca per setiap operasi. |
transmisi ulang | Ini adalah jumlah transmisi ulang. |
rata-rata RTT (md) | Ini adalah durasi dari saat kernel klien mengirimkan permintaan RPC hingga saat menerima balasan. |
avg exe (ms) | Ini adalah durasi dari waktu klien NFS melakukan permintaan RPC ke kernelnya sampai permintaan RPC selesai, ini termasuk waktu RTT di atas. |
Di bawah ini adalah sintaks untuk menggunakan perintah nfsiostat.
# nfsiostat --help Usage: nfsiostat [interval] [count] [options] [mount point] Options: --version show program's version number and exit -h, --help show this help message and exit Statistics Options: File I/O is displayed unless one of the following is specified: -a, --attr displays statistics related to the attribute cache -d, --dir displays statistics related to directory operations -p, --page displays statistics related to the page cache Display Options: Options affecting display format: -s, --sort Sort NFS mount points by ops/second -l LIST, --list=LIST only print stats for first LIST mount points
Di sini,
interval – waktu dalam detik di antara setiap laporan.
hitung – jumlah laporan yang akan dihasilkan pada [interval] detik. Jika Anda tidak menentukan jumlah di sini, laporan akan dibuat secara terus-menerus pada interval yang ditentukan.
opsi – Berbagai opsi dijelaskan dalam contoh di bawah ini.
mount_point – Anda dapat menentukan titik pemasangan NFS tertentu yang statistiknya akan ditampilkan. Dalam kasus ini, laporan hanya untuk titik pemasangan yang ditentukan.
Bagaimana cara melihat pembagian NFS yang saat ini dibagikan?
Perintah exportfs dapat digunakan di server NFS untuk menampilkan apa yang saat ini dibagikan:
# exportfs /share [world]
Bagaimana cara berbagi sumber daya NFS menggunakan baris perintah?
Perintah exportfs juga dapat digunakan untuk berbagi sumber daya sementara, dengan asumsi layanan NFS telah dimulai:
# exportfs -o ro 192.168.1.100:/usr/share/doc # exportfs /usr/share/doc 192.168.1.100 /share [world]
-o opsi digunakan untuk menentukan opsi saham. Argumen tersebut mencakup nama sistem untuk berbagi, serta direktori untuk berbagi, dipisahkan oleh karakter titik dua (:).
Jika Anda membuat perubahan pada file /etc/exports, setiap bagian yang baru ditambahkan akan diaktifkan setelah reboot. Jika Anda ingin segera mengaktifkan perubahan ini, jalankan perintah berikut:
# exportfs –a
Bagaimana cara memasang NFS share pada sistem klien?
Setelah bagian NFS diekspor dari server NFS, itu dapat dipasang pada klien yang memenuhi syarat menggunakan sintaks perintah di bawah ini:
# mount [NFS server IP or hostname]:/share/path /client/path
Misalnya jika /exports/downloads dibagikan dari server NFS 10.10.10.100, kami dapat memasangnya di server klien sebagai direktori /mnt/downloads menggunakan perintah di bawah ini:
# mount 10.10.10.100:/exports/downloads /mnt/downloads
Bagaimana cara meng-umount sistem file NFS?
Setelah sistem file NFS di-mount, unmount-nya sederhana. Anda menggunakan perintah umount dengan titik pemasangan lokal atau nama sistem file jarak jauh. Misalnya:
# umount /mnt/nfs_mnt
atau:
# umount 10.10.10.100:/nfs_share
Bagaimana cara mendapatkan daftar klien yang terhubung ke server NFS?
Untuk mendapatkan daftar klien yang terhubung ke server NFS, gunakan perintah showmount dari prompt terminal. Untuk juga menampilkan direktori yang terhubung dengan klien, gunakan:
# showmount -a
Apa port default yang digunakan oleh server NFS?
Secara default server NFS menggunakan port 2049.
Port apa yang harus dibuka di firewall agar NFS berfungsi?
Port TCP dan UDP 2049 (nfs) dan 111 (rpcbind) harus terbuka agar server NFS berfungsi dengan baik. Server juga harus membuka port TCP dan UDP 20048 agar perintah showmount dapat menanyakan direktori bersama NFS yang tersedia dari rpc.mountd di server.
Bagaimana cara melihat pembagian NFS dari sistem klien?
Dari sistem Linux klien, Anda dapat menggunakan perintah showmount untuk melihat direktori bersama apa yang tersedia dari komputer yang dipilih, seperti dalam contoh ini:
$ showmount -e server.example.com /export/myshare client.example.com /mnt/public *
Output showmount menunjukkan bahwa direktori bersama bernama /export/myshare hanya tersedia untuk host client.example.com. Namun, direktori bersama /mnt/public tersedia untuk siapa saja.
Bagaimana cara melihat titik pemasangan Mounted NFS pada klien NFS?
Gunakan perintah di bawah ini untuk melihat titik pemasangan NFS yang terpasang pada server klien NFS:
# mount -t nfs4
Contoh keluaran:
# mount -t nfs4 10.10.10.100:/mnt on /mnt/fed type nfs4 (rw,relatime,vers=4.2,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.10.20.200,local_lock=none,addr=10.10.20.200)
Output dari perintah mount -t nfs4 hanya menunjukkan sistem file yang dipasang dari server file NFS.
Bagaimana cara memasang sistem file NFS pada saat Boot?
Untuk menyiapkan sistem file NFS agar dipasang secara otomatis pada titik pemasangan yang ditentukan setiap kali Anda memulai sistem Linux, Anda perlu menambahkan entri untuk sistem file NFS tersebut ke file /etc/fstab.
Berikut format untuk menambahkan sistem file NFS ke sistem lokal Anda:
host:directory mountpoint nfs options 0 0
Item pertama (host:directory) mengidentifikasi komputer server NFS dan direktori bersama. mountpoint adalah titik pemasangan lokal tempat direktori NFS dipasang. Ini diikuti oleh tipe sistem file (nfs). Opsi apa pun yang terkait dengan pemasangan muncul berikutnya dalam daftar yang dipisahkan koma. (Dua angka nol terakhir mengonfigurasi sistem untuk tidak membuang konten sistem file dan tidak menjalankan fsck pada sistem file.)
Berikut ini adalah contoh entri NFS di /etc/fstab:
# vi /etc/fstab nfs_server01:/data /mnt/data nfs bg,rsize=8192,wsize=8192 0 0
Bagaimana cara menggunakan autofs untuk memasang sistem file NFS sesuai permintaan?
Fasilitas autofs memasang sistem file jaringan sesuai permintaan ketika seseorang mencoba menggunakan sistem file. Dengan fasilitas autofs dikonfigurasi dan dihidupkan, Anda dapat menyebabkan direktori bersama NFS yang tersedia untuk dipasang sesuai permintaan. Untuk menggunakan fasilitas autofs, Anda harus menginstal paket autofs.
Dengan autofs diaktifkan, jika Anda mengetahui nama host dan direktori yang dibagikan oleh komputer host lain, cukup ubah (cd) ke direktori mount autofs (/net atau /var/autofs secara default). Ini menyebabkan sumber daya bersama dipasang secara otomatis dan dapat diakses oleh Anda. Langkah-langkah berikut menjelaskan cara mengaktifkan fasilitas autofs di Fedora atau RHEL:
1. Sebagai pengguna root, buka /etc/auto.master file dan cari baris berikut:
# vi /etc/auto.master /net -hosts
Hal ini menyebabkan direktori /net bertindak sebagai titik pemasangan untuk direktori bersama NFS yang ingin Anda akses di jaringan.
2. Untuk memulai layanan autofs di CentOS/RHEL 7, atau sistem yang lebih baru, ketik berikut ini sebagai pengguna root:
# systemctl start autofs.service
3. Pada CentOS/RHEL 7, atau sistem yang lebih baru, atur layanan autofs untuk memulai ulang setiap kali Anda mem-boot sistem Anda:
# systemctl enable autofs
Bagaimana cara mengkonfigurasi firewalld pada server NFS?
Agar server NFS berfungsi, aktifkan layanan nfs, mountd, dan rpc-bind di zona yang relevan dalam aplikasi firewall-config atau menggunakan firewall-cmd :
# firewall-cmd --add-service=nfs --zone=internal --permanent # firewall-cmd --add-service=mountd --zone=internal --permanent # firewall-cmd --add-service=rpc-bind --zone=internal --permanent