Panduan ini menjelaskan cara menyiapkan server NFS dan klien NFS di CentOS 7. NFS adalah singkatan dari Network File System; melalui NFS, klien dapat mengakses (membaca, menulis) berbagi jarak jauh di server NFS seolah-olah berada di hard disk lokal. Saya akan menggunakan server minimal CentOS 7.2 sebagai dasar untuk instalasi.
1 Catatan Awal
Saya menggunakan dua sistem CentOS di sini:
- Server NFS:server.example.com, alamat IP:192.168.1.100
- Klien NFS:client.example.com, alamat IP:192.168.1.101
Saya akan menggunakan editor nano dalam tutorial ini untuk mengedit file konfigurasi. Nano bisa dipasang seperti ini.
yum -y install nano
2 Konfigurasi Firewall
Saya sarankan menginstal firewall. Jika Anda belum menginstal firewalld dan ingin menggunakan firewall, maka instal dengan perintah berikut:
yum -y install firewalld
mulai firewall dan aktifkan untuk dimulai saat boot.
systemctl start firewalld.service
systemctl enable firewalld.service
Selanjutnya, buka port SSH dan NFS untuk memastikan bahwa Anda akan dapat terhubung ke server dengan SSH untuk tujuan admin dan oleh NFS dari klien NFS kami.
firewall-cmd --permanent --zone=public --add-service=ssh
firewall-cmd --permanent --zone=public --add-service=nfs
firewall-cmd --reload
3 Memasang NFS
server:
Di server NFS kami menjalankan:
yum -y install nfs-utils
Kemudian aktifkan dan mulai layanan server nfs.
systemctl enable nfs-server.service
systemctl start nfs-server.service
klien:
Di klien, kita dapat menginstal NFS sebagai berikut (ini sebenarnya sama dengan di server):
yum install nfs-utils
4 Mengekspor Direktori di Server
server:
Saya ingin membuat direktori /home dan /var/nfs dapat diakses oleh klien; oleh karena itu kita harus "mengekspor" mereka di server.
Ketika klien mengakses berbagi NFS, ini biasanya terjadi sebagai pengguna nfsnobody. Biasanya direktori /home tidak dimiliki oleh nfsnobody (dan saya tidak menyarankan untuk mengubah kepemilikannya menjadi nfsnobody!), dan karena kita ingin membaca dan menulis di /home, kami memberi tahu NFS bahwa akses harus dibuat sebagai root (jika /home share kami hanya-baca, ini tidak diperlukan). Direktori /var/nfs tidak ada, jadi kami dapat membuatnya dan mengubah kepemilikannya menjadi pengguna dan grup nfsnobody.
mkdir /var/nfs
chown nfsnobody:nfsnobody /var/nfs
chmod 755 /var/nfs
Sekarang kita harus memodifikasi /etc/exports di mana kita "mengekspor" share NFS kita. Kami menentukan /home dan /var/nfs sebagai NFS yang dibagikan dan memberi tahu NFS untuk membuat akses ke /home sebagai root (untuk mempelajari lebih lanjut tentang /etc/exports, formatnya, dan opsi yang tersedia, lihat
man 5 exports
)
nano /etc/exports
/home 192.168.1.101(rw,sync,no_root_squash,no_subtree_check) /var/nfs 192.168.1.101(rw,sync,no_subtree_check)
(Opsi no_root_squash membuat /home akan diakses sebagai root.)
Setiap kali kita memodifikasi /etc/exports, kita harus menjalankan:
exportfs -a
setelah itu, untuk membuat perubahan menjadi efektif.
5 Memasang Bagian NFS pada Klien
klien:
Pertama kita buat direktori tempat kita ingin me-mount share NFS, mis.:
mkdir -p /mnt/nfs/home
mkdir -p /mnt/nfs/var/nfs
Setelah itu, kita dapat memasangnya sebagai berikut:
mount 192.168.1.100:/home /mnt/nfs/home
mount 192.168.1.100:/var/nfs /mnt/nfs/var/nfs
Anda sekarang akan melihat dua bagian NFS di output
df -h
[[email protected] ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 28G 1.7G 26G 7% /
devtmpfs 909M 0 909M 0% /dev
tmpfs 919M 0 919M 0% /dev/shm
tmpfs 919M 8.6M 910M 1% /run
tmpfs 919M 0 919M 0% /sys/fs/cgroup
/dev/sda1 497M 208M 290M 42% /boot
tmpfs 184M 0 184M 0% /run/user/0
192.168.1.100:/home 28G 1.2G 27G 5% /mnt/nfs/home
192.168.1.100:/var/nfs 28G 1.2G 27G 5% /mnt/nfs/var/nfs
dan
mount
[[email protected] ~]# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=930320k,nr_inodes=232580,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)
cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
configfs on /sys/kernel/config type configfs (rw,relatime)
/dev/mapper/centos-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=25,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
mqueue on /dev/mqueue type mqueue (rw,relatime,seclabel)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
nfsd on /proc/fs/nfsd type nfsd (rw,relatime)
/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=188060k,mode=700)
192.168.1.100:/home on /mnt/nfs/home type nfs4 (rw,relatime,vers=4.0,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.101,local_lock=none,addr=192.168.1.100)
192.168.1.100:/var/nfs on /mnt/nfs/var/nfs type nfs4 (rw,relatime,vers=4.0,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.101,local_lock=none,addr=192.168.1.100)
6 Pengujian
Di klien, Anda sekarang dapat mencoba membuat file uji pada share NFS:
klien:
touch /mnt/nfs/home/test.txt
touch /mnt/nfs/var/nfs/test.txt
Sekarang buka server dan periksa apakah Anda dapat melihat kedua file pengujian:
server:
ls -l /home/
[[email protected] ~]# ls -l /home/
total 0
drwx------. 2 administrator administrator 59 Jun 21 16:13 administrator
-rw-r--r--. 1 root root 0 Jun 29 13:07 test.txt
ls -l /var/nfs
[[email protected] ~]# ls -l /var/nfs
total 0
-rw-r--r--. 1 nfsnobody nfsnobody 0 Jun 29 13:07 test.txt
(Harap perhatikan kepemilikan berbeda dari file uji:bagian /home NFS diakses sebagai root, oleh karena itu /home/test.txt dimiliki oleh root; bagian /var/nfs diakses sebagai bukan siapa-siapa/65534, oleh karena itu /var/ nfs/test.txt dimiliki oleh 65534.)
7 Memasang Bagian NFS saat Booting
Daripada memasang share NFS secara manual pada klien, Anda dapat memodifikasi /etc/fstab sehingga share NFS dapat dipasang secara otomatis saat klien melakukan booting.
klien:
Buka /etc/fstab dan tambahkan baris berikut:
nano /etc/fstab
[...] 192.168.1.100:/home /mnt/nfs/home nfs rw,sync,hard,intr 0 0 192.168.1.100:/var/nfs /mnt/nfs/var/nfs nfs rw,sync,hard,intr 0 0
Alih-alih rw,sync,hard,intr Anda dapat menggunakan opsi pemasangan yang berbeda. Untuk mempelajari lebih lanjut tentang opsi yang tersedia, lihat
man nfs
Untuk menguji apakah /etc/fstab Anda yang dimodifikasi berfungsi, reboot klien:
reboot
Setelah reboot, Anda akan menemukan dua NFS yang dibagikan di output
df -h
[[email protected] ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 28G 1.7G 26G 7% /
devtmpfs 909M 0 909M 0% /dev
tmpfs 919M 0 919M 0% /dev/shm
tmpfs 919M 8.6M 910M 1% /run
tmpfs 919M 0 919M 0% /sys/fs/cgroup
/dev/sda1 497M 208M 290M 42% /boot
tmpfs 184M 0 184M 0% /run/user/0
192.168.1.100:/home 28G 1.2G 27G 5% /mnt/nfs/home
192.168.1.100:/var/nfs 28G 1.2G 27G 5% /mnt/nfs/var/nfs
dan
mount
[[email protected] ~]# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=930320k,nr_inodes=232580,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)
cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
configfs on /sys/kernel/config type configfs (rw,relatime)
/dev/mapper/centos-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=25,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
mqueue on /dev/mqueue type mqueue (rw,relatime,seclabel)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
nfsd on /proc/fs/nfsd type nfsd (rw,relatime)
/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=188060k,mode=700)
192.168.1.100:/home on /mnt/nfs/home type nfs4 (rw,relatime,vers=4.0,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.101,local_lock=none,addr=192.168.1.100)
192.168.1.100:/var/nfs on /mnt/nfs/var/nfs type nfs4 (rw,relatime,vers=4.0,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.101,local_lock=none,addr=192.168.1.100)
8 Tautan
- Linux NFS:http://nfs.sourceforge.net/
- CentOS:http://www.centos.org/