CentOS 6.5系统下安装和配置NFS服务

CentOS 6.5系统下安装和配置NFS服务
发布时间:2014-04-18 来源:服务器之家
CentOS 6.3下安裝配置NFS4服務apache

安装 NFS 服务器所需的软件包:
# yum install nfs-utils
這會將所须要的關聯軟件包一並安裝完成。
注意,NFS4不一样於NFS3,再也不须要安裝portmap,網上不少文章都還寫著要安裝portmap,彻底是瞎扯蛋。服务器

配置 NFS 共享
編輯/etc/exports文件,此文件初始狀態下什麼內容都沒有,本身加吧。
# vi /etc/exports
/home/exp             192.168.0.10(rw,sync,fsid=0)  192.168.0.11(rw,sync,fsid=0)
192.168.0.10 和192.168.0.11兩台機器能够掛載NFS服務器上的/home/exp目錄到本身的文件系統中。
rw表示可讀可寫;sync表示同步寫內存和磁盤,fsid=0表示將/home/exp這個導出文件夾包裝成起始根目錄。
 
啟動nfs服務:
先開啟rpcbind和nfs隨機自啟動:
#chkconfig rpcbind on
# chkconfig nfs on
然後分別啟動rpcbind和nfs服務:
#service rpcbind start
#service nfs start
 
確認nfs服務啟動成功:
# rpcinfo -p
   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    ...
    100005    3   tcp    750  mountd
检查 NFS 服务器是否输出咱们想共享的目录 /home/exp:
# exportfs
/home/exp  192.168.0.10
/home/exp  192.168.0.11
NFSv4已經不使用portmap了,而是rpcbind,這一點要注意。
NFS 客户端
首先還是和服務器端一樣,安裝nfs套件。
然後啟動rpcbind服務:
還是先開啟rpcbind服務隨機啟動:
#chkconfig rpcbind on
然後啟動rpcbind服務:
#service rpcbind start
 
检查 NFS 服务器端是否有目录共享:
# showmount -e nfs服務器的IP
 
使用 mount 挂载服务器端的目录/home/exp到客户端某个目录下:
# mkdir /home/exp
# mount -t nfs4 nfs服務器IP:/    /home/exp
# df -h看一下掛上來了沒有。
想在客戶機啟動時自動掛載,則在/etc/fstab加上:
# vi /etc/fstab
nfs服務器IP:/   /home/exp  nfs4 ro,hard,intr,proto=tcp,port=2049,noauto 0 0
客戶端掛載後,寫文件時可能會報一個權限問題:Permission denied。解決這個問題能够修改服務器端文件/etc/exports,改为以下內容:
# vi /etc/exports
/home/exp             192.168.0.10(rw,sync,fsid=0,anonuid=48,anongid=48)  192.168.0.11(rw,sync,fsid=0,anonuid=48,anongid=48)
anonuid=48的意思是讓全部匿名用戶的操做都視同為服務器上ID為48的用戶,在个人服務器上是apache用戶;同樣的anongid=48意思是讓全部匿名用戶組的操做都視同為服務器上ID為48的用戶組,在个人服務器上是apache組。這樣設置了還不夠,服務器上還必須要存在ID為48的用戶和用戶組,同時客戶機上也要有ID為48的用戶和用戶組,且用戶名和用戶組的名稱要和服務器上的一致。
設置好後,重啟NFS服務,問題便可解決。
 
从新读取NFS配置文件:
# exportfs -rv网络

可以使用以下命令查看
# exportfs -v
共享多个目录
使用NFSv4方式共享多个目录时,全部的目录都要做为共享根目录的子目录。例如:有如下目录须要共享:app

/first/very/long/path1
/second/very/long/path2
同时让客户端看上去共享的目录是 /dir1 和 /dir2。
服务器端 建立子目录 # mkdir /home/NFSv4/dir1async

# mkdir /home/NFSv4/dir2tcp

