linux下nfs安装配置

Date2012-12-20

Version1

一)NFS介绍:

NFS(Network File System, 网络文件系统)可以通过网络将分享不同主机(不同的OS)的目录——可以通过NFS挂载远程主机的目录, 访问该目录就像访问本地目录一样!
一般而言, 使用nfs能够方便地使各unix-like系统之间实现共享. 但如果需要在unix-likewindows系统之间共享, 就得使用samba!
NFS
运行在SUNRPC(Remote Procedure Call, 远程过程调用)基础上, RPC定义了一种与系统无关的方法来实现进程间通信. 由此, NFS server也可以看作是RPC server.
   
 
正因为NFS是一个RPC服务程序, 所以在使用它之前, 先要映射好端口——通过portmap设定.
比如: 某个NFS client发起NFS服务请求时, 它需要先得到一个端口(port). 所以它先通过portmap得到port
number. (
不仅NFS, 所有的RPC服务程序启动之前, 都需要设定好portmap)
   
 
在启动RPC服务(比如NFS)之前, 需要启动portmap服务!(关于nfsportmap是否存在于当前系统, 看后面的"NFS安装"部分.

二)安装NFS
Debian
上默认是没有安装NFS服务器的,首先要安装NFS服务程序:
root#apt-get install nfs-kernel-server
(
安装nfs-kernel-server时,apt会自动安装nfs-commonportmap
这样,宿主机就相当于NFS Server
   
 
同样地,目标系统作为NFS的客户端,需要安装NFS客户端程序。如果是Debian/系统,则需要安装nfs-common
root#sudo apt-get install nfs-common
   
 
nfs-common
nfs-kernel-server都依赖于portmap!
                               
 

三)与NFS相关的几个文件, 命令
1, /etc/exports
   
NFS卷的访问是由exports来批准, 它枚举了若干有权访问NFS服务器上文件系统的主机名.

NFS配置文件设置

NFS服务的配置文件是etc/exports

exports文件内容格式:

<输出目录> [客户端1 选项(访问权限,用户映射,其他)] [客户端2 选项(访问权限,用户映射,其他)]

1.输出目录:

输出目录是指NFS系统中需要共享给客户机使用的目录;

2.客户端:

客户端是指网络中可以访问这个NFS输出目录的计算机

客户端常用的指定方式

指定ip地址的主机 192.168.200.62

指定子网中的所有主机 192.168.200.0/24

指定域名的主机 a.liusuping.com

指定域中的所有主机 *.liusuping.com

所有主机 *

3.选项:

选项用来设置输出目录的访问权限、用户映射等。NFS主要有3类选项:

访问权限选项

设置输出目录只读 ro

设置输出目录读写 rw

用户映射选项

all_squash 将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);

no_all_squash all_squash取反(默认设置);

root_squash root用户及所属组都映射为匿名用户或用户组(默认设置);

no_root_squash rootsquash取反;

anonuid=xxx 将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);

anongid=xxx 将远程访问的所有用户组都映射为匿名用 户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);

其它选项

secure 限制客户端只能从小于1024tcp/ip端口连接nfs服务器(默认设置);

insecure 允许客户端从大于1024tcp/ip端口连接服务器;

sync 将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;

async 将数据先保存在内存缓冲区中,必要时才写入磁盘;

wdelay 检查是否有相关的写操作,如果有则将这些写操作 一起执行,这样可以提高效率(默认设置);

no_wdelay 若有写操作则立即执行,应与sync配合使用;

subtree 若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置)

no_subtree 即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;

.


2, /sbin/exportfs
   
维护NFS的资源共享. 可以通过它重新设定 /etc/exports 的共享目录, 卸载NFS Server共享的目录或者重新共享等.


3,
 /usr/sbin/showmount 
   
用在 NFS Server 端,而 showmount 则主要用在 Client
. showmount 可以用�聿榭� NFS 共享的目录资源.
4, /var/lib/nfs/xtab
    NFS
的记录文档: 通过它可以查看有哪些Client 连接到NFS主机的记录.
下面这几个并不直接负责NFS, 实际上它们负责所有的RPC
5, /etc/default/portmap
   
