要求:手动搭建一个nfs服务器
- 开放/nfs/shared目录,供所有用户查阅资料
- 开放/nfs/upload目录为192.168.120.0/24网段的数据上传目录,并将所有用户及所属的用户组都映射为nfs-upload,其UID与GID均为300
步骤:
搭建环境
- 服务器地址:192.168.120.128(ming) ,客户端地址:192.168.120.222(jun)
第一个nfs服务器
开放/nfs/shared目录,供所有用户查阅资料
nfs配置
- 分别在服务端和客户端安装nfs-utils
[root@ming ~]# yum -y install nfs-utils
Loaded plugins: product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Resolving Dependencies
--> Running transaction check
---> Package nfs-utils.x86_64 1:1.3.0-0.el7 will be installed
--> Processing Dependency: libtirpc >= 0.2.3-1 for package: 1:nfs-utils-1.3.0-0.el7.x86_64
--> Processing Dependency: keyutils for package: 1:nfs-utils-1.3.0-0.el7.x86_64
- 启动服务
服:
[root@ming ~]# systemctl restart rpcbind nfs-server
客:
[root@jun ~]# systemctl restart rpcbind nfs-server
- 在服务器上创建/nfs/shared目录,供所有用户查阅资料
[root@ming ~]# mkdir -p /nfs/shared
- 修改/etc/exports文件
[root@ming ~]# cat /etc/exports
/nfs/shared *(ro)
- 重启服务
[root@ming ~]# systemctl restart rpcbind nfs-server
或者
[root@ming ~]# exportfs -r
- 在客户端查看服务器的共享目录
[root@jun ~]# showmount -e 192.168.120.128
Export list for 192.168.120.128:
/nfs/shared *
- 在客户端将nfs共享的目录挂载到指定目录下
[root@jun ~]# mount -t nfs 192.168.120.128:/nfs/shared /jun
[root@jun ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/rhel-root xfs 18G 917M 17G 6% /
devtmpfs devtmpfs 908M 0 908M 0% /dev
tmpfs tmpfs 914M 0 914M 0% /dev/shm
tmpfs tmpfs 914M 8.5M 906M 1% /run
tmpfs tmpfs 914M 0 914M 0% /sys/fs/cgroup
/dev/sda1 xfs 497M 96M 401M 20% /boot
192.168.120.128:/nfs/shared nfs4 18G 910M 17G 6% /jun
- 在服务器上创建文件或目录
[root@ming ~]# cd /nfs/shared/
[root@ming shared]# ls
[root@ming shared]# mkdir aaaaaaa
- 在客户端上查看
[root@jun ~]# cd /jun/
[root@jun jun]# ll
总用量 0
drwxr-xr-x 2 root root 6 1月 8 23:21 aaaaaaa
-rw-r--r-- 1 root root 0 1月 8 23:24 bbbbbbb
[root@jun jun]# touch hhhh
touch: 无法创建"hhhh": 只读文件系统
[root@jun jun]#
- 注意:防火墙和selinux不关闭有可能不成功
第二个nfs服务器
- 在服务端创建/nfs/upload目录,创建用户和组为nfs-upload,指定UID,GID为300
[root@ming ~]# mkdir /nfs/upload
[root@ming ~]# useradd -r -u 300 nfs-upload
[root@ming ~]# id nfs-upload
uid=300(nfs-upload) gid=300(nfs-upload) groups=300(nfs-upload)
[root@ming ~]#
- 修改/nfs/exports文件
[root@ming ~]# vim /etc/exports
[root@ming ~]# cat /etc/exports
/nfs/shared *(ro)
/nfs/upload 192.168.120.0/24(rw,anonuid=300,anongid=300)
[root@ming ~]#
- 重新读取/nfs/exports/配置文件
[root@ming ~]# exportfs -r
- 在客户端查看nfs共享的目录
[root@jun ~]# showmount -e 192.168.120.128
Export list for 192.168.120.128:
/nfs/shared *
/nfs/upload 192.168.120.0/24
- 挂载共享目录
[root@jun ~]# mkdir /liu
[root@jun ~]# mount -t nfs 192.168.120.128:/nfs/upload /liu
[root@jun ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/rhel-root xfs 18G 917M 17G 6% /
devtmpfs devtmpfs 908M 0 908M 0% /dev
tmpfs tmpfs 914M 0 914M 0% /dev/shm
tmpfs tmpfs 914M 8.5M 906M 1% /run
tmpfs tmpfs 914M 0 914M 0% /sys/fs/cgroup
/dev/sda1 xfs 497M 96M 401M 20% /boot
192.168.120.128:/nfs/shared nfs4 18G 910M 17G 6% /jun
- 在nfs共享目录上创建文件
[root@jun ~]# cd /liu
[root@jun liu]# ls
[root@jun liu]# mkdir aaa
mkdir: 无法创建目录"aaa": 权限不够
- 发现创建不了文件,这时需要在服务端将共享目录属主,属组改为nfs-upload
[root@ming ~]# chown -R 300 /nfs/upload/
[root@ming ~]# chgrp -R 300 /nfs/upload/
[root@ming ~]# ll /nfs/
total 0
drwxr-xr-x. 3 root root 34 Jan 8 10:24 shared
drwxr-xr-x 2 nfs-upload nfs-upload 6 Jan 8 10:35 upload
[root@ming ~]#
- 在客户端共享目录上创建文件并查看
客:
[root@jun liu]# mkdir aa
[root@jun liu]# ls
aa
[root@jun liu]# ll
总用量 0
drwxr-xr-x 2 300 300 6 1月 8 23:59 aa
[root@jun liu]#
服:
[root@ming ~]# cd /nfs/upload/
[root@ming upload]# ls
aa
[root@ming upload]# ll
total 0
drwxr-xr-x 2 nfs-upload nfs-upload 6 Jan 8 10:59 aa
[root@ming upload]#
其他nfs情况
客户端开机自动挂载
- 在/etc/fstab中挂载nfs
[root@jun ~]# vim /etc/fstab
[root@jun ~]# cat /etc/fstab
192.168.120.128:nfs/upload /liu nfs defaults,_netdev 0 0
- 重启将自动挂载
防火墙开启情况下的nfs
- 开启防火墙
[root@ming ~]# systemctl restart firewalld
[root@ming ~]# systemctl status firewalld
firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled)
Active: active (running) since Tue 2019-01-08 11:12:19 EST; 8s ago
Main PID: 2839 (firewalld)
CGroup: /system.slice/firewalld.service
└─2839 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
Jan 08 11:12:19 ming systemd[1]: Starting firewalld - dynamic firewall daemon...
Jan 08 11:12:19 ming systemd[1]: Started firewalld - dynamic firewall daemon.
- 在客户端查看共享目录发现查看不到
[root@jun ~]# showmount -e 192.168.120.128
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
[root@jun ~]#
- 在服务端写防火墙规则
[root@ming ~]# firewall-cmd --add-rich-rule 'rule family=ipv4 source address=192.168.120.0/24 service name=nfs accept' --permanent
success
[root@ming ~]# firewall-cmd --add-rich-rule 'rule family=ipv4 source address=192.168.120.0/24 service name=rpc-bind accept' --permanent
success
[root@ming ~]# firewall-cmd --add-rich-rule 'rule family=ipv4 source address=192.168.120.0/24 service name=mountd accept' --permanent
success
[root@ming ~]#
[root@ming ~]# firewall-cmd --reload
success
[root@ming ~]# firewall-cmd --list-all
public (default, active)
interfaces: eno16777736
sources:
services: dhcpv6-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
rule family="ipv4" source address="192.168.120.111/32" service name="ssh" accept
rule family="ipv4" source address="192.168.120.0/24" service name="rpc-bind" accept
rule family="ipv4" source address="192.168.120.0/24" service name="mountd" accept
rule family="ipv4" source address="192.168.120.0/24" service name="nfs" accept
- 在客户端写防火墙规则
[root@jun ~]# firewall-cmd --add-rich-rule 'rule family=ipv4 source address=192.168.120.0/24 service name=rpc-bind accept' --permanent
success
[root@jun ~]# firewall-cmd --reload
success
[root@jun ~]# firewall-cmd --list-all
public (default, active)
interfaces: eno16777728
sources:
services: dhcpv6-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
rule family="ipv4" source address="192.168.120.0/24" service name="rpc-bind" accept
[root@jun ~]#
- 在客户端查看共享目录
[root@jun ~]# showmount -e 192.168.120.128
Export list for 192.168.120.128:
/nfs/shared *
/nfs/upload 192.168.120.0/24
[root@jun ~]#
- 注意:
- 当目录挂载不上时,记得开启selinux,防火墙,重启服务
[root@jun ~]# systemctl start nfs-server rpcbind