NFS安装配置

简介:

转自:http://blog.csdn.net/guotao521/article/details/39612581


CentOS Linux安装NFS服务器
 
NFS是Network File System,基于RPC(Remote Procedure Call Protocol远程过程调用协议)实现。NFS是TCP/IP协议集所提供的一种子协议,该协议可以实现LINUX/UNIX主机之间的文件共享,磁盘空间共享。它只用于Linux和Unix内核的操作系统进行共享。使用NFS网络文件系统,可以将服务器的硬盘挂载到本地,就像操作本地计算机的硬盘一样。
 
这里用的系统是CentOS6.4,假设NFS Server IP为192.168.1.2,NFS Clinet IP为192.168.0.100。
 
1.服务端安装NFS:
 


yum install nfs-utils protmap 


nfs-utils包提供了NFS服务器程序和相应的管理工具。
 protmap是一个管理RPC连接的程序,portmap服务对NFS是必须的,因为它是NFS的动态端口分配守护进程,如果portmap不启动,NFS就是启动不了的。
 
2.配置NFS服务端,编辑/etc/exports文件:
 


vim /etc/exports 


设置共享文件目录,如加入:
 


/home/nfsdir *(rw)
 /home/share 192.168.0.100(rw,no_root_squash) *(ro) 


/home/nfsdir *(rw)
 表示共享/home/nfsdir目录,所有用户都有读写权限。
 /home/share 192.168.0.100(rw,no_root_squash) *(ro)
 表示共享/home/share目录,192.168.0.100有读写权限并且root用户有完全管理访问权限,其他机器仅有只读权限。
 
配置文件的格式为:
 [共享的目录] [主机名或IP(参数,参数)]
 其中参数是可选的,当不指定参数时,nfs将使用默认选项。默认的共享选项是sync,ro,root_squash,no_delay。
 当主机名或IP地址为空时,则代表共享给任意客户机提供服务。
 当将同一目录共享给多个客户机,但对每个客户机提供的权限不同时,可以这样:
 [共享的目录] [主机名1或IP1(参数1,参数2)] [主机名2或IP2(参数3,参数4)]
 下面是一些NFS共享的常用参数: 




ro  只读访问
rw  读写访问
sync  同步写入资料到内存与硬盘中
async  资料会先暂存于内存中,而非直接写入硬盘
secure  NFS通过1024以下的安全TCP/IP端口发送
insecure  NFS通过1024以上的端口发送
wdelay  如果多个用户要写入NFS目录,则归组写入(默认)
no_wdelay  如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。
hide  在NFS共享目录中不共享其子目录
no_hide  共享NFS目录的子目录
subtree_check  如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
no_subtree_check  和上面相对,不检查父目录权限
all_squash  共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
no_all_squash  保留共享文件的UID和GID(默认)
root_squash  root用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squash  root用户具有根目录的完全管理访问权限
anonuid=xxx  指定NFS服务器/etc/passwd文件中匿名用户的UID
 anongid=xxx  指定NFS服务器/etc/passwd文件中匿名用户的GID 


当exports文件修改后,使用以下命令,不需要重启NFS服务,就可以重新挂载/etc/exports里面的设定:
 


exportfs -arv 


3.先启动portmap服务:
 


service portmap restart 


4.再启动NFS服务:
 


service nfs restart 


如果之前没有先启动portmap服务,那么当启动NFS服务时会停在
 


Starting NFS daemon: 


很长时间。
 
5.设置nfs、portmap开机自启动:
 


chkconfig --level 345 nfs on
 chkconfig --level 345 portmap on 


6.客户端也需要安装nfs-utils、portmap软件包,并启动portmap服务:
 


yum install nfs-utils portmap
 service portmap restart
 chkconfig --level 345 on 


7.NFS服务端启动成功后,客户端可以利用showmount命令测试是否能连上服务端:
 命令格式:showmount -e [hostname|IP],showmount命令需要安装了nfs-utils软件包才有。
 