实际上, portmap负责映射所有的RPC服务端口, 它的内容非常非常之简单(后面详述)
6, /etc/hosts.deny
   
设定拒绝portmap服务的主机
7, /etc/hosts.allow
   
设定允许portmap服务的主机

四)查看/etc/exports文件

Cat /etc/exports

root@debian:~# more /etc/exports

# /etc/exports: the access control list for filesystems which may be exported

#               to NFS clients.  See exports(5).

#

# Example for NFSv2 and NFSv3:

# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)

#

# Example for NFSv4:

# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)

# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)

#

  /home/share   192.168.200.0/255.255.255.0(rw,sync)    *(ro)

root@debian:~#

NFS挂载目录及权限由/etc/exports文件定义
   
 
比如我要将将我的home目录中的/home/share目录让192.168.200.*IP共享, 则在该文件末尾添加下列语句:
        /home/share    192.168.200.*(rw,sync,no_root_squash)
 
或者:/home/share    192.168.200.0/24(rw,sync,no_root_squash) 
192.168.200.*
网段内的NFS客户端能够共享NFS服务器/home/share目录内容.且有读,写权限, 并且该用户进入/home/share目录后的身份为root
最好加上sync, 否则 root#exportfs -r 时会给出警告, syncNFS的默认选项.
运行 $ showmount -e 查看NFS serverexport list.

root@debian:~# showmount -e localhost

Export list for localhost:

/home/share (everyone)

root@debian:~#

 

 

 

 

 

客户端设置;

使用apt-get install { portmap,nfs-common}

