NFS部署教程

环境部署

一、服务端

查看系统信息
[root@script ~]# cat /etc/centos-release 
CentOS release 6.8 (Final)
[root@script ~]# uname -r
2.6.32-642.el6.x86_64
[root@script ~]# uname -m
x86_64
查看nfs软件包
[root@script ~]# rpm -qa nfs-utils rpcbind
rpcbind-0.2.0-16.el6.x86_64
[root@script ~]# cat /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
# yum下载缓存,后续每次下载软件包将放至cachedir对象目录
keepcache=1
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=19&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release

#  This is the default, if you make this bigger yum won't see if the metadata
# is newer on the remote and so you'll "gain" the bandwidth of not having to
# download the new metadata and "pay" for it by yum not having correct
# information.
#  It is esp. important, to have correct metadata, for distributions like
# Fedora which don't keep old packages around. If you don't like this checking
# interupting your command line usage, it's much better to have something
# manually check the metadata once an hour (yum-updatesd will do this).
# metadata_expire=90m

# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d

安装nfs
[root@script ~]# yum install -y nfs-utils rpcbind
设置安装进程
包 rpcbind-0.2.0-16.el6.x86_64 已安装并且是最新版本
解决依赖关系
--> 执行事务检查
---> Package nfs-utils.x86_64 1:1.2.3-78.el6_10.2 will be 安装
--> 处理依赖关系 nfs-utils-lib >= 1.1.0-3,它被软件包 1:nfs-utils-1.2.3-78.el6_10.2.x86_64 需要
--> 处理依赖关系 keyutils >= 1.4-4,它被软件包 1:nfs-utils-1.2.3-78.el6_10.2.x86_64 需要
--> 处理依赖关系 python-argparse,它被软件包 1:nfs-utils-1.2.3-78.el6_10.2.x86_64 需要
--> 处理依赖关系 libevent,它被软件包 1:nfs-utils-1.2.3-78.el6_10.2.x86_64 需要
--> 处理依赖关系 libnfsidmap.so.0()(64bit),它被软件包 1:nfs-utils-1.2.3-78.el6_10.2.x86_64 需要
--> 处理依赖关系 libevent-1.4.so.2()(64bit),它被软件包 1:nfs-utils-1.2.3-78.el6_10.2.x86_64 需要
--> 执行事务检查
---> Package keyutils.x86_64 0:1.4-5.el6 will be 安装
---> Package libevent.x86_64 0:1.4.13-4.el6 will be 安装
---> Package nfs-utils-lib.x86_64 0:1.1.5-13.el6 will be 安装
---> Package python-argparse.noarch 0:1.2.1-2.1.el6 will be 安装
--> 完成依赖关系计算

依赖关系解决

============================================================================================================================================================================
 软件包                                      架构                               版本                                              仓库                                 大小
============================================================================================================================================================================
正在安装:
 nfs-utils                                   x86_64                             1:1.2.3-78.el6_10.2                               updates                             337 k
为依赖而安装:
 keyutils                                    x86_64                             1.4-5.el6                                         base                                 39 k
 libevent                                    x86_64                             1.4.13-4.el6                                      base                                 66 k
 nfs-utils-lib                               x86_64                             1.1.5-13.el6                                      base                                 71 k
 python-argparse                             noarch                             1.2.1-2.1.el6                                     base                                 48 k

事务概要
============================================================================================================================================================================
Install       5 Package(s)

总下载量:560 k
Installed size: 1.6 M
下载软件包:
(1/5): keyutils-1.4-5.el6.x86_64.rpm                                                                                                                 |  39 kB     00:00     
(2/5): libevent-1.4.13-4.el6.x86_64.rpm                                                                                                              |  66 kB     00:00     
(3/5): nfs-utils-1.2.3-78.el6_10.2.x86_64.rpm                                                                                                        | 337 kB     00:00     
(4/5): nfs-utils-lib-1.1.5-13.el6.x86_64.rpm                                                                                                         |  71 kB     00:00     
(5/5): python-argparse-1.2.1-2.1.el6.noarch.rpm                                                                                                      |  48 kB     00:00     
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
总计                                                                                                                                        389 kB/s | 560 kB     00:01     
运行 rpm_check_debug 
执行事务测试
事务测试成功
执行事务
  正在安装   : python-argparse-1.2.1-2.1.el6.noarch                                                                                                                     1/5 
  正在安装   : libevent-1.4.13-4.el6.x86_64                                                                                                                             2/5 
  正在安装   : keyutils-1.4-5.el6.x86_64                                                                                                                                3/5 
  正在安装   : nfs-utils-lib-1.1.5-13.el6.x86_64                                                                                                                        4/5 
  正在安装   : 1:nfs-utils-1.2.3-78.el6_10.2.x86_64                                                                                                                     5/5 
  Verifying  : keyutils-1.4-5.el6.x86_64                                                                                                                                1/5 
  Verifying  : libevent-1.4.13-4.el6.x86_64                                                                                                                             2/5 
  Verifying  : 1:nfs-utils-1.2.3-78.el6_10.2.x86_64                                                                                                                     3/5 
  Verifying  : python-argparse-1.2.1-2.1.el6.noarch                                                                                                                     4/5 
  Verifying  : nfs-utils-lib-1.1.5-13.el6.x86_64                                                                                                                        5/5 