showmount -e 192.168.1.2 


显示如下:
 


/home/nfsdir *
 /home/share (everyone) 


8.客户端建立挂载的文件夹:
 


cd /mnt
 mkdir nfs1
 mkdir nfs2 


9.客户端使用mount命令挂载NFS共享文件:
 


mount -t nfs 192.168.1.2:/home/nfsdir /mnt/nfs1
 mount -t nfs 192.168.1.2:/home/share /mnt/nfs2 


命令格式:mount - t nfs nfs服务器地址:目录共享 本地挂载目录点
 
10.客户端可使用df命令,mount命令查看挂载情况:
 


mount
 192.168.1.2:/home/share on /mnt/nfs2 type nfs (rw,addr=192.168.1.2)
 192.168.1.2:/home/nfsdir on /mnt/nfs1 type nfs (rw,addr=192.168.1.2) 


11.客户端卸载NFS文件命令:
 


umount /mnt/nfs1
 umount /mnt/nfs2 


12.客户端可以设置系统启动时自动挂载NFS文件:
 需要将NFS的共享目录挂载信息写入/etc/fstab/文件,以实现对NFS共享目录的自动挂载。
 编辑/etc/fstab文件:
 


vim /etc/fstab 


在最后加入如
 


192.168.1.2:/home/nfsdir /mnt/nfsdir nfs defaults 0 0 


13.查看当前主机RPC状态:
 


rpcinfo -p localhost 



一个很纠结的错误
使用 mount -t nfs 127.0.0.1:/home/lzgonline/rootfs /mnt 和 mount -t nfs 192.168.1.9:/home/lzgonline/rootfs /mnt 本机挂载nfs则没有问题,然而使用 mount -t nfs 192.168.3.12:/home/lzgonline/rootfs /mnt 时却出现了问题,导致开发板无法通过nfs挂载启动,其中192.128.3.12 和 192.128.1.9(即nfs服务器)之间建立了映射(DMZ)关系。
mount.nfs: access denied by server while mounting 192.168.3.12:/home/lzgonline/rootfs
百度、谷歌了很久,大部分都说是权限设置有问题,其实文件夹权限都设为777了,权限上都没问题,hosts.deny和hosts.allow都保留默认设置,防火墙也关了,该设置的都设置了,但还是被拒绝,很是郁闷,就在一筹莫展的时候,通过查看一些linux技术论坛后逐渐找到了问题所在。
首先使用命令查看出错日志文件
[root@lzgonline init.d]# cat /var/log/messages | grep mount
Jun 29 00:49:04 lzgonline mountd[1644]: refused mount request from 192.168.3.12 for /home/lzgonline/rootfs (/home/lzgonline/rootfs): illegal port 1689
Jun 29 00:51:02 lzgonline mountd[1644]: refused mount request from 192.168.3.12 for /home/lzgonline/rootfs (/home/lzgonline/rootfs): illegal port 1710
Jun 29 01:02:17 lzgonline mountd[1644]: refused mount request from 192.168.3.12 for /home/lzgonline/rootfs (/home/lzgonline/rootfs): illegal port 1916
Jun 29 01:09:51 lzgonline mountd[1644]: refused mount request from 192.168.3.12 for /home/lzgonline/rootfs (/home/lzgonline/rootfs): illegal port 2157
Jun 29 01:17:02 lzgonline mountd[1644]: refused mount request from 192.168.3.12 for /home/lzgonline/rootfs (/home/lzgonline/rootfs): illegal port 2318
 
从出错日志可以看出,mount.nfs: access denied by server while mounting 192.168.3.12:/home/lzgonline/rootfs 被拒绝的原因是因为使用了非法端口,功夫总没白费,终于在一个linux技术论坛上找到了答案:
I googled and found that since the port is over 1024 I needed to add the "insecure" option to the relevant line in /etc/exports on the server. Once I did that (and ran exportfs -r), the mount -a on the client worked.