使用参数挂载须要共享的目录 # mount --bind /first/very/long/path1
/home/NFSv4/dir1ide

# mount --bind /secend/very/long/path2
/home/NFSv4/dir2性能

修改/etc/exports文件 /home/NFSv4/dir1 *(rw,nohide,sync)
/home/NFSv4/dir2 *(rw,nohide,sync)
注意:须要使用nohide参数 从新读取NFS配置文件 # exportfs -rvui

这时你就能够在客户端上挂载服务器上的多个共享文件夹了:
从根目录挂载线程

# mount server1:/ /mount/point/

单独挂载
# mount server1:/dir1 /mount/point1/

# mount server1:/dir2 /mount/point2/

权限控制
修改 /ect/export 文件,相似如下内容:

/home/NFSv4 192.168.1.0/24
(ro,fsid=0,sync,anonuid=65534,anongid=65534)

调优
在默认状况下,NFS 的配置不适合大容量磁盘。 
每一个客户机应该用 rsize=32768,wsize=32768,intr,noatime 挂装远程文件系统,如。
mount -o rsize=32768,wsize=32768,intr,noatime server1:/
/mount/point/

从而确保: 
使用大的读/写块(数字指定最大块大小,在这个示例中是 32KB)。
在挂起时 NFS 操做能够被中断。
不持续更新 atime。
能够将这些设置放在 /etc/fstab 中。若是使用自动挂装器,那么应该将这些设置放在适当的 /etc/auto.* 文件中。
在 服务器端,必定要确保有足够的 NFS 内核线程来处理全部客户机。在默认状况下,只启动一个线程,可是 Red Hat 和 Fedora 系统会启动 8 个线程。对于繁忙的 NFS 服务器,应该提升这个数字,好比 32 或 64。能够用 nfsstat -rc 命令评估客户机,了解是否有阻塞的现象,这个命令显示客户机远程过程调用(RPC)统计数据。下表显示一个 Web 服务器的客户机统计数据。

# nfsstat -rc
Client rpc stats:
calls retrans authrefrsh
1465903813 0 0

第二列 retrans 是零,这表示从上一次从新引导以来没有出现须要从新传输的状况。若是这个数字比较大,就应该考虑增长 NFS 内核线程。设置方法是将所需的线程数量传递给 rpc.nfsd,好比 rpc.nfsd 128 会启动 128 个线程。任什么时候候均可以进行这种设置,线程会根据须要启动或销毁。一样,这个设置应该放在启动脚本中,尤为是在系统上启用 NFS 的脚本。  关于 NFS,最后要注意一点:若是可能的话,应该避免使用 NFSv2,由于 NFSv2 的性能比 v3 和 v4 差得多。在现代的 Linux 发行版中这应该不是问题,可是能够在服务器上检查 nfsstat 的输出,了解是否有任何 NFSv2 调用。 NFSv4配置參考: exports文件内容格式: <输出目录> [客户端1 选项(访问权限,用户映射,其余)] [客户端2 选项(访问权限,用户映射,其余)] 1.输出目录: 输出目录是指NFS系统中须要共享给客户机使用的目录; 2.客户端: 客户端是指网络中能够访问这个NFS输出目录的计算机 客户端经常使用的指定方式 指定ip地址的主机 192.168.0.200 指定子网中的全部主机 192.168.0.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 限制客户端只能从小于1024的tcp/ip端口链接nfs服务器(默认设置); insecure 容许客户端从大于1024的tcp/ip端口链接服务器; sync 将数据同步写入内存缓冲区与磁盘中,效率低,但能够保证数据的一致性; async 将数据先保存在内存缓冲区中,必要时才写入磁盘; wdelay 检查是否有相关的写操做,若是有则将这些写操做 一块儿执行,这样能够提升效率(默认设置); no_wdelay 如有写操做则当即执行,应与sync配合使用; subtree 若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置); no_subtree 即便输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样能够提升效率;

相关文章
相关标签/搜索