Linux_Service—NFS

来源:互联网 发布:tensorflow finetune 编辑:程序博客网 时间:2024/05/24 05:02

NFS服务

NFS简介

什么是NFS:

NFS(Network File System,网络文件系统),它允许网络中的计算机之间通过TCP/IP网络共享资源。NFS可以让客户端把服务器的共享目录挂载到本机使用,就像使用本地计算机的分区一样。

RPC服务:

RPC(远程调用)服务:NFS是被RPC服务管理的,所以必须按照RPC的主程序rpcbind

NFS端口:

NFS端口:2049

RPC端口:111

NFS daemon端口:随机

NFS与其他文件共享服务(FTP/Samba/NFS)对比:


NFS权限说明

权限说明

Linux系统目录权限会生效

NFS服务共享权限也会生效

用户身份映射(系统权限)

NFS没有用户登陆认证机制,所以客户端登陆到服务器之后,会把客户端的身份映射到服务器端。可能会出现一下四种可能:

1.Client和Server上刚好有相同的账号和用户组(用户名和UID都要相同);

Client上用户可以做Server上按照用户权限使用文件

2.当Client和Server上拥有相同的UID,但是用户名不同;

假设Client上有用户a(UID:500),Server上有用户b(UID:500)。在Client使用Server共享目录时,身份识别为b(因为Linux权限绑定在UID上)

(此种情况尽量避免出现,容易逻辑混乱)

3.Server上没有Client的UID;

Client用户访问Server时,Server上没有此UID,则把此用户自动转变为nfsnobody(UID:65534)用户(NFS的匿名用户)

4.Client上是root使用共享

默认把root也转变呢为nfsnobody。服务器端可以修改配置文件,允许root访问nfs服务器

NFS服务器端设置

服务端安装

默认已经安装,如果需要,手工安装

NFS主程序:nfs-utils

RPC主程序:rpcbind(旧版本portmap)

配置文件

/etc/exports(此文件为空)

启动NFS服务

启动NFS服务

[root@TestServer ~]# /etc/init.d/rpcbind restart停止 rpcbind:                                             [确定]正在启动 rpcbind:                                         [确定][root@TestServer ~]# /etc/init.d/nfs restart关闭 NFS 守护进程:                                        [失败]关闭 NFS mountd:                                          [失败]关闭 NFS quotas:                                          [失败]启动 NFS 服务:                                            [确定]关掉 NFS 配额:                                            [确定]启动 NFS mountd:                                          [确定]启动 NFS 守护进程:                                        [确定]正在启动 RPC idmapd:                                      [确定]

设置NFS为自启动服务

[root@TestServer ~]# chkconfig --list | grep nfsnfs            0:关闭1:关闭2:关闭3:关闭4:关闭5:关闭6:关闭nfslock        0:关闭1:关闭2:关闭3:启用4:启用5:启用6:关闭[root@TestServer ~]# chkconfig nfs on[root@TestServer ~]# chkconfig --list | grep nfsnfs            0:关闭1:关闭2:启用3:启用4:启用5:启用6:关闭nfslock        0:关闭1:关闭2:关闭3:启用4:启用5:启用6:关闭

NFS|RPC的守护进程

[root@TestServer ~]# ps aux | grep -E 'nfs|rpc'rpcuser  38139  0.0  0.1  23352  1380 ?        Ss   04:54   0:00 rpc.statdroot     38597  0.0  0.0      0     0 ?        S    05:11   0:00 [rpciod/0]rpc      38887  0.0  0.0  18980   948 ?        Ss   05:15   0:00 rpcbindroot     38967  0.0  0.0 107304   280 ?        Ss   05:15   0:00 rpc.rquotadroot     38971  0.0  0.1  21672  1032 ?        Ss   05:15   0:00 rpc.mountdroot     38977  0.0  0.0      0     0 ?        S    05:15   0:00 [nfsd4]root     38978  0.0  0.0      0     0 ?        S    05:15   0:00 [nfsd4_callbacks]root     38979  0.0  0.0      0     0 ?        S    05:15   0:00 [nfsd]root     38980  0.0  0.0      0     0 ?        S    05:15   0:00 [nfsd]root     38981  0.0  0.0      0     0 ?        S    05:15   0:00 [nfsd]root     38982  0.0  0.0      0     0 ?        S    05:15   0:00 [nfsd]root     38983  0.0  0.0      0     0 ?        S    05:15   0:00 [nfsd]root     38984  0.0  0.0      0     0 ?        S    05:15   0:00 [nfsd]root     38985  0.0  0.0      0     0 ?        S    05:15   0:00 [nfsd]root     38986  0.0  0.0      0     0 ?        S    05:15   0:00 [nfsd]root     39009  0.0  0.0  25164   576 ?        Ss   05:15   0:00 rpc.idmapdroot     39037  0.0  0.0 103256   844 pts/1    S+   05:21   0:00 grep -E nfs|rpc

rpc.rquotad /*NFS配额*/

rpc.mountd /*处理客户端挂载*/

nfsd /*NFS守护进程*/

rpcbind /*RPC守护进程*/

RPC服务注册情况

[root@TestServer ~]# rpcinfo -p   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    100011    1   udp    875  rquotad    100011    2   udp    875  rquotad    100011    1   tcp    875  rquotad    100011    2   tcp    875  rquotad    100005    1   udp  39825  mountd    100005    1   tcp  60867  mountd    100005    2   udp  57691  mountd    100005    2   tcp  60811  mountd    100005    3   udp  54603  mountd    100005    3   tcp  33591  mountd    100003    2   tcp   2049  nfs    100003    3   tcp   2049  nfs    100003    4   tcp   2049  nfs    100227    2   tcp   2049  nfs_acl    100227    3   tcp   2049  nfs_acl    100003    2   udp   2049  nfs    100003    3   udp   2049  nfs    100003    4   udp   2049  nfs    100227    2   udp   2049  nfs_acl    100227    3   udp   2049  nfs_acl    100021    1   udp  35105  nlockmgr    100021    3   udp  35105  nlockmgr    100021    4   udp  35105  nlockmgr    100021    1   tcp  50624  nlockmgr    100021    3   tcp  50624  nlockmgr    100021    4   tcp  50624  nlockmgr

