NFS服务端概述:
NFS,是Network File System的简写,即网络文件系统。网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS. NFS允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。
模式:C/S 模式
端口:
RHEL7是以NFSv4作为默认版本,NFSv4使用TCP协议(端口号是2049)和NFS服务器建立连接
安装nfs
[root@docker-01 ~]# yum -y install rpcbind nfs-utils
配置文件位置
[root@docker-01 ~]# ls /etc/exports
/etc/exports
启动NFS服务
先查看2049端口是否开放:
[root@docker-01 ~]# netstat -antpu | grep 2049
[root@docker-01 ~]# systemctl start rpcbind
[root@docker-01 ~]# systemctl start nfs-server.service
再次查看端口监听状态
[root@docker-01 ~]# netstat -antpu | grep 2049
tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -
udp 0 0 0.0.0.0:2049 0.0.0.0:* -
配置开机自动启动
[root@docker-01 ~]# systemctl enable nfs-server.service
服务的使用方法(看下机器名字,客户端挂载)
showmount -e NFS服务器IP
例:
[root@docker-02 opt]# showmount -e 172.17.120.50
Export list for 172.17.120.50:
挂载(发现挂载不上报错)
[root@docker-02 opt]# mount 172.17.120.50:/tmp /opt
mount.nfs: access denied by server while mounting 172.17.120.50:/tmp
修改配置文件,实战举例
[root@docker-01 tmp]# vim /etc/exports
/tmp *(rw)
注意: * 表示对所有网段开放权限
也可以指定特定的网段
下面是一些NFS共享的常用参数:
ro 只读访问
rw 读写访问
sync 资料同步写入到内存与硬盘当中
async 资料会先暂存于内存当中,而非直接写入硬盘
secure NFS通过1024以下的安全TCP/IP端口发送
insecure NFS通过1024以上的端口发送
wdelay 如果多个用户要写入NFS目录,则归组写入(默认)
no_wdelay 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。
Hide 在NFS共享目录中不共享其子目录
no_hide 共享NFS目录的子目录
subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
no_subtree_check 和上面相对,不检查父目录权限
all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
no_all_squash 保留共享文件的UID和GID(默认)
root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squash root用户具有根目录的完全管理访问权限
重启服务
[root@docker-01 tmp]# exportfs -rv ##重新读取配置文件,不中断服务.
exporting *:/tmp
客户端查看:
[root@docker-02 opt]# showmount -e 172.17.120.50
Export list for 172.17.120.50:
/tmp *
挂载共享
[root@docker-02 opt]# mount -t nfs 172.17.120.50:/media/ /opt/
[root@docker-02 opt]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 198G 1.4G 197G 1% /
devtmpfs devtmpfs 4.8G 0 4.8G 0% /dev
tmpfs tmpfs 4.9G 0 4.9G 0% /dev/shm
tmpfs tmpfs 4.9G 8.5M 4.8G 1% /run
tmpfs tmpfs 4.9G 0 4.9G 0% /sys/fs/cgroup
/dev/vda1 xfs 397M 133M 264M 34% /boot
tmpfs tmpfs 984M 0 984M 0% /run/user/0
172.17.120.50:/tmp nfs4 198G 1.4G 197G 1% /opt
开机自动挂载:
编辑
[root@docker-02 opt]# vim /etc/fstab
在文件最后添加自动挂载的信息:
/dev/mapper/centos-root / xfs defaults 0 0
UUID=79285dbe-478c-4de0-93e7-ee906f1133cc/boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
172.17.120.50:/tmp /opt nfsdefaults0 0
验证写入权限
[root@docker-02 opt]# umount /opt/
[root@docker-02 opt]# ls
yunweimao
[root@docker-02 opt]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 198G 1.4G 197G 1% /
devtmpfs devtmpfs 4.8G 0 4.8G 0% /dev
tmpfs tmpfs 4.9G 0 4.9G 0% /dev/shm
tmpfs tmpfs 4.9G 8.5M 4.8G 1% /run
tmpfs tmpfs 4.9G 0 4.9G 0% /sys/fs/cgroup
/dev/vda1 xfs 397M 133M 264M 34% /boot
tmpfs tmpfs 984M 0 984M 0% /run/user/0
[root@docker-02 opt]# mount -a
[root@docker-02 opt]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 198G 1.4G 197G 1% /
devtmpfs devtmpfs 4.8G 0 4.8G 0% /dev
tmpfs tmpfs 4.9G 0 4.9G 0% /dev/shm
tmpfs tmpfs 4.9G 8.5M 4.8G 1% /run
tmpfs tmpfs 4.9G 0 4.9G 0% /sys/fs/cgroup
/dev/vda1 xfs 397M 133M 264M 34% /boot
tmpfs tmpfs 984M 0 984M 0% /run/user/0
172.17.120.50:/tmp nfs4 198G 1.4G 197G 1% /opt
[root@docker-02 opt]# touch huqi
[root@docker-02 opt]# ls
huqi yunweimao
如果创建文件夹报错
[root@docker-02 opt]# touch huqi
touch: 无法创建"/huqi": 权限不够
解决方法:
设置访问权限一般包含2部分
1)服务本身权限
2)目录访问权限
nfs默认使用nfsnobody用户
[root@docker-01 tmp]# grep nfs /etc/passwd
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
修改权限
[root@docker-01 tmp]# chmod 777 -R /tmp
或
[root@docker-01 tmp]# chown nfsnobody.nfsnobody -R /tmp
再次验证写入权限
[root@docker-02 opt]# touch yunweicat
[root@docker-02 opt]# ll !$
ll yunweicat
-rw-r--r--. 1 root root 0 8月 18 15:21 yunweicat
关于运维学习、分享、交流,笔者开通了微信公众号【运维猫】,感兴趣的朋友可以关注下,欢迎加入,建立属于我们自己的小圈子,一起学运维知识。
网友评论