自动挂载器的介绍(automounter

自动挂载器就是当我们网络中有一台NFS Server的时候,客户端需要去挂载NFS Server上面的资源,如果将NFS的挂载信息写在/etc/fstab这个文件里面,那么客户端只要是启动计算机,就是自动挂载NFS资源。可能有些客户端不需要去挂载NFS的资源,这样就会浪费资源。而自动挂载器就可以帮我们实现,当客户端需要去访问的时候,才挂载,不需要访问的时候,资源是断开的,所以学习自动挂载器是很有必要的。

要想实现自动挂载的功能,必须安装autofs这个包

[root@localhost ~]#apt-get install autofs5

自动挂载是通过两个文件来实现的

/etc/auto.master

/etc/auto.misc

现在我们打开/etc/auto.master这个文件,看下里面是怎么定义的。

[root@localhost ~]# vim /etc/auto.master

# $Id: auto.master,v 1.4 2005/01/04 14:36:54 raven Exp $

#

# Sample auto.master file

# This is an automounter map and it has the following format

# key [ -mount-options-separated-by-comma ] location

# For details of the format look at autofs(5).

#

/misc   /etc/auto.misc

#

# NOTE: mounts done from a hosts map will be mounted with the

#       nosuid and nodev options unless the suid and dev

#       options are explicitly given.

#

/net    -hosts

#

# Include central master map if it can be found using

# nsswitch sources.

#

# Note that if there are entries for /net or /misc (as

# above) in the included master map any keys that are the

# same will not be seen as the first read key seen takes

# precedence.

#

+auto.master

可以看到,在/etc/auto.master里面是这样定义的,

我们先看这句话

/misc   /etc/auto.misc

/etc/auto.misc里面的内容挂载到/misc这个目录下面去。

我们再来开到/etc/auto.misc这个文件

[root@localhost ~]# vim /etc/auto.misc

#

# $Id: auto.misc,v 1.2 2003/09/29 08:22:35 raven Exp $

#

# This is an automounter map and it has the following format

# key [ -mount-options-separated-by-comma ] location

# Details may be found in the autofs(5) manpage

cd              -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom

# the following entries are samples to pique your imagination

#linux               -ro,soft,intr           ftp.example.org:/pub/linux

#boot               -fstype=ext2            :/dev/hda1

#floppy            -fstype=auto            :/dev/fd0

#floppy            -fstype=ext2            :/dev/fd0

#e2floppy        -fstype=ext2            :/dev/fd0

#jaz                 -fstype=ext2            :/dev/sdc1

#removable      -fstype=ext2            :/dev/hdd

~

/etc/auto.misc文件定义了将cdrom里面的东西挂载到cd目录下面去

注意,这里的cd目录是以/misc为根的,也就是/misc/cd目录。

我们将这两个文件整合一下,意思就是说将cdrom里面的东西挂载到/misc/cd目录下面去,就是这个意思。

现在我们将一张光盘放入光驱里面,看下能否自动挂载起来。

[root@localhost ~]# cd /misc/

[root@localhost misc]# ls

[root@localhost misc]#

我们现在已经进入了这个目录,可以看到,这个目录里面什么东西都没有,刚才哪两个文件定义说,是挂载到/misc/cd目录下面,现在我们进入cd目录。

[root@localhost ~]# cd /misc/

[root@localhost misc]# ls

[root@localhost misc]# cd cd

[root@localhost cd]# ls

AUTORUN.INF  HD4.GHO      PESETUP  README.TXT  WINPE.XPE

AXPE         OSGHOST.EXE  PESOFT   SYSTEM      WNPEFONT.BIN

[root@localhost cd]# cd ..

[root@localhost misc]# ls

cd

[root@localhost misc]#

可以看到,我们光盘里面的东西就被挂载到/misc/cd目录下面去了。

这个自动挂载的功能是系统默认就有了的,下面我们根据刚才的例子来学习如何利用自动挂载器的功能来实现挂载NFS网络资源。

首先编辑/etc/auto.master这个文件,

auto.master 文件定义本地挂载点. 本地挂载点目录/mnt

编辑auto.master 配置文件如下:

#

# $Id: auto.master,v 1.4 2005/01/04 14:36:54 raven Exp $

#

# Sample auto.master file

# This is an automounter map and it has the following format

# key [ -mount-options-separated-by-comma ] location

# For details of the format look at autofs(5).

#

/misc   /etc/auto.misc

/mnt    /etc/auto.nfs

/etc/auto.nfs这个文件可以自己命名,在/etc/auto.misc这个文件定义也是可以的。

复制一个模板文件auto.miscauto.nfs

这个文件名一定要与/etc/master中定义的一致。

[root@localhost ~]#

[root@localhost ~]# cp /etc/auto.misc /etc/auto.nfs

编辑/etc/auto.nfs配置文件如下

# $Id: auto.misc,v 1.2 2003/09/29 08:22:35 raven Exp $

# This is an automounter map and it has the following format

# key [ -mount-options-separated-by-comma ] location

# Details may be found in the autofs(5) manpage

nfs                               192.168.200.91:/home/share

这个nfs目录在/mnt下面不需要有

重启一下服务

[root@localhost ~]# service autofs restart

Stopping automount:                                        [  OK  ]

Starting automount:                                          [  OK  ]

[root@localhost ~]#

服务启动成功。

root@debian:/mnt/nfs# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda4             7.5G  912M  6.2G  13% /

tmpfs                 993M     0  993M   0% /lib/init/rw

udev                  988M  104K  988M   1% /dev

tmpfs                 993M     0  993M   0% /dev/shm

/dev/sda1             184M   20M  155M  12% /boot

/dev/sda3             369M   11M  340M   3% /tmp

 [root@localhost ~]#

现在可以df h 可以看到的nfs网络资源是没有挂载过来的

root@debian:/mnt/nfs# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda4             7.5G  912M  6.2G  13% /

tmpfs                 993M     0  993M   0% /lib/init/rw

udev                  988M  104K  988M   1% /dev

tmpfs                 993M     0  993M   0% /dev/shm

/dev/sda1             184M   20M  155M  12% /boot

/dev/sda3             369M   11M  340M   3% /tmp

192.168.200.91:/home/share

                       50G  180M   47G   1% /mnt/nfs

root@debian:/mnt/nfs#

nfs 权限根服务器权限有关。

More /etc/exports

 /home/share    192.168.200.*(rw,sync,anonuid=1001,anongid=1001) 

把客户端访问用户映射为服务器用户rovkxu1001:1001 文件夹权限需在服务器端修改

你可能感兴趣的:(linux,server,安装,nfs)