NFS 文件系统
NFS的安装是非常简单的,只需要两个软件包即可,而且在通常情况下,是作为系统的默认包安装的。
如果没有则安装:
yum install nfs-utils portmap -y
NFS服务的主要配置文件
/etc/exports
/etc/exports文件内容格式:
<输出目录> [客户端1 选项(访问权限,用户映射,其他)] [客户端2 选项(访问权限,用户映射,其他)]
sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
async:将数据先保存在内存缓冲区中,必要时才写入磁盘
r:用户有写入的权限
w:用户有读取的权限。
NFS服务器的启动与停止
启动NFS服务器:
为了使NFS服务器能正常工作,需要启动portmap和nfs两个服务,并且portmap一定要先于nfs启动。
service portmap start
service nfs start
停止NFS运行时,需要先停止nfs服务再停止portmap服务,对于系统中有其他服务(如NIS)需要使用时,不需要停止portmap服务
service nfs stop
service portmap stop
设置NFS服务器的自动启动状态
# chkconfig --level portmap on
# chkconfig --level nfs on ---设置portmap和nfs服务在系统运行级别3和5自动启动
相关命令
.exportfs #exportfs 命令使改动后的/etc/exports文件立刻生效。
# exportfs [-aruv]
-a 全部挂载或卸载 /etc/exports中的内容
-r 重新读取/etc/exports 中的信息,并同步更新/etc/exports、/var/lib/nfs/xtab
-u 卸载单一目录(和-a一起使用为卸载所有/etc/exports文件中的目录)
-v 在export的时候,将详细的信息输出到屏幕上。
具体例子:
# exportfs -au 卸载所有共享目录
# exportfs -rv 重新共享所有目录并输出详细信息。
.showmount
-a 显示已经于客户端连接上的目录信息
-e IP或者hostname 显示此IP地址分享出来的目录。
挂载 NFS 文件系统例子
1.使用 mount 命令来挂载另一个机器上的 NFS 文件系统:
mount 服务器ip或域名:/misc/export /misc/local #将服务器端的目录/misc/export挂载到客户端主机/misc/local下。
例如:
mount -t nfs 192.168.2.16:/home/ebank/docroot /appsoft/apache16 #将2.16服务器docroot目录下的文件挂载到本机的/appsoft/apache16目录下.
2.使用 /etc/fstab 来挂载 NFS 文件系统
要挂载其它机器上的 NFS 共享的另一种方法是在 /etc/fstab 文件中添加一行。这一行中必须声明 NFS 服务器的主机名,要导出的目录,以及要挂载 NFS 共享的本地机器目录。你必须是根用户才能修改 /etc/fstab 文件。
/etc/fstab 中每行的一般语法如下所示:
serverip:/usr/local/pub /pub nfs rsize=,wsize=,timeo=,intr
挂载点 /pub 在客户机器上必须存在。在客户系统的 /etc/fstab 文件中把这一行添加完毕后,在 shell 提示下键入命令 mount /pub,以及将会从服务器中挂载到挂载点 /pub。 /
mount -a 重新加载
三、实例说明:
centos系统两台:
服务器端:192.168.1.200
客户端: 192.168.1.100
需求:将服务器端192.168.1.200的/CentOS/opt/目录挂在到客户端1.100的/opt/目录下,并是客户端有读写的权限.
S/c都关掉iptables防火墙 /etc/init.d/iptables stop
一、服务器端配置:
1.查看nfs是否安装 ; rpm -qa nfs
2.启动nfs服务
3.配置/ect/exports文件
[root@localhost /]# more /etc/exports
/CentOS/opt 192.168.1.200/(rw)
4.重新加载exports文件
[root@localhost /]# exportfs -r
5.查看服务端输出信息.
[root@localhost /]# showmount -e #查看自己共享的信息。
Export list for localhost.localdomain:
/CentOS/opt 192.168.1.200/
二、客户端配置。
1. 客户端使用showmount命令查询NFS的共享状态
[root@localhost /]# showmount -e 192.168.1.200
Export list for 192.168.1.200:
/CentOS/opt 192.168.1.200/
2.客户端挂载nfs服务器中的共享目录.
格式:mount NFS服务器IP:共享目录 本地挂载点目录
mount -t nfs 192.168.1.200:/CentOS/opt/ /opt
3. 验证是否挂载成功。
4.使用 /etc/fstab 来挂载 NFS 文件系统
使用mount挂载时,当服务器重启后挂载就没有了,只有当写入/etc/fstab文件中,客户端重启挂载点也一直存在。
vi /etc/fstab
192.168.1.200:/CentOS/opt/ /opt nfs defaults
三、访问权限问题;
1.客户机的访问权限问题要结合/etc/exports文件的权限和服务器挂载目录的权限,当/etc/exports文件中设置客户机有rw权限时,目录也必须要有写入的权限.客户机才可以有读写的权限。
2.在生产中,我们/etc/exports中定义的可以机又rw的权限,目录也是rw权限,在客户端建目录是报权限拒绝,因为当时挂载的目录时www用户的,所以在客户端上面用www用户访问创建目录时,客户端和服务端的www用户的id好必须一样,这是在生产中遇到的问题。
关于NFS启动报错问题:
[root@toloan-test opt]# /etc/init.d/nfs start
启动 NFS 服务: [确定]
关掉 NFS 配额:无法注册服务: RPC:无法接收; errno = 拒绝连接
rpc.rquotad: unable to register (RQUOTAPROG, RQUOTAVERS, udp).
[失败]
启动 NFS mountd:[失败]
启动 NFS 守护进程:rpc.nfsd: writing fd to kernel failed: errno (Connection refused)
rpc.nfsd: unable to set any sockets for nfsd
[失败]
正确启动方式:
root@toloan-test opt]# /etc/init.d/rpcbind start
正在启动 rpcbind:[确定]
[root@toloan-test opt]# /etc/init.d/nfs start
启动 NFS 服务: [确定]
关掉 NFS 配额:[确定]
启动 NFS mountd:[确定]
启动 NFS 守护进程:[确定]
[root@toloan-test opt]#
NFS文件系统挂在后客户端目录权限变成4294967294的问题
在客户端执行10.222上面执行挂载命令:
mount -t nfs 10.10.10.244:/apps/product/nginx/htdocs/upload /opt/share/upload/
##将服务器端10.244的目录挂载到客户端目录 /opt/share/upload/下
属主和属组为www用户.挂在后变成4294967294 。
drwxr-xr-x 8月 : upload
解决办法如下:
最简单的解决办法就是在NFS的客户端启动rpcidmapd服务,然后你再看挂载的目录用户和组都是对的了,前提是你挂载的那个磁盘目录所属的用户和组,客户端也有。
root@toloan share]# /etc/init.d/rpcidmapd start
正在启动 RPC idmapd:[确定]
[root@toloan ~]# mount -t nfs 10.10.10.244:/apps/product/nginx/htdocs/upload /opt/share/upload/
[root@toloan ~]# cd /opt/share/
[root@toloan share]# ll
总用量
drwxr-xr-x www www 8月 : upload
[root@toloan share]# cd upload/
[root@toloan upload]# ll
总用量
-rw-rw-r-- www www 8月 : .txt
[root@toloan upload]#
客户端启动rpcidmapd后客户端挂载目录正常了....ok
nfs服务器端执行showmount -e报错问题
今天在NFS服务器使用showmount –e查看NFS共享目录时,发现系统一直显示如下错误:
clnt_create: RPC: Port mapper failure - Timed out
查询相关资料显示,很有可能是因为NFS服务器的hosts文件中的域名和NFS服务器的IP地址不对应造成的。
查看NFS服务器的hosts文件,如下:
more /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 tt.test.com dev.newsp2p.cn
:: localhost localhost.localdomain localhost6 localhost6.localdomain6
发现NFS服务器的主机名和IP地址记录不在这个文件进行记录。果断添加进去。如下:
[root@cms ]# hostname
cms
[root@cms ]# echo "10.10.100.30 cms" >> /etc/hosts
再次使用showmount –e命令查看NFS共享,结果正常了,系统也很快的显示NFS共享。
挂在成功后在客户端这边的共享目录创建文件后发现权限是nfsnobody的权限,而且访问时客户端ip加路径竟然访问不来资源,最后在/etc/exports中添加no_root_squash参数,然后重启,解决问题.
/CentOS/opt 192.168.1.200/24(rw,no_root_squash)
no_root_squash:登入 NFS 主机使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有 root 的权限!这个项目『极不安全』,不建议使用!
root_squash:在登入 NFS 主机使用分享之目录的使用者如果是 root 时,那么这个使用者的权限将被压缩成为匿名使用者,通常他的 UID 与 GID 都会变成 nobody 那个系统账号的身份。
NFS 文件系统的更多相关文章
- NFS文件系统制作
内核: linux-3.0 u-boot: 2010.09 开发板: fl2440(s3c2440主芯片) 交叉编译器: 2011.11 ...
- 嵌入式 hi3518平台uboot引导nfs文件系统
首先贴出来我的bootargs的设置(注没有换行符!!!): setenv bootargs noinitrd mem=64M root=/dev/nfs init=/linuxrc rw nfsro ...
- qemu 模拟-arm-mini2440开发板-启动u-boot,kernel和nfs文件系统
qemu 本文介绍了如何编译u-boot.linux kernel,然后用qemu启动u-boot和linux kernel,达到与开发板上一样的学习效果! 虽然已经买了2440开发板,但是在实际学习 ...
- nfs文件系统挂载失败解决方法
nfs文件系统挂载失败解决方法 */--> nfs文件系统挂载失败解决方法 Table of Contents 1. 错误提示 2. 我的配置 1 错误提示 bootserver=255.255 ...
- 嵌入式环境:挂载开发板根NFS文件系统失败
挂载开发板根NFS文件系统的时候,发现了下面的问题: Looking up port of RPC 100003/2 on 192.168.2.109rpcbind: server 192.168.2 ...
- qemu 模拟-arm-mini2440开发板-启动u-boot,kernel和nfs文件系统【转】
转自:http://www.cnblogs.com/riskyer/p/3366001.html qemu 本文介绍了如何编译u-boot.linux kernel,然后用qemu启动u-boot和l ...
- 开启 NFS 文件系统提升 Vagrant 共享目录的性能
Vagrant 默认的 VirtualBox 共享目录方式读写性能表现并不好,好在 Vagrant 支持 NFS 文件系统方式的共享,我们可以启用 NFS 提升性能 开启方法 首先要把虚拟机的网络设置 ...
- umount nfs文件系统 显示 umount.nfs: device is busy
网上的方法一般都是 fuser -m /nfs 查出进程号,然后杀死进程号,或者fuser -km /nfs直接杀死,我试了下都不行 解决方法: 对于nfs文件系统来说,umount -l /nfs ...
- Linux基础命令---exportfs管理挂载的nfs文件系统
exportfs exportfs主要用于管理当前NFS服务器的文件系统. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.Fedora. 1.语法 /usr/sb ...
随机推荐
- HTML最新标准HTML5小结
写在前面 HTML5出来已经很久了,然而由于本人不是专业搞前端的,只知道有这个东西,具体概念有点模糊(其实就是一系列标准规范啦):因此去年(2015.11.09),专门对HTML5做了个简单的小结,今 ...
- 优化SQLServer--表和索引的分区(二)
简介 之前一篇简单的介绍了语法和一些基本的概念,隔了一段时间,觉得有必要细致的通过实例来总结一下这部分内容.如之前所说,分区就是讲大型的对象(表)分成更小的块来管理,基本单位是行.这也就产生了很大优势 ...
- mongodb基础篇
一. 关于mongodb 两种非关系数据库 Redis:满足极高读写性能的Key-Value数据库 键值式储存,可以通过键快速查询到值. 内存数据库,类似于mencached.性能出色.容量低,不具 ...
- 理解Docker(7):Docker 存储 - AUFS
(1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 (4)Docker 容器的隔离性 - 使用 ...
- USACO . Greedy Gift Givers
Greedy Gift Givers A group of NP (2 ≤ NP ≤ 10) uniquely named friends has decided to exchange gifts ...
- 【js】初入AJAX
AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术. AJAX = 异步 JavaScript和 ...
- AC日记——二叉堆练习3 codevs 3110
3110 二叉堆练习3 时间限制: 3 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 给定N(N≤500,000)和N个整 ...
- 21-Python-Django进阶补充篇
1. 路由部分补充 1.1 默认值 url: url(r'^index/', views.index, {'name': 'root'}), views: def index(request,name ...
- mac 多php版本安装
mac上自带又apache和php. 自带的php缺少一些扩展(freeType),安装起来因为mac本身有一些sudo su都不可触及的权限,所以决定不动系统本身php,再装一个新的php不同版本. ...
- list,tuple,dict,set常用方法
Python中list,tuple,dict,set常用方法 collections模块提供的其它有用扩展类型 from collections import Counter from collect ...