Linux下NFS设定方法

xiaoxiao2021-02-27  447

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

前提事项

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

机器用途HostnameIPNFS服务器k8s-1192.168.174.131NFS客户端k8s-2192.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 ~]#

rpcbind和nfs-utils

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

软件版本rpcbindrpcbind-0.2.0-38.el7.x86_64nfs-utilsnfs-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 ~]#

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

yum install -y rpcbind nfs-utils

Client设定

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

yum install -y nfs-utils

服务器设定

启动rpcbind服务

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

启动nfs服务

systemctl start nfs systemctl status nfs [root@ku8-1 ~]# systemctl start nfs [root@ku8-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. [root@ku8-1 ~]#

相关文件和命令

文件名说明/etc/exportsNFS设定文件,NFS服务器端需要设定的内容,其作用是设定Who拥有什么样的权限去访问此机器的哪个目录/var/lib/nfs/etab无需设定,用于纪录NFS服务器完整的权限设定,exports中没有设定的缺省值也会被列出/var/lib/nfs/xtab纪录NFS连接的相关信息/usr/sbin/exportfsNFS设定管理命令,用于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 ~]#

权限选项说明

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

exportfs

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

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

Client侧安装

yum install nfs-utils

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]#

可读写挂载

因为权限是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]#

Server端确认

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

另外一个Client端确认

[root@ku8-3 client2]# pwd /tmp/client2 [root@ku8-3 client2]# ls helloworld ttt [root@ku8-3 client2]# 淼叔 认证博客专家 神经网络 TensorFlow NLP 资深架构师,PMP、OCP、CSM、HPE University讲师,EXIN DevOps Professional与DevOps Master认证讲师,曾担任HPE GD China DevOps & Agile Leader,帮助企业级客户提供DevOps咨询培训以及实施指导。熟悉通信和金融领域,有超过十年金融外汇行业的架构设计、开发、维护经验,在十几年的IT从业生涯中拥有了软件开发设计领域接近全生命周期的经验和知识积累,著有企业级DevOps技术与工具实战。
转载请注明原文地址: https://www.6miu.com/read-876.html

最新回复(0)