返回目录:win7问题
内容导航:
一、NFS 服务文件共享
NFS(Network File System)即网络文件系统, 允许系统将其目录和文件共享给网络上的其他系统。通过 NFS,用户和应用程序可以访问远程系统上的文件,就象它们是本地文件一样。
Ubuntu 安装
Ubuntu 16.04 安装 NFS 服务器:
apt install nfs-kernel-server
配置
编辑/etc/exports文件添加需要共享目录,每个目录的设置独占一行,编写格式如下:
NFS共享目录路径 客户机IP或者名称(参数1,参数2,...,参数n)
例如:
/home *(ro,sync,insecure,no_root_squash)/share 192.168.100.0/24(rw,sync,insecure,no_subtree_check,no_root_squash)
| 参数 | 说明 | | :- | :- | | ro | 只读访问 | | rw | 读写访问 | | sync | 所有数据在请求时写入共享 | | async | nfs在写入数据前可以响应请求 | | 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用户具有根目录的完全管理访问权限 | | anonuid=xxx | 指定nfs服务器/etc/passwd文件中匿名用户的UID | | anongid=xxx | 指定nfs服务器/etc/passwd文件中匿名用户的GID |
- 注1:尽量指定主机名或IP或IP段最小化授权可以访问NFS 挂载的资源的客户端
- 注2:经测试参数insecure必须要加,否则客户端挂载出错mount.nfs: access denied by server while mounting
启动
配置完成后,您可以在终端提示符后运行以下命令来启动 NFS 服务器:
systemctl start nfs-kernel-server.service
客户端挂载
Ubuntu 16.04,首先需要安装 nfs-common 包
apt install nfs-common
CentOS 安装
CentOS 7, 需要安装 nfs-utils 包
yum install nfs-utils rpcbindservice rpcbind status #查看启动状态service nfs status
使用 mount 命令来挂载其他机器共享的 NFS 目录。可以在终端提示符后输入以下类似的命令:
mount example.hostname.com:/ubuntu /local/ubuntu
挂载点 /local/ubuntu 目录必须已经存在。而且在 /local/ubuntu 目录中没有文件或子目录。
另一个挂载NFS 共享的方式就是在 /etc/fstab 文件中添加一行。该行必须指明 NFS 服务器的主机名、服务器输出的目录名以及挂载 NFS 共享的本机目录。
以下是在 /etc/fstab 中的常用语法:
example.hostname.com:/ubuntu /local/ubuntu nfs rsize=8192,wsize=8192,timeo=14,intr
其他- mount_nfs: can’t mount with remote locks when server xx is not running rpc.statd: RPC prog. not avail mount: xx failed with 74
mount -o nolock -t nfs 192.168.30.29:/disk4 ~/disk4
- 查看服务器共享目录
showmount 192.168.30.29
- 查看挂载目录的信息:
fuser -m -v /usr/local/test
- 查看主机的rpc服务和端口
rpcinfo –p 192.168.30.29
Ansible 部署 nfs
file=/etc/exportscat <
CentOS 安装
yum install -y nfs-utils rpcbind# 参照上面修改 /etc/exportsexportfs -r service rpcbind start service nfs start
- 关闭 防火墙
systemctl stop firewalld.service
二、nfs 共享上的文件是什么意思
Linux服务器间共享文件的方式有很多种(ftp、smba、nfs)这里给介绍以下,Linux下nfs文件共享方式和实现的方法。 1、首先要开启portmap和nfs服务。 service portmap start service nfs start 2、查看服务是否开启。 netstat -ntpl 3、修改 /etc/exports vi /etc/exports #/home/temp *(rw,sync,no_root_squash,all_squash) /home/temp *(ro,sync,no_root_squash,all_squash) (/home/temp 表示要被共享的目录) /mnt/inst *(ro,sync) (* 表示任意地址) 下面是一些NFS共享的常用参数: rw: 可读写的权限; ro: 只读的权限; no_root_squash: 登入到NFS主机的用户如果是ROOT用户,他就拥有ROOT的权限root_squash: 在登入 NFS 主机使用目录的使用者如果是 root 时,那么这个使用者的权限 将被压缩成为匿名使用者,通常他的 UID 与 GID 都会变成 nobody 那个身份; all_squash: 不管登陆NFS主机的用户是什么都会被重新设定为nobody. anonuid: 将登入NFS主机的用户都设定成指定的user id,此ID必须存在于/etc/passwd中。 anongid: 同 anonuid ,但是变成 group ID 就是了! sync: 资料同步写入存储器中。 async: 资料会先暂时存放在内存中,不会直接写入硬盘。 insecure 允许从这台机器过来的非授权访问。 4、exportfs -a (到处所以共享的目录) exportfs -rv (相当于重启NFS) 5、showmount -e 127.0.0.1 (查被共享的目录) Export list for 127.0.0.1: /mnt/inst * /home/temp * 6、在客户端输入所需要的共享文件。 mount -t nfs 192.168.111.1:/mnt/inst /mnt (mount服务器上的共享目录) 7、在客户端使用mount命令,就可以看到刚才被mount的文件了。 这样简单的就是实现了文件共享。三、我的NFS的共享文件地址是什么忘记了
NFS网络文件共享服务,是用来共享资源的,我们可以通过vim /etc/exports来定义哪些文件共享,以及共享给谁,我们在根目录下通过命令mkdir test ,并拷贝文件到文件夹里为后面共享作准备,/etc/exports里面的/test是共享目录,*是共享给所有人。我们需要对NFS服务重新启动,通过命令service nfs restart来重启服务,需要提前通过命令yum install nfs*来安装nfs服务,发现重启失败,我们需要通过命令/etc/init.d/rpcbind start,
/etc/init.d/rpcidmapd start,最后我们用命令/etc/init.d/nfs start发现nfs启动成功了。
通过命令chkconfig nfs on 让nfs服务开机时自动启动,通过命令chkconfig –list来确认,发现运行级别2、3、4、5都是开启的,默认业务的运行级别是3和5,所以可以保证开机后服务会自动开启。
通过命令exportfs –v来查看刚刚共享的文件目录/test,可以看到我们把/test文件目录共享给所有人,exportfs是用来维护已经共享的NFS文件系统,exports –v是在服务器端使用查看共享信息的。
客户端使用命令showmount –e 172.1.1.1来查看服务器端共享的NFS文件信息,可以看到远端服务器共享了/test文件目录给所有人,showmount是用来查看远端NFS服务器的挂载信息,通过命令man showmount来查看更多的参数使用方法。
客户端使用命令rpcinfo –p 172.1.1.1来查看服务器端rpc协议的工作状态,nfs底层依赖于portmapper协议,通过rpc可以访问portmapper,其中端口号都是随机的,如果我们通过showmount看不到任何信息输出的时候,需要用rpcinfo来查看底层portmapper是否是正常工作的,如果不正常工作,rpc服务是不正常的。如果rpc是正常的,通过showmount看不到信息是配置有问题。
我们在客户端建立挂载点,同过命令mkdir /mnt/test建立挂载点的目录,通过showmount查看共享信息,用挂载命令mount 172.1.1.1:/test /mnt/test把远端共享目录挂载到本机的/mnt/test下面,进入挂载点/mnt/test用命令ll列出目录,发现现在查看本机的/mnt/test目录就是访问远端的共享目录。使用完共享目录后建议立即卸载,原因是NFS是在kernel层实现的,如果出现挂载失败,需要重启kernel,也就是要重启电脑,非常的麻烦。实用我们用命令umount /mnt/test来卸载挂载点,通过再次进入目录用命令ll来列出目录,发现目录里面没有任何文件,卸载已经成功了。
四、配置nfs共享服务?
nfs 是一种网络文件系统,需要依赖rpc进行过程调度注意nfs只验证id,验证用户名,并且只能在类unix os上进行文件共享服务,由于它的脆弱的验证机制,所以不适宜在internet上工作,在内网使用是非常可行的。