12.5. nfs入门¶
12.5.1. 安装nfs工具¶
[root@centos-7 ~]$yum install nfs-utils
[root@centos-7 ~]# rpm -ql nfs-utils |grep bin
/sbin/mount.nfs
/sbin/mount.nfs4
/sbin/osd_login
/sbin/rpc.statd
/sbin/umount.nfs
/sbin/umount.nfs4
/usr/sbin/blkmapd
/usr/sbin/exportfs
/usr/sbin/mountstats
/usr/sbin/nfsdcltrack
/usr/sbin/nfsidmap
/usr/sbin/nfsiostat
/usr/sbin/nfsstat
/usr/sbin/rpc.gssd
/usr/sbin/rpc.idmapd
/usr/sbin/rpc.mountd
/usr/sbin/rpc.nfsd
/usr/sbin/rpcdebug
/usr/sbin/showmount
/usr/sbin/sm-notify
/usr/sbin/start-statd
[root@centos-7 ~]# rpm -ql nfs-utils |grep systemd
/usr/lib/systemd/scripts/nfs-utils_env.sh
/usr/lib/systemd/system-generators/nfs-server-generator
/usr/lib/systemd/system/auth-rpcgss-module.service
/usr/lib/systemd/system/nfs-blkmap.service
/usr/lib/systemd/system/nfs-client.target
/usr/lib/systemd/system/nfs-config.service
/usr/lib/systemd/system/nfs-idmap.service
/usr/lib/systemd/system/nfs-idmapd.service
/usr/lib/systemd/system/nfs-lock.service
/usr/lib/systemd/system/nfs-mountd.service
/usr/lib/systemd/system/nfs-secure.service
/usr/lib/systemd/system/nfs-server.service
/usr/lib/systemd/system/nfs-utils.service
/usr/lib/systemd/system/nfs.service
/usr/lib/systemd/system/nfslock.service
/usr/lib/systemd/system/proc-fs-nfsd.mount
/usr/lib/systemd/system/rpc-gssd.service
/usr/lib/systemd/system/rpc-statd-notify.service
/usr/lib/systemd/system/rpc-statd.service
/usr/lib/systemd/system/rpcgssd.service
/usr/lib/systemd/system/rpcidmapd.service
/usr/lib/systemd/system/var-lib-nfs-rpc_pipefs.mount
/usr/share/man/man7/nfs.systemd.7.gz
12.5.2. 启动服务¶
[root@centos-155 yum.repos.d]# rpcinfo
program version netid address service owner
100000 4 tcp6 ::.0.111 portmapper superuser
100000 3 tcp6 ::.0.111 portmapper superuser
100000 4 udp6 ::.0.111 portmapper superuser
100000 3 udp6 ::.0.111 portmapper superuser
100000 4 tcp 0.0.0.0.0.111 portmapper superuser
100000 3 tcp 0.0.0.0.0.111 portmapper superuser
100000 2 tcp 0.0.0.0.0.111 portmapper superuser
100000 4 udp 0.0.0.0.0.111 portmapper superuser
100000 3 udp 0.0.0.0.0.111 portmapper superuser
100000 2 udp 0.0.0.0.0.111 portmapper superuser
100000 4 local /var/run/rpcbind.sock portmapper superuser
100000 3 local /var/run/rpcbind.sock portmapper superuser
[root@centos-155 yum.repos.d]# systemctl start nfs-server
[root@centos-155 yum.repos.d]# rpcinfo
program version netid address service owner
100000 4 tcp6 ::.0.111 portmapper superuser
100000 3 tcp6 ::.0.111 portmapper superuser
100000 4 udp6 ::.0.111 portmapper superuser
100000 3 udp6 ::.0.111 portmapper superuser
100000 4 tcp 0.0.0.0.0.111 portmapper superuser
100000 3 tcp 0.0.0.0.0.111 portmapper superuser
100000 2 tcp 0.0.0.0.0.111 portmapper superuser
100000 4 udp 0.0.0.0.0.111 portmapper superuser
100000 3 udp 0.0.0.0.0.111 portmapper superuser
100000 2 udp 0.0.0.0.0.111 portmapper superuser
100000 4 local /var/run/rpcbind.sock portmapper superuser
100000 3 local /var/run/rpcbind.sock portmapper superuser
100024 1 udp 0.0.0.0.224.237 status 29
100024 1 tcp 0.0.0.0.140.148 status 29
100024 1 udp6 ::.146.29 status 29
100024 1 tcp6 ::.188.103 status 29
100005 1 udp 0.0.0.0.78.80 mountd superuser
100005 1 tcp 0.0.0.0.78.80 mountd superuser
100005 1 udp6 ::.78.80 mountd superuser
100005 1 tcp6 ::.78.80 mountd superuser
100005 2 udp 0.0.0.0.78.80 mountd superuser
100005 2 tcp 0.0.0.0.78.80 mountd superuser
100005 2 udp6 ::.78.80 mountd superuser
100005 2 tcp6 ::.78.80 mountd superuser
100005 3 udp 0.0.0.0.78.80 mountd superuser
100005 3 tcp 0.0.0.0.78.80 mountd superuser
100005 3 udp6 ::.78.80 mountd superuser
100005 3 tcp6 ::.78.80 mountd superuser
100003 3 tcp 0.0.0.0.8.1 nfs superuser
100003 4 tcp 0.0.0.0.8.1 nfs superuser
100227 3 tcp 0.0.0.0.8.1 nfs_acl superuser
100003 3 udp 0.0.0.0.8.1 nfs superuser
100003 4 udp 0.0.0.0.8.1 nfs superuser
100227 3 udp 0.0.0.0.8.1 nfs_acl superuser
100003 3 tcp6 ::.8.1 nfs superuser
100003 4 tcp6 ::.8.1 nfs superuser
100227 3 tcp6 ::.8.1 nfs_acl superuser
100003 3 udp6 ::.8.1 nfs superuser
100003 4 udp6 ::.8.1 nfs superuser
100227 3 udp6 ::.8.1 nfs_acl superuser
100021 1 udp 0.0.0.0.221.211 nlockmgr superuser
100021 3 udp 0.0.0.0.221.211 nlockmgr superuser
100021 4 udp 0.0.0.0.221.211 nlockmgr superuser
100021 1 tcp 0.0.0.0.128.74 nlockmgr superuser
100021 3 tcp 0.0.0.0.128.74 nlockmgr superuser
100021 4 tcp 0.0.0.0.128.74 nlockmgr superuser
100021 1 udp6 ::.194.142 nlockmgr superuser
100021 3 udp6 ::.194.142 nlockmgr superuser
100021 4 udp6 ::.194.142 nlockmgr superuser
100021 1 tcp6 ::.165.168 nlockmgr superuser
100021 3 tcp6 ::.165.168 nlockmgr superuser
100021 4 tcp6 ::.165.168 nlockmgr superuser
12.5.3. 共享目录¶
[root@centos-155 yum.repos.d]# mkdir /data/nfs1
[root@centos-155 yum.repos.d]# mkdir /data/nfs2
[root@centos-155 yum.repos.d]# vim /etc/exports
[root@centos-155 yum.repos.d]# cat /etc/exports
/data/nfs1 *(rw)
/data/nfs2 *(rw)
[root@centos-155 yum.repos.d]# exportfs -r
[root@centos-155 yum.repos.d]# cat /etc/export
cat: /etc/export: No such file or directory
[root@centos-155 yum.repos.d]# exportfs -v
/data/nfs1 <world>(rw,sync,wdelay,hide,no_subtree_check,sec=sys,secure,root_squash,no_all_squash)
/data/nfs2 <world>(rw,sync,wdelay,hide,no_subtree_check,sec=sys,secure,root_squash,no_all_squash)
12.5.4. 挂载¶
[root@centos-152 ~]# showmount -e 192.168.46.155
Export list for 192.168.46.155:
/data/nfs2 *
/data/nfs1 *
[root@centos-152 ~]# mkdir /mnt/nfs1
[root@centos-152 ~]# mkdir /mnt/nfs2
[root@centos-152 ~]# mount 192.168.46.155:/data/nfs1 /mnt/nfs1
[root@centos-152 ~]# mount 192.168.46.155:/data/nfs2 /mnt/nfs2
12.5.5. 配置文件选项¶
12.5.6. 自动挂载¶
自动挂载分为2种, 相对路径法和绝对路径法。
相对路径法
[root@centos-152 ~]# vim /etc/auto.master
# 添加一行
/test auto.test
[root@centos-152 ~]# vim /etc/auto.test
[root@centos-152 ~]# cat /etc/auto.test
nfs1 -fstype=nfs,vers=3,rw 192.168.46.155:/data/nfs1
[root@centos-152 ~]# systemctl restart autofs
[root@centos-152 ~]# ll /test/nfs1
total 0
绝对路径法
[root@centos-152 ~]# vim /etc/auto.master
# 添加一行
/- /etc/auto.test2
[root@centos-152 ~]# vim /etc/auto.test2
[root@centos-152 ~]# cat /etc/auto.test2
/data/nfs2 -fstype=nfs,vers=3,rw 192.168.46.155:/data/nfs2
[root@centos-152 ~]# systemctl restart autofs
[root@centos-152 ~]# ll /data/nfs2
total 0
12.5.7. nfs实现伪根挂载¶
# 创建分散的文件夹和文件
[root@centos-155 ~]# mkdir /test1/test1 -pv
[root@centos-155 ~]# mkdir /test2/test2 -pv
[root@centos-155 ~]# mkdir /test3/test3 -pv
[root@centos-155 nfsroot]# touch /test1/test1/test1
[root@centos-155 nfsroot]# touch /test2/test2/test2
[root@centos-155 nfsroot]# touch /test3/test3/test3
# 整合到一块
[root@centos-155 ~]# mkdir /nfsroot
[root@centos-155 ~]# cd /nfsroot/
[root@centos-155 nfsroot]# mkdir test1 test2 test3
[root@centos-155 nfsroot]# mount /test1/test1 test1 -B
[root@centos-155 nfsroot]# mount /test2/test2 test2 -B
[root@centos-155 nfsroot]# mount /test3/test3 test3 -B
# 导出配置
[root@centos-155 nfsroot]# vim /etc/exports
[root@centos-155 nfsroot]# cat /etc/exports
/nfsroot *(fsid=0,ro,crossmnt)
/test1/test1 *(ro)
/test2/test2 *(rw)
/test3/test3 *(rw)
# 导出
[root@centos-155 nfsroot]# exportfs -r
[root@centos-155 nfsroot]# exportfs -v
/nfsroot <world>(ro,sync,wdelay,hide,crossmnt,no_subtree_check,fsid=0,sec=sys,secure,root_squash,no_all_squash)
/test1/test1 <world>(ro,sync,wdelay,hide,no_subtree_check,sec=sys,secure,root_squash,no_all_squash)
/test2/test2 <world>(rw,sync,wdelay,hide,no_subtree_check,sec=sys,secure,root_squash,no_all_squash)
/test3/test3 <world>(rw,sync,wdelay,hide,no_subtree_check,sec=sys,secure,root_squash,no_all_squash)
# 另外一个机器测试
[root@centos-152 ~]# mount 192.168.46.155:/ /mnt/nfsroot
[root@centos-152 ~]# tree /mnt/nfsroot
/mnt/nfsroot
├── test1
│ └── test1
├── test2
│ └── test2
└── test3
└── test3
3 directories, 3 files
Note
我们使用默认挂载过来使用了nfsnobody的用户的,可以考虑使用setfacl来添加nfsnobody的权限。