已安装:
  nfs-utils.x86_64 1:1.2.3-78.el6_10.2                                                                                                                                      

作为依赖被安装:
  keyutils.x86_64 0:1.4-5.el6          libevent.x86_64 0:1.4.13-4.el6          nfs-utils-lib.x86_64 0:1.1.5-13.el6          python-argparse.noarch 0:1.2.1-2.1.el6         

完毕!
[root@script packages]# rpm -qa rpcbind nfs-utils
nfs-utils-1.2.3-78.el6_10.2.x86_64
rpcbind-0.2.0-16.el6.x86_64
启动nfs
[root@script packages]# service rpcbind start
[root@script packages]# service nfs start
启动 NFS 服务:                                            [确定]
启动 NFS mountd:                                          [确定]
启动 NFS 守护进程:                                        [确定]
正在启动 RPC idmapd:                                      [确定]

[root@script packages]# netstat -tlanp | grep rpcbind
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      1247/rpcbind        
tcp        0      0 :::111                      :::*                        LISTEN      1247/rpcbind     
[root@script packages]# 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
[root@script packages]# service nfs start
启动 NFS 服务:                                            [确定]
启动 NFS mountd:                                          [确定]
启动 NFS 守护进程:                                        [确定]
正在启动 RPC idmapd:                                      [确定]
[root@script packages]# 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
    100005    1   udp  32970  mountd
    100005    1   tcp  46332  mountd
    100005    2   udp  42737  mountd
    100005    2   tcp  43631  mountd
    100005    3   udp  55166  mountd
    100005    3   tcp  35124  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  37329  nlockmgr
    100021    3   udp  37329  nlockmgr
    100021    4   udp  37329  nlockmgr
    100021    1   tcp  45609  nlockmgr
    100021    3   tcp  45609  nlockmgr
    100021    4   tcp  45609  nlockmgr
