Linux下NFS设定方法

Posted firsttry

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下NFS设定方法相关的知识,希望对你有一定的参考价值。

NFS是Linux/Unix间文件共享的一种简单有效的方法,也是Kubernetes支持的文件存储方式之一。在这篇文章中我们将会详细介绍如何在CentOS7上进行NFS设定。

前提事项

由于不同发行版本的Linux或者Unix会略有不同的可能性,为方便起见,本文中NFS服务器和Client均使用CentOS。

机器用途HostnameIP
NFS服务器 k8s-1 192.168.174.131
NFS客户端 k8s-2 192.168.174.132

软件安装、

NFS服务器详细信息

[root@ku8-1 ~]# uname -a
Linux ku8-1 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
[root@ku8-1 ~]#
  • 1
  • 2
  • 3

rpcbind和nfs-utils

NFS服务器需要安装rpcbind和nfs-utils。

软件版本
rpcbind rpcbind-0.2.0-38.el7.x86_64
nfs-utils nfs-utils-1.3.0-0.33.el7_3.x86_64
[root@ku8-1 ~]# rpm -qa |grep rpcbind
rpcbind-0.2.0-38.el7.x86_64
[root@ku8-1 ~]# 
[root@ku8-1 ~]# rpm -qa |grep nfs-utils
nfs-utils-1.3.0-0.33.el7_3.x86_64
[root@ku8-1 ~]# 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

如果没有安装,用如下命令安装即可

yum install -y rpcbind nfs-utils
  • 1

Client设定

Client端需要安装nfs-utlis,如果没有安装,用如下命令安装即可

yum install -y nfs-utils
  • 1

服务器设定

启动rpcbind服务

···
systemctl start rpcbind
systemctl status rpcbind
···

启动nfs服务

systemctl start nfs
systemctl status nfs
  • 1
  • 2
[[email protected]1 ~]# systemctl start nfs
[[email protected]1 ~]# systemctl status nfs
● nfs-server.service - NFS server and services
   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; vendor preset: disabled)
   Active: active (exited) since Tue 2017-05-02 08:28:24 EDT; 8s ago
  Process: 1436 ExecStopPost=/usr/sbin/exportfs -f (code=exited, status=0/SUCCESS)
  Process: 1433 ExecStopPost=/usr/sbin/exportfs -au (code=exited, status=0/SUCCESS)
  Process: 1432 ExecStop=/usr/sbin/rpc.nfsd 0 (code=exited, status=0/SUCCESS)
  Process: 2250 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS)
  Process: 2249 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
 Main PID: 2250 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/nfs-server.service

May 02 08:28:24 ku8-1 systemd[1]: Starting NFS server and ser....
May 02 08:28:24 ku8-1 systemd[1]: Started NFS server and serv....
Hint: Some lines were ellipsized, use -l to show in full.
[[email protected]1 ~]# 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

相关文件和命令

文件名说明
/etc/exports NFS设定文件,NFS服务器端需要设定的内容,其作用是设定Who拥有什么样的权限去访问此机器的哪个目录
/var/lib/nfs/etab 无需设定,用于纪录NFS服务器完整的权限设定,exports中没有设定的缺省值也会被列出
/var/lib/nfs/xtab 纪录NFS连接的相关信息
/usr/sbin/exportfs NFS设定管理命令,用于Server侧设定,通过此条命令使得exports的设定变得有效或者无效
/usr/sbin/showmount 用于显示NFS设定的相关信息,Server端和Client端均可。

设定exports文件

选项说明
设定文件 /etc/exports
设定格式 共享目录 客户端IP或机器名(权限) …
[root@ku8-1 ~]# cat /etc/exports
/tmp/serverdir 192.168.174.132(rw,sync,no_root_squash) 192.168.174.133(ro,sync,no_root_squash)
[root@ku8-1 ~]# mkdir -p /tmp/serverdir
[root@ku8-1 ~]# echo "hello" >/tmp/serverdir/helloworld
[root@ku8-1 ~]# ll /tmp/serverdir/
total 4
-rw-r--r--. 1 root root 6 May  2 08:37 helloworld
[root@ku8-1 ~]# 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

权限选项说明

选项说明
rw read-write,可读写;
ro read-only,只读;
sync 文件同时写入硬盘和内存;
async 文件暂存于内存,而不是直接写入内存;
no_root_squash NFS客户端root用户可具有root权限。
root_squash NFS客户端root用户也只是具有nobody或nfsnobody权限
all_squash NFS客户端均只是拥有匿名用户权限
anonuid 匿名用户的UID值。
anongid 匿名用户的GID值。

exportfs

使用exportfs命令使得修改后的exports文件起效,使用exportfs不用重启nfs服务。

步骤执行命令
Step 1 exportfs
Step 2 showmount -e localhost

Client侧安装

yum install nfs-utils
  • 1

Client端验证

只读挂载

因为权限是ro,只读权限,所以touch命令不可以正常执行,执行的时候提示“Read-only file system”。

[root@ku8-3 ~]# showmount -e 192.168.174.131
Export list for 192.168.174.131:
/tmp/serverdir 192.168.174.133,192.168.174.132
[root@ku8-3 ~]# 
[root@ku8-3 ~]# ip addr |grep 192
    inet 192.168.174.133/24 brd 192.168.174.255 scope global ens33
[root@ku8-3 ~]# 
[root@ku8-3 ~]# mount -t nfs 192.168.174.131:/tmp/serverdir /tmp/client2
[root@ku8-3 ~]# cd /tmp/client2
[root@ku8-3 client2]# ls
helloworld
[root@ku8-3 client2]# cat helloworld 
hello
[root@ku8-3 client2]# touch ttt
touch: cannot touch ‘ttt’: Read-only file system
[root@ku8-3 client2]# 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

可读写挂载

因为权限是rw,所以touch命令也可以正常执行。

[root@ku8-2 ~]# mkdir -p /tmp/client
[root@ku8-2 ~]# mount -t nfs 192.168.174.131:/tmp/serverdir /tmp/client
[root@ku8-2 ~]# cd /tmp/client/
[root@ku8-2 client]# df .
Filesystem                     1K-blocks    Used Available Use% Mounted on
192.168.174.131:/tmp/serverdir  17811456 2549888  15261568  15% /tmp/client
[root@ku8-2 client]# ls
helloworld
[root@ku8-2 client]# cat helloworld 
hello
[root@ku8-2 client]# touch ttt
[root@ku8-2 client]# ls
helloworld  ttt
[root@ku8-2 client]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

Server端确认

[root@ku8-1 ~]# cd /tmp/serverdir
[root@ku8-1 serverdir]# ls
helloworld  ttt
[root@ku8-1 serverdir]# 
  • 1
  • 2
  • 3
  • 4

另外一个Client端确认

[root@ku8-3 client2]# pwd
/tmp/client2
[root@ku8-3 client2]# ls 
helloworld  ttt
[root@ku8-3 client2]# 
  • 1
  • 2
  • 3
  • 4
  • 5

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow




以上是关于Linux下NFS设定方法的主要内容,如果未能解决你的问题,请参考以下文章

Linux下搭建NFS服务器

Samba和NFS的迁移方法

Samba和NFS的迁移方法

linux怎么挂载NFS?

Linux基础服务下NFS文件服务器实战必备

Linux下的NFS服务