//如果端口号大于1024,则需要将 insecure 选项加入到配置文件(/etc/exports)相关选项中mount客户端才能正常工作:


查看 exports 手册中关于 secure 选项说明也发现确实如此


[root@lzgonline init.d]# man exports


secure,This  option requires that requests originate on an Internet port less than IPPORT_RESERVED (1024). This option is on by default. To turn it off, specify insecure.


//secure 选项要求mount客户端请求源端口小于1024(然而在使用 NAT 网络地址转换时端口一般总是大于1024的),默认情况下是开启这个选项的,如果要禁止这个选项,则使用 insecure 标识


修改配置文件/etc/exports,加入 insecure 选项


/home/lzgonline/rootfs  *(insecure,rw,async,no_root_squash)


保存退出


然后重启nfs服务:service nfs restart


然后问题就解决了


笔者用的Linuxf发行版本为Centos6.4,以下方法理论上讲对于Fedora, Red Hat均有效:
 
搭建好NFS服务后,如果用以下的命令进行挂载:
 
# mount -t nfs 172.16.12.140:/home/liangwode/test  /mnt
 
 出现如下错误提示:
 
mount.nfs: access denied by server while mounting 172.16.12.140:/home/liangwode/test
 那我们可以用以下的方法进行解决:
 
修改/etc/sysconfig/nfs文件,将 
 
# Turn off v2 and v3 protocol support 
#  RPCNFSDARGS="-N 2 -N 3" 
# Turn off v4 protocol support 
#RPCNFSDARGS="-N 4"    /*把这句话的#号去掉*/
 NFS分为三个版本,即NFS-2 NFS-3 NFS-4,该配置文件默认关闭了这三个的NFS版本,我们只需要打开NFS-4即可。




 在一些系统中,NFS服务是关闭状态的,为了启动这项功能,我们需要手动进行设置。那么对于NFS Server和NFS Client的设置我们在文章中来为大家详细介绍一下。希望能够让大家掌握这部分知识。


服务端(Solaris 9):


一.NFS Server设置:


启动NFS Server服务:


# /etc/rc3.d/S15nfs.server start 
Share目录:


编辑文件/etc/dfs/dfstab:


share -F nfs -o rw=10.0.0.13,root=10.0.0.13 /home 
然后运行shareall将目录share出去,或者不编辑该文件,直接在命令行输入效果一样.


查看是否成功share"


# dfshares  
 
RESOURCE                                  SERVER ACCESS    TRANSPORT  
 
solaris:/home                         solaris  -         - 
二.NIS设置:


复制配置文件:


# cp /etc/nsswitch.nis /etc/nsswitch.conf 
设置域名:


# domainname congli  
 
# echo congli > /etc/defaultdomain 
初始化及启动服务:


# ypinit -m  
 
# /usr/lib/netsvc/yp/ypstart 
客户端(Solaris 9)


一.NFS Client设置:


启动NFS Client服务:


# /etc/rc2.d/S73nfs.client start 
编辑/etc/vfstab:


10.0.0.12:/home - /home nfs - yes soft,bg 
把NFS文件系统挂上:


# mountall -r 
二.NIS设置:


复制配置文件:


# cp /etc/nsswitch.nis /etc/nsswitch.conf 
设置域名:


# domainname congli  
 
# echo congli > /etc/defaultdomain 
把NIS服务端的IP加到/etc/hosts:


10.0.0.12       solaris


初始化及启动服务:


# ypinit -m    (填上NIS服务端的hostname,Ctrl+D结束)  
 
# /usr/lib/netsvc/yp/ypstart



二#################

(假设两台服务器上都有 /data/tools这个文件夹,其中一台要mount到另一台上去,俩服务器ip分别为 192.168.88.12和13,掩码255.255.255.0,服务器13的/data/t13要mount到服务器12的/data/t12 上)

 

首先要用vi修改服务器12的系统文件

 