[root@script ~]# chkconfig rpcbind on 
[root@script ~]# chkconfig nfs on 
[root@script ~]# ls /etc/rc.d/rc3.d/|grep -E "nfs|rpc"
K61nfs-rdma
K69rpcsvcgssd
S13rpcbind
S14nfslock
S19rpcgssd
S30nfs
共享目录配置
[root@nfs01 ~]# mkdir /data
[root@nfs01 ~]# chmod -R 777 /data/
[root@nfs01 ~]# ll -d /data/
drwxrwxrwx 2 root root 24576 6月  22 00:26 /data/
# 这里暂时共享/data目录
[root@nfs01 ~]# cat /etc/exports 
/data 172.16.1.0/24(rw,sync)
[root@nfs01 ~]# exportfs -a
查看nfs进程
[root@script ~]# ps -ef |egrep "rpc|nfs"
rpc        1247      1  0 05:48 ?        00:00:00 rpcbind
root       2039      2  0 06:48 ?        00:00:00 [rpciod/0]
root       2040      2  0 06:48 ?        00:00:00 [rpciod/1]
root       2041      2  0 06:48 ?        00:00:00 [rpciod/2]
root       2042      2  0 06:48 ?        00:00:00 [rpciod/3]
root       2229      1  0 06:52 ?        00:00:00 rpc.mountd  #<==权限管理验证等
root       2236      2  0 06:52 ?        00:00:00 [nfsd4]
root       2237      2  0 06:52 ?        00:00:00 [nfsd4_callbacks]
root       2238      2  0 06:52 ?        00:00:00 [nfsd]
root       2239      2  0 06:52 ?        00:00:00 [nfsd] #<==NFS主进程
root       2240      2  0 06:52 ?        00:00:00 [nfsd]
root       2241      2  0 06:52 ?        00:00:00 [nfsd]
root       2242      2  0 06:52 ?        00:00:00 [nfsd]
root       2243      2  0 06:52 ?        00:00:00 [nfsd]
root       2244      2  0 06:52 ?        00:00:00 [nfsd]
root       2245      2  0 06:52 ?        00:00:00 [nfsd]
root       2276      1  0 06:52 ?        00:00:00 rpc.idmapd
root       2304   1535  5 07:11 pts/0    00:00:00 egrep rpc|nfs
nfs服务启动进程说明
nfsd(rpc.nfsd)  rpc.nfsd的主要功能是管理NFS客户端是否能够登入NFS服务端主机,其中还包含登入者的ID判别等
mountd(rpc.mountd)  rpc.mountd的主要功能则是管理NFS文件系统。当NFS客户端顺利通过rpc.nfsd登入NFS服务端主机时,在使用NFS服务器提供数据之前,它会去读NFS的配置文件/etc/exports来比对NFS客户端的权限,通过这一关之后,还会经过NFS服务端本地文件系统使用权限(就是owner、group、other权限)的认证程序。如果都通过了,NFS客户端就可以取得使用NFS服务器端文件的权限。注意,这个/etc/exports文件也是我们用来管理NFS共享目录的使用权限与安全设置的地方,特别强调,NFS本身设置的是网络共享权限,整个共享目录的权限还和目录自身的系统权限有关。
rpc.lockd(非必要)  可以来锁定文件,用于多客户端同时写入。
rpc.statd(非必要)  检查文件的一致性,与rpc.lockd有关。c、d两个服务需要客户端服务器端同时开启才可以;rpc.statd:监听来自其它主机重启的通知,并且管理本地系统重启时主机列表。
rpc.idmapd	名字映射后台进程。

二、客户端

安装nfs工具
[root@k8s-master1 ~]#  yum install -y nfs-utils rpcbind
已加载插件:fastestmirror
base                                                                                                                                                 | 3.6 kB  00:00:00     
docker-ce-stable                                                                                                                                     | 3.5 kB  00:00:00     
epel                                                                                                                                                 | 4.7 kB  00:00:00     
extras                                                                                                                                               | 2.9 kB  00:00:00     
updates                                                                                                                                              | 2.9 kB  00:00:00     
(1/6): epel/x86_64/group_gz                                                                                                                          |  96 kB  00:00:00     
(2/6): epel/x86_64/updateinfo                                                                                                                        | 1.0 MB  00:00:00     
(3/6): extras/7/x86_64/primary_db                                                                                                                    | 242 kB  00:00:00     
(4/6): epel/x86_64/primary_db                                                                                                                        | 6.9 MB  00:00:03     
(5/6): updates/7/x86_64/primary_db                                                                                                                   | 8.8 MB  00:00:05     
(6/6): docker-ce-stable/7/x86_64/primary_db                                                                                                          |  62 kB  00:00:08     
Determining fastest mirrors
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
软件包 1:nfs-utils-1.3.0-0.68.el7.x86_64 已安装并且是最新版本
软件包 rpcbind-0.2.0-49.el7.x86_64 已安装并且是最新版本
无须任何处理

验证服务端共享目录