NFS服务端配置文件

配置文件:

/etc/exports

格式:共享目录    客户端(权限)

可识别的客户端格式:
指定IP:192.168.1.10
指定网段:192.168.1.0/24 或 192.168.1.0/255.255.255.0
指定主机名:www.itxdl.cn

所有主机:*

常用权限:

rw /*读写*/

ro /*只读*/

all_squash /*不论登陆是谁,都压缩为匿名用户nfsnobody*/

root_squash /*如果登陆的是root,压缩为nfsnobody*/

no_root_squash /*允许root身份登陆,不推荐*/

anonuid /*把所有的登陆用户,不再压缩为nfsnobody用户,而是压缩为指定uid用户*/

sync /*将数据同步写入内存缓冲区与磁盘中,效率低,但可保证数据的一致性*/

async /*将数据先保存在内存缓冲区中,必要时才写入磁盘*/

例:

[root@TestServer /]# vi /etc/exports

/nfsshare 192.168.1.104(rw,no_root_requash)/*允许192.168.1.104可以访问,允许root访问*/

同时共享多个目录

/nfsshare 192.168.1.105(rw,no_root_squash) *(ro)/*除192.168.1.105为读写权限,允许root访问;其他人为只读*/
/NFSshare 192.168.1.0/24(rw) /*192.168.1网络中的所有主机为读写权限*/

匿名用户访问

/nfsshare 192.168.1.0/24(rw,all_squash,anonuid=600)/*192.168.1网络的中的主机无论谁登陆,都使用UID为600的用户*/

exportfs  [选项]

选项:

-a /*按照配置文件挂载/卸载所有目录*/

-r /*重新挂载*/

-u /*卸载*/

-v /*显示详细信息*/

例:exportfs -arv /*重新挂载所有目录,不用重启NFS服务*/

exportfs -auv /*全部卸载所有目录*/

showmount查看共享目录

showmount -e [IP或主机名]

选项:

-e/*查看某个主机的共享目录*/

[root@TestServer /]# showmount -e 127.0.0.1Export list for 127.0.0.1:/nfsshare 192.168.1.0/24
(127.0.0.1是本地回环地址,一般用于网络测试)

NFS客户端使用

客户端需要启动的服务

需要启动rpcbind,默认已经启动

手工启动命令

service rpcbind start/etc/init.d/rpcbind start

查看服务端共享的目录

[root@JinDaoer ~]# showmount -e 192.168.1.103Export list for 192.168.1.103:/nfsshare 192.168.1.0/24

把服务器共享目录挂载到本地

建立共享目录挂载点

[root@JinDaoer ~]# mkdir /mnt/remoteshare
挂载到本地使用

[root@JinDaoer ~]# mount -t nfs 192.168.1.103:/nfsshare /mnt/remoteshare/
查看挂载信息

[root@JinDaoer ~]# mount/dev/sda2 on / type ext4 (rw)proc on /proc type proc (rw)sysfs on /sys type sysfs (rw)devpts on /dev/pts type devpts (rw,gid=5,mode=620)tmpfs on /dev/shm type tmpfs (rw)/dev/sda1 on /boot type ext4 (rw)none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)192.168.1.103:/nfsshare on /mnt/remoteshare type nfs (rw,vers=4,addr=192.168.1.103,clientaddr=192.168.1.105)
开机自动挂载

[root@JinDaoer remoteshare]# vi /etc/fstab ## /etc/fstab# Created by anaconda on Mon Feb 13 21:14:45 2017## Accessible filesystems, by reference, are maintained under '/dev/disk'# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info#UUID=b6ea8758-dff3-41fb-bf05-050e3e2f930a /                       ext4    defaults        1 1UUID=06877cfa-8fb6-40ca-a9f9-94e160f57995 /boot                   ext4    defaults        1 2tmpfs                   /dev/shm                tmpfs   defaults        0 0devpts                  /dev/pts                devpts  gid=5,mode=620  0 0sysfs                   /sys                    sysfs   defaults        0 0proc                    /proc                   proc    defaults        0 0192.168.1.103:/nfsshare /mnt/remoteshare        nfs     defaults        0 0
测试自动挂载是否成功

卸载NFS共享目录

[root@JinDaoer mnt]# umount /mnt/remoteshare/[root@JinDaoer mnt]# mount/dev/sda2 on / type ext4 (rw)proc on /proc type proc (rw)sysfs on /sys type sysfs (rw)devpts on /dev/pts type devpts (rw,gid=5,mode=620)tmpfs on /dev/shm type tmpfs (rw)/dev/sda1 on /boot type ext4 (rw)none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
使用mount -a重新读取/etc/fstab文件,自动挂载

[root@JinDaoer mnt]# mount -a[root@JinDaoer mnt]# mount/dev/sda2 on / type ext4 (rw)proc on /proc type proc (rw)sysfs on /sys type sysfs (rw)devpts on /dev/pts type devpts (rw,gid=5,mode=620)tmpfs on /dev/shm type tmpfs (rw)/dev/sda1 on /boot type ext4 (rw)none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)192.168.1.103:/nfsshare on /mnt/remoteshare type nfs (rw,vers=4,addr=192.168.1.103,clientaddr=192.168.1.105
(说明/etc/fstab文件配置正确,自动挂载成功)


0 0
原创粉丝点击