vi /etc/exports

加入

/data/tools192.168.88.0/255.255.255.0(rw)

 

执行

servicerpcbind start (redhat5  portmap,Redhat 6 改名为 rpcbind)

service nfs start

 

chkconfig --addrpcbind

chkconfig --add nfs

chkconfig rpcbind on

chkconfig nfs on

 

然后再服务器13上执行以下命令

--------------------------------------------------------

目标服务器

mount -t nfs 192.168.88.12:/data/t12/data/t13

 

 

 

下面再多说说这个mount命令的挂载方法与说明:

mount   -t   iso9660   /dev/cdrom   /mnt/cdrom       挂光驱  
mount   -t   vfat   /dev/fd0   /mnt/floppy           挂软驱     (文件内型可以自己选)
mount -t vfat -o rw,utf8,umask=000 /dev/sda1 /media/USBlinux系统默认挂载的windows分区中文显示不正常。光驱中的中文也不能正常显示.解决方法如下:1 自动挂载
修改/etc/fstab 在挂载参数中增加iocharset=utf8
示例如下:
/dev/sda5       /media/sda5     vfat    iocharset=utf8,defaults,umask=0        0       0
/dev/hda        /media/cdrom0   udf,iso9660 user,noauto,iocharset=utf8     0       0

我的是sata硬盘。/dev/sda5是硬盘的一个分区。/dev/hda是光驱。其中"umask=0"表示普通用户也有读写的权限。2 手动挂载
挂载的时候加上参数-o iocharset=utf8
示例如下:
$ sudo mount -o iocharser=utf8 /dev/sdb1 /media/usb
mount命令详解功能:加载指定的文件系统。
语法:mount [-afFhnrvVw] [-L<标签>] [-o<选项>] [-t<文件系统类型>] [设备名] [加载点]
用法说明:mount可将指定设备中指定的文件系统加载到Linux目录下(也就是装载点)。可将经常使用的设备写入文件
/etc/fastab,以使系统在每次启动时自动加载。mount加载设备的信息记录在/etc/mtab文件中。使用umount命令卸载设备时,记录将被清除。
常用参数和选项:
-a 加载文件/etc/fstab中设置的所有设备。
-f 不实际加载设备。可与-v等参数同时使用以查看mount的执行过程。
-F 需与-a参数同时使用。所有在/etc/fstab中设置的设备会被同时加载,可加快执行速度。
-h 显示在线帮助信息。
-L<标签> 加载文件系统标签为<标签>的设备。
-n 不将加载信息记录在/etc/mtab文件中。
-o<选项> 指定加载文件系统时的选项。有些选项也可在/etc/fstab中使用。这些选项包括:
async 以非同步的方式执行文件系统的输入输出动作。
atime 每次存取都更新inode的存取时间,默认设置,取消选项为noatime。
auto 必须在/etc/fstab文件中指定此选项。执行-a参数时,会加载设置为auto的设备,取消选取为noauto。
defaults 使用默认的选项。默认选项为rw、suid、dev、exec、anto nouser与async。
dev 可读文件系统上的字符或块设备,取消选项为nodev。
exec 可执行二进制文件,取消选项为noexec。
noatime 每次存取时不更新inode的存取时间。
noauto 无法使用-a参数来加载。
nodev 不读文件系统上的字符或块设备。
noexec 无法执行二进制文件。
nosuid 关闭set-user-identifier(设置用户ID)与set-group-identifer(设置组ID)设置位。
nouser 使一位用户无法执行加载操作,默认设置。
remount 重新加载设备。通常用于改变设备的设置状态。
ro 以只读模式加载。
rw 以可读写模式加载。
suid 启动set-user-identifier(设置用户ID)与set-group-identifer(设置组ID)设置位,取消选项为nosuid。
sync 以同步方式执行文件系统的输入输出动作。
user 可以让一般用户加载设备。-r 以只读方式加载设备。
-t<文件系统类型> 指定设备的文件系统类型。常用的选项说明有:
minix Linux最早使用的文件系统。
ext2 Linux目前的常用文件系统。
msdos MS-DOS 的 FAT。
vfat Win85/98 的 VFAT。
nfs 网络文件系统。
iso9660 CD-ROM光盘的标准文件系统。
ntfs Windows NT的文件系统。
hpfs OS/2文件系统。Windows NT 3.51之前版本的文件系统。
auto 自动检测文件系统。
-v 执行时显示详细的信息。
-V 显示版本信息。
-w 以可读写模式加载设备,默认设置。简单用法:
fat32的分区
mount -o codepage=936,iocharset=cp936 /dev/hda7 /mnt/cdrom (mount -t
vfat -o iocharset=cp936 /dev/hda7 /mnt/cdrom)
ntfs的分区
mount -o iocharset=cp936 /dev/hda7 /mnt/cdrom
iso文件
mount -o loop /abc.iso /mnt/cdrom
软盘
mount /dev/fd0 /mnt/floppy
USB闪存
mount /dev/sda1 /mnt/cdrom 说明: /mnt/cdrom 目录必须存在所有/etc/fstab内容 mount -a可以指定文件格式"-t 格式", 格式可以为vfat, ext2, ext3等.镜像文件:
mount fileName mountPoint -o
loop,fileName是镜像文件名(*.iso,*.img),其它的不用说了,跟上面一样。用例:如我有一个a.iso光盘镜像文件,mount
a.iso a -o loop,这样进入目录a你就能浏览a.iso的内容了,*.img文件的用法一样。显示中文方面,如果是fedora core 1 的话,用utf8更好
mount -o iocharset=uft8 /dev/hda1 /mnt/c
mount -o iocharset=uft8 /dev/sda1 /mnt/usb
mount -t smbfs //ip_addr/share/dir /mnt/smb/share -o
iocharset=uft8,username=name, password=passwd
开机就mount上windows下的分区
自动将windows的d盘挂到/mnt/d上,用vi打开/etc/fstab,加入以下一行
/dev/hda5 /mnt/d vfat defaults,codepage=936,iocharset=cp936 0 0
注意,先得手工建立一个/mnt/d目录
mount局域网上其他windows机器共享出的目录(bjchenxu)
mount -t smbfs -o username=guest,password=guest //machine/path /mnt/cdrom