[root@backup ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24

nfs服务知识梳理

当多个nfs客户端访问服务端的读写文件时,需要具备一下几个权限:

  • nfs服务器/etc/exports设置需要开放可写入的权限,即服务端的共享权限
  • NFS服务器实际要共享的NFS目录权限具有可写入w的权限,即服务端本地目录的安全权限。
  • 每台机器都对应存在和NFS默认配置UID的相同UID65534的nfsnobody用户(确保所有客户端的访问权限统一,否则每个机器需要同时建立相同UID的用户,并覆盖NFS的默认用户配置)
只有满足上述三个条件,多个NFS客户端才能具有查看、修改、删除其他任意NFS客户端上传文件的权限,这在大规模的集群环境中作为集群共享存储时尤为重要。

nfs挂载参数详解

可通过man nfs查看若干参数
如果追求传输效果,可以使用如下参数
[root@backup ~]# mount -t nfs -o fg,hard,intr 172.16.1.31:/data /mnt
[root@backup ~]# df -Th
Filesystem        Type   Size  Used Avail Use% Mounted on
/dev/sda2         ext4    29G  1.2G   27G   5% /
tmpfs             tmpfs  931M     0  931M   0% /dev/shm
/dev/sda1         ext4   380M   36M  324M  10% /boot
172.16.1.31:/data nfs     29G  1.2G   27G   5% /mnt
[root@backup ~]# cat /proc/mounts 
rootfs / rootfs rw 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
devtmpfs /dev devtmpfs rw,relatime,size=940540k,nr_inodes=235135,mode=755 0 0
devpts /dev/pts devpts rw,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /dev/shm tmpfs rw,relatime 0 0
/dev/sda2 / ext4 rw,relatime,barrier=1,data=ordered 0 0
/proc/bus/usb /proc/bus/usb usbfs rw,relatime 0 0
/dev/sda1 /boot ext4 rw,relatime,barrier=1,data=ordered 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw,relatime 0 0
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw,relatime 0 0
172.16.1.31:/data/ /mnt nfs4 rw,relatime,vers=4,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=172.16.1.41,minorversion=0,local_lock=none,addr=172.16.1.31 0 0
如果考虑简单、易用则使用如下参数
[root@backup ~]# mount -t nfs 172.16.1.31:/data /mnt
[root@backup ~]# df -Th
Filesystem        Type   Size  Used Avail Use% Mounted on
/dev/sda2         ext4    29G  1.2G   27G   5% /
tmpfs             tmpfs  931M     0  931M   0% /dev/shm
/dev/sda1         ext4   380M   36M  324M  10% /boot
172.16.1.31:/data nfs     29G  1.2G   27G   5% /mnt
服务端
[root@nfs01 ~]# cat /var/lib/nfs/etab 
/data	172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534,sec=sys,rw,root_squash,no_all_squash)
客户端
[root@backup ~]# cat /proc/mounts 
rootfs / rootfs rw 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
devtmpfs /dev devtmpfs rw,relatime,size=940540k,nr_inodes=235135,mode=755 0 0
devpts /dev/pts devpts rw,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /dev/shm tmpfs rw,relatime 0 0
/dev/sda2 / ext4 rw,relatime,barrier=1,data=ordered 0 0
/proc/bus/usb /proc/bus/usb usbfs rw,relatime 0 0
/dev/sda1 /boot ext4 rw,relatime,barrier=1,data=ordered 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw,relatime 0 0
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw,relatime 0 0
172.16.1.31:/data/ /mnt nfs4 rw,relatime,vers=4,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=172.16.1.41,minorversion=0,local_lock=none,addr=172.16.1.31 0 0
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NFS(Network File System)是一种分布式文件系统,可以在网络上共享文件和目录。NFS 通常用于在多台计算机之间共享文件。要在 Linux 系统上部署 NFS,需要按照以下步骤进行操作: 1. 安装 NFS 服务器 在 Linux 系统上,可以通过管理器安装 NFS 服务器。例如,在 Ubuntu 系统上,可以使用以下命令安装 NFS 服务器: ``` sudo apt-get install nfs-kernel-server ``` 2. 创建共享目录 在 NFS 服务器上创建共享目录。例如,可以在 /mnt 目录下创建一个共享目录: ``` sudo mkdir /mnt/nfs_share ``` 3. 配置 NFS 服务器 打开 /etc/exports 文件,添加共享目录的配置信息: ``` sudo vi /etc/exports ``` 在文件末尾添加以下内容: ``` /mnt/nfs_share 192.168.1.0/24(rw,sync,no_subtree_check) ``` 其中,/mnt/nfs_share 是共享目录的路径,192.168.1.0/24 是允许访问 NFS 共享的 IP 地址或地址段,rw 表示读写权限,sync 表示同步写入,no_subtree_check 表示不检查子树。 4. 重启 NFS 服务器 修改完配置文件后,需要重启 NFS 服务器: ``` sudo systemctl restart nfs-kernel-server ``` 5. 在客户端挂载 NFS 共享目录 在客户端上挂载 NFS 共享目录: ``` sudo mount -t nfs 192.168.1.100:/mnt/nfs_share /mnt/local_share ``` 其中,192.168.1.100 是 NFS 服务器的 IP 地址,/mnt/nfs_share 是共享目录的路径,/mnt/local_share 是本地挂载的目录。 现在,客户端就可以使用 /mnt/local_share 目录访问 NFS 服务器上的共享目录了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值