linux服务器搭建_Linux服务器搭建—NFS服务器搭建

什么是NFS服务器

Network File System,可以实现在不同操作系统间彼此共享数据文件功能,配置简单,即:一个简单的文件服务器。

主进程介绍

RPC:Remote Procedure Call,为NFS分配服务端口,主要的服务如下:
① rpc.nfsd
最主要的NFS服务提供程序,判断登录ID,确定是否能够使用服务器文件系统挂载信息
② rpc.mountd
用于管理挂载相关的权限问题,读取配置文件/etc/exports信息,并进行相关设置
③ rpc.lockd
用于管理文件的锁定,处理文件被多个服务器同时访问的问题
④ rpc.statd
用于检查文件的一致性

文件访问权限

NFS本身没有身份验证,实际服务端会以客户端的用户UID,GID等身份尝试读写文件系统。
1. 客户端与服务端有相同的UID与账号
① 客户端登录用户需要在本地新建的目录有对应的权限
② 客户端登录用户在服务器端相关的目录中也有对应权限
满足如上两点,客户端用户才能在挂载目录中执行相关操作;同时读写操作的用户即为客户端UID对应的用户。

2. 客户端使用的账号在服务端不存在
① 在操作时,相关操作的对象会是客户端对应的UID账号
② 若exports文件中添加了all_squash参数,则对应的还有用户会默认转化为nfsnobody,反之则表原有的UID进行文件操作

3. 当客户端的身份为root时
① 需要确定exports配置文件中是否配置了no_root_squash属性值,若设置了,则会使用root用户角色进行操作,反之则会使用nfsnobody角色进行操作,默认为root_squash属性

NFS的相关文件结构

  1. 主要的配置文件
    『/etc/exports』,相关共享目录的设置及权限的设置都在这个文件中
    相关格式为 [共享目录路径] [主机地址/主机名(权限设置)]相关的权限参数有:
    ① rw(读写权限);ro(只读权限)
    ② sync(同步写入内存与硬盘);async(先存储在内存中,不写入硬盘)
    ③ no_root_squash(root用户登录操作时,是否保留root角色权限)
    ④ all_squash(无论登录用户角色为何,默认压缩为nobody用户)
    ⑤ annuid(匿名用户分配的UID值,匿名用户操作时会使用这个ID的相关权限);anngid(匿名用户分配的GID值)
  2. NFS文件系统维护命令
    『/usr/sbin/exportfs』是维护NFS共享资源的指令,用户共享资源的重新共享或卸载,指令格式如下:
    exportfs -arv(全部重新挂载)
    exportfs -auv(全部重新卸载)
  3. 共享资源的日志文件
    『/var/lib/nfs/etab』记录共享目录相关的完整权限设置
    『/var/lib/nfs/xtab』记录曾经链接到此NFS服务器上的客户端的数据
    『/var/log/message』记录服务器在接收到链接请求后的相关记录信息
  4. 客户端查询服务器共享资源的命令
    『/usr/sbin/showmount』用于查询NFS服务器所共享的目录信息及权限信息,具体语法如下:
    showmount -e 服务器ip

NFS服务器的搭建

  1. 相关软件安装
    ① 通过指令『rpm -qa|grep nfs』与『rpm -qa|grep rpcbind』查看是否安装了rpcbind程序与nfs-utils程序
    ② 若未安装相关进程,则使用『yum install nfs-utils』与『yum install rpcbind』即可
[root@localhost home]# rpm -qa|grep nfs
nfs-utils-1.2.3-78.el6.x86_64
nfs4-acl-tools-0.3.3-8.el6.x86_64
nfs-utils-lib-1.1.5-13.el6.x86_64
[root@localhost home]# rpm -qa|grep rpcbind
rpcbind-0.2.0-16.el6.x86_64

2. nfs配置文件 /etc/exports 的配置
① 该文件不一定存在,若不存则手动创建
② 配置内容为相关的共享目录及对应的权限设置信息。

[root@localhost home]# cat /etc/exports
/home 192.168.99.27(insecure,rw)

3. 启动现NFS服务
① 启动rpcbind
② 启动nfs

[root]# service rpcbind start
[root]# service nfs start

4. 查看相关服务是否启动及端口使用情况

[root]# netstat -tulnp| grep -E '(rpc|nfs)'
tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 26760/rpc.mountd
tcp 0 0 0.0.0.0:42337 0.0.0.0:* LISTEN 5435/rp.statd
tcp6 0 0 :::20048 :::* LISTEN 26760/rpc.mountd
tcp6 0 0 :::48068 :::* LISTEN 5435/rp.statd
udp 0 0 0.0.0.0:20048 0.0.0.0:* 26760/rpc.mountd
udp 0 0 0.0.0.0:111 0.0.0.0:* 26714/rpcbind
udp 0 0 127.0.0.1:947 0.0.0.0:* 5435/rp.statd
udp 0 0 0.0.0.0:1023 0.0.0.0:* 26714/rpcbind
udp 0 0 0.0.0.0:42562 0.0.0.0:* 5435/rp.statd
udp6 0 0 :::20048 :::* 26760/rpc.mountd
udp6 0 0 :::111 :::* 26714/rpcbind
udp6 0 0 :::1023 :::* 26714/rpcbind
udp6 0 0 :::43156 :::* 5435/rp.statd

