NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
服务端:
查看系统内核版本
[root@localhost /]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.0 (Maipo)
安装rpcbind,和nfs
[root@localhost /]# yum install nfs-utils rpcbind -y
/etc/exports 是nfs的配置文件,内容默认为空。
格式:NFS共享目录 客户端地址(参数)
客户端地址 | 具体地址例子 |
---|---|
授权单一客户端访问NFS | 172.25.254.141 |
授权整个网段可访问NFS | 172.25.254.0/24 |
授权整个网段 | 172.25.254.* |
NFS权限设置
NFS配置权限设置,即/etc/exports文件配置的参数集。
参数命令 | 参数用途 |
---|---|
rw | 表示可读写 |
Sync | 请求或者写入数据时,数据同步写入到NFS server的硬盘中后才会返回 |
no_root_squas | 访问nfs server共享目录的用户如果是root的话,它对该目录具有root权限。这个配置原本为无盘用户准备的。用户应避免使用! |
root_squash | 对于访问NFS server共享目录的用户,如果是root的话会被压缩成为nobody用户身份。 |
all_squash | 不管访问nfs server共享目录的用户身份如何包括root,它的权限都将被压缩成为匿名用户,同时他们的udi和gid都会变成nobody或nfsnobody账户的uid,gid。在多个nfs客户端同时读写nfs server数据时,这个参数可以确保大家写入的数据的权限是一样的。但不同系统有可能匿名用户的uid,gid不同。因为此处我们需要服务端和客户端之间的用户是一样的。比如说:服务端指定匿名用户的UID为2000,那么客户端也一定要存在2000这个账号才可以 |
anonuid | anonuid就是匿名的uid和gid。说明客户端以什么权限来访问服务端,在默认情况下是nfsnobody。Uid65534. |
anongid | 同anongid,就是把uid换成gid |
举例:
*代表任何ip地址
[root@localhost /]# echo "/ftp *(rw,no_root_squash)" >> /etc/exports
[root@localhost /]# mkdir /ftp
刷新nfs配置
[root@localhost /]# exportfs -rv
exporting *:/ftp
重启服务
[root@localhost /]# systemctl restart nfs
[root@localhost /]# systemctl restart rpcbind
客户端:
挂载
[root@server ~]# mount -t nfs -o rw 172.25.254.141:/ftp /mnt/
[root@server ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda1 10473900 3189236 7284664 31% /
devtmpfs 469344 0 469344 0% /dev
tmpfs 484932 80 484852 1% /dev/shm
tmpfs 484932 12748 472184 3% /run
tmpfs 484932 0 484932 0% /sys/fs/cgroup
172.25.254.141:/ftp 10473984 3519232 6954752 34% /mnt
识别是否被服务端文件是否共享
[root@server ftp]# showmount -e 172.25.254.141
Export list for 172.25.254.141:
/ftp *
并且客户端和服务端实现文件共享,相当于一个文件系统两端都可以访问,读写。
[root@server mnt]# ls
file
/etc/fstab 开机挂载配置文件
开机自动挂载:
[root@server ~]# echo "172.25.254.141:/ftp /ftp nfs defaults 0 0" >> /etc/fstab
[root@server mnt]# reboot
Connection to 172.25.254.241 closed by remote host.
Connection to 172.25.254.241 closed.
[root@foundation79 Desktop]# ssh [email protected]
root@172.25.254.241's password:
Last login: Wed Jun 6 01:59:12 2018 from 172.25.254.79
[root@server ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda1 10473900 3188264 7285636 31% /
devtmpfs 469344 0 469344 0% /dev
tmpfs 484932 80 484852 1% /dev/shm
tmpfs 484932 12748 472184 3% /run
tmpfs 484932 0 484932 0% /sys/fs/cgroup
172.25.254.141:/ftp 10473984 3519232 6954752 34% /ftp
mount 是用来挂载文件系统的,可以在系统启动时挂载(/etc/fstab),也可以在系统启动后挂载(使用 mount 命令)。而光盘、软盘、NFS、SMB 等文件系统具有动态性,即需要的时候才有必要挂载。光驱和软盘一般知道什么时候需要挂载,但是 NFS 和 SMB 就不一定能确定挂载时间。而且 NFS 、 SMB 是基于网络的,不管使用或者不使用,都会造成资源浪费(多少情况下,不用到这些的时候,这些挂载其实是不需要一直存在的)。
而autofs恰好提供了一种功能:如果长时间不用一个文件系统,autofs会把这个文件系统卸载;当你需要用到的时候,只需要cd到挂载点或者ls下挂载点,autofs自动挂接。
安装服务
[root@server ftp]# yum install autofs -y
安装后自动生成/net目录,目录下有可访问的文件系统。
[root@server ftp]# systemctl start autofs
[root@server ftp]# cd /net/
[root@server net]# ls
[root@server net]# cd 172.25.254.141
[root@server 172.25.254.141]# ls
ftp
[root@server 172.25.254.141]# pwd
/net/172.25.254.141
第一步:
编辑主配置文件
[root@server ~]# vim /etc/auto.master
7 /misc /etc/auto.misc
8 /ftp /etc/auto.mnt 关联挂载目录与子配置文件
第二步:
配置子配置文件
子配置文件是自己新建的
[root@server /]# echo "* 172.25.254.141:ftp/&" > /etc/auto.mnt
&代表任意可指定目录挂载
其中,在autofs配置文件/etc/sysconfig/autofs中有许多默认选择
例如:
默认更新挂载的时间为300秒,这里更改为6秒。
[root@server ~]# vim /etc/sysconfig/autofs
13 TIMEOUT=6
[root@server ftp]# df | grep ftp
172.25.254.141:/ftp 10473984 3519232 6954752 34% /net/172.25.254.141/ftp
[root@server ftp]# cd ~
[root@server ~]# df | grep ftp ##6秒后取消挂载