本文转自 wdy198622 51CTO博客,原文链接:http://blog.51cto.com/weimouren/1896689

相关文章
|
Unix 物联网 Linux
如果有人问你Centos8怎么安装配置NFS,就把这篇文章丢给她!
NFS 是 Network File System 的缩写,即网络文件系统。功能是让客户端通过网络访问不同主机上磁盘里的数据,主要用在类Unix系统上实现文件共享的一种方法。 本例演示 CentOS 8 下安装和配置 NFS 的基本步骤。
712 0
|
Ubuntu
Ubuntu 14.04安装配置NFS服务器
Ubuntu 14.04安装配置NFS服务器
883 0
|
网络协议 Linux 网络安全
|
网络协议 Linux 网络安全
CentOS 6.5 NFS的安装配置、启动及mount挂载方法
yum -y install nfs-utils rpcbind [root@centos2 /]# mkdir /usr/local/test 2、NFS文件配置: [root@centos2 /]# vi /etc/exports #增加一行: /usr/local/test/ 192.
1180 0
|
Linux 网络协议 Unix
CentOS安装配置NFS网络文件系统
NFS服务简介 NFS是Network File System的缩写,即网络文件系统。NFS是由Sun开发并发展起来的一项用于在不同机器,不同操作系统之间通过网络互相分享各自的文件。
969 0
|
2月前
|
Linux Shell Windows
通过Linux挂载Windows端NFS服务实现板端Linux传输文件到PC
通过Linux挂载Windows端NFS服务实现板端Linux传输文件到PC