其中可以看出rpcbind启动的端口默认为111,其他服务端口不固定

5. 通过rpcinfo可以查看相关RPC服务的注册情况

[root@oracleTest ~]# rpcinfo -p localhost
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 42562 status
100024 1 tcp 42337 status
100003 4 tcp 2049 nfs
100003 4 udp 2049 nfs
100005 1 udp 20048 mountd
100005 1 tcp 20048 mountd
100005 2 udp 20048 mountd
100005 2 tcp 20048 mountd
100005 3 udp 20048 mountd
100005 3 tcp 20048 mountd
100003 3 tcp 2049 nfs
100227 3 tcp 2049 nfs_acl
100003 3 udp 2049 nfs
100227 3 udp 2049 nfs_acl
……

6. Linux下客户端手动挂载NFS服务器共享资源

# 启动rpcbind服务
[root]# service rpcbind start
[root]# service nfslock start
# 查询服务器给我们提供了哪些资源
[root]# showmount -e 服务器ip
Export list for 192.168.100.254:
/tmp *
……
# 建立挂载点,将查询到的资源进行挂载
[root]# mkdir -p /mnt/nfs/test
[root]# mount -t nfs 192.168.100.254:/tmp /mnt/nfs/test
# -t nfs 表示指定文件系统类型
# 挂载完成后,查看文件系统相关情况
[root]# df
# 若显示相关挂载的信息,则说明挂载成功

7. windows下客户端手动挂载NFS服务器共享资源

① 安装NFS相关组件,进入 控制面板-程序-启动或关闭Windows功能,勾选NFS服务确定,安装启动NFS相关组件

6b034448ec2a5776e33e176dd74e68c3.png

② 与Linux下一样,通过 showmount 指令查看共享的目录
③ 打开CMD,通过相关指令进行共享文件夹的挂载
『mount -t nfs //服务器IP:/共享文件夹 x:/』,其中x:/为本机显示的磁盘名称

在挂载过程中,可以通过添加相关参数限制挂载后的共享文件夹的权限
1. suid/nosuid:默认suid,使用nosuid时,在使用二进制程序时会取消SUID的相关功能
2. rw/ro:默认为rw,客户端在挂载时可以限制文件系统的读写属性
3. dev/nodev:默认为dev,是否保留设备文件的特殊功能,一般只有/dev文件夹才需要选择dev
4. exec/noexec:默认为exec,用户是否具有执行二进制文件的权限,如果是单纯的存储数据目录,则可以选noexec
5. user/nouser:默认为nouser,是否允许用户进行文件的挂载和卸载操作,为了保护系统,最好设置为nouser
6. auto/noauto:默认为auto,会不会被挂载到项目,若不需要随时被挂载,则设为noauto
以上述例子中的挂载点为例,挂载时可以进行如下设置:
mount -t nfs -o nosuid,noexec,nodev,rw 192.168.100.254:/tmp /mnt/nfs/test
其他特殊的挂载参数
fg/bg:默认为fg,该挂载行为在前台还是后台执行
soft/hard:默认为hard,若为hard,则两者之间任意一台脱机后,RPC会持续的呼叫,知道恢复连接,若为soft,则RPC会在time out后重复呼叫,并不是持续呼叫,若服务器时常开关,建议用soft
intr:在hard参数的情况下,若加上intr则表示本次呼叫可以中断
rsize/wsize:默认值都为1024,读写区块的大小设置,这个设置会影响数据的传输速度,若网络状况良好(局域网),建议提升该值大小
以上述例子可以改进相关挂载语句如下:
mount -t nfs -o nosuid,noexec,nodev,rw -o bg,soft,resize=32768,wsize=32768 192.168.100.254:/tmp /mnt/nfs/test

8. 如何实现开机自动挂载

不同于本地磁盘的挂载,NFS的开机挂载需要修改 /etc/rc.d/rc.local

[root]# vim /etc/rc.d/rc.local
# 在此文件中添加挂载语句即可
mount -t nfs -o nosuid,noexec,nodev,rw -o bg,soft,resize=32768,wsize=32768192.168.100.254:/tmp /mnt/nfs/test

服务器搭建过程中的问题

  1. 配置文件配置有误,注意exports文件的格式要求
若在挂载中出现如下提示:
mount.nfs:access denied by server while mounting ……
说明配置文件中IP存在问题,或者挂载语句中盘符有问题

2. 防火墙问题

该问题是最常见问题,确保防火墙开放了NFS相关端口,但在实际过程中,NFS端口是不固定的,所以需要通过编辑 /etc/sysconfig/nfs 文件来固定NFS端口

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值