NFS架设笔记

 NFS(根据鸟哥私房菜整理)

        NFS :通过网络让不同机器,不同 os彼此共享文件。
  虽然 NFS有属于自己的协议与使用的端口号,但是数据在传送的时候,使用的是RPC(远程过程调用,remote procedure call)协议来协助NFS的本身的运作。
RPC:使用某些服务进行远程连接时候,有些信息,例如主机 IP,服务的端口号与对应服务的PID等,都需要管理和对应,这些管理端口的对应与服务相关性的工作就是RPC的任务。NFS可以看作是RPC服务器的一种。
 
NFS至少会启动两个 daemons:
  1.rpc.nfsd:管理 client能否进入主机;
2.rpc.mountd:管理 NFS的文件系统。
   
NFS需要的包:
1.nfs-utils(提供 rpc.nfsd和rpc.mountd这两个NFSdaemons以及其他相关文档,说明文件,可执行文件的包)与  nfs-clients     ( 有时候只有一个)
2.portmap(在启动任何一个 RPC服务之前都需要做好端口映射(mapping)工作。这就是portmap的职责)
 
NFS软件结构:
1.、 /etc/exports:NFS的主要配置文件,不过系统没有默认值,所以这个文件不一定存在,需要手动创建。
2.、 /usr/sbin/exporrtfs:更新共享/etc/exports变更的目录资源。主要用在server端。
3.、 /usr/sbin/showmount:查看NFS共享的目录资源。主要用在client端。
4.、 /var/lib/nfs/xtab:主要的NFS日志文件。查看有哪些client曾经连接到NFS主机。
 
Server端的设置:
#vi /etc/exports
[欲共享的目录 ] [主机名称或者IP](参数)

��抵�
�热菡f明
rw
ro
�目�分享的�嘞奘强勺x�� (read-write) 或唯�x (read-only),但最�K能不能�x��,�是�c�n案系�y的 rwx 及身份有�P。
sync
async
sync 代表�Y料��同步��入到����w�c硬碟中, async �t代表�Y料��先�捍骒队����w��中,而非直接��入硬碟!
no_root_squash
root_squash
用�舳耸褂� NFS �n案系�y的�ぬ�若�� root �r,系�y�如何判�噙@���ぬ�的身份?�A�O的情�r下,用�舳� root 的身份��由 root_squash 的�O定�嚎s成 nfsnobody, 如此�λ欧�器的系�y���^有保障。但如果你想要�_放用�舳耸褂� root 身份�聿僮魉欧�器的�n案系�y,那�N�@�e就得要�_ no_root_squash 才行!
all_squash
不�登入 NFS 的使用者身份�楹危� 他的身份都��被�嚎s成�槟涿�使用者,通常也就是 nobody(nfsnobody) 啦!
anonuid
anongid
anon 意指 anonymous (匿名者) 前面�P於 *_squash 提到的匿名使用者的 UID �O定值,通常�� nobody(nfsnobody),但是你可以自行�O定�@�� UID 的值!��然,�@�� UID 必需要存在於你的 /etc/passwd ��中! anonuid 指的是 UID 而 anongid �t是群�M的 GID �印�

 
  
一启动服务:

 

# /etc/init.d/rpcbind start
#/etc/init.d/nfs start
#/etc/rc.d/init.d/portmap start
二exportfs:
当修改了/etc/exports之后不需要重启,只要使用exportfs重新扫描一次/etc/exports就可以
#exportfs –rv(重新引导)
三showmount 先是主机共享的目录。

 

 

在�_�J���]有���}之後,接下�砦���砬埔磺颇屈N NFS 到底�_了哪些埠口?

[root@www ~]# netstat -tulnp| grep -E '(rpc|nfs)'
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State    PID/Program name
tcp         0      0 0.0.0.0:875    0.0.0.0:*        LISTEN 3631/rpc.rquotad
tcp         0      0 0.0.0.0:111    0.0.0.0:*        LISTEN 3601/rpcbind
tcp         0      0 0.0.0.0:48470 0.0.0.0:*        LISTEN 3647/rpc.mountd
tcp         0      0 0.0.0.0:59967 0.0.0.0:*        LISTEN 3689/rpc.statd
tcp         0      0 0.0.0.0:2049   0.0.0.0:*        LISTEN -
udp         0      0 0.0.0.0:875    0.0.0.0:*                3631/rpc.rquotad
udp         0      0 0.0.0.0:111    0.0.0.0:*                3601/rpcbind
udp         0      0 0.0.0.0:897    0.0.0.0:*                3689/rpc.statd
udp         0      0 0.0.0.0:46611 0.0.0.0:*                3647/rpc.mountd
udp         0      0 0.0.0.0:808    0.0.0.0:*                3601/rpcbind
udp         0      0 0.0.0.0:46011 0.0.0.0:*                3689/rpc.statd

注意看到上面喔!�共�a生了好多的 port 喔!真是可怕!不�^主要的埠口是:
  • rpcbind ��拥� port 在 111 ,同�r��釉� UDP �c TCP;
  • nfs 本身的服���釉� port 2049 上�^!
  • 其他 rpc.* 服���拥� port �t是�S�C�a生的,因此需向 port 111 �]�浴�

 

 
了,那我怎�N知道每�� RPC 服�盏脑]���r?�]�P�S,你可以使用 rpcinfo �碛^察的。

[root@www ~]# rpcinfo -p [IP|hostname]
 

 

 

 

Client端的操作:
你要如何�燧d NFS 伺服器所提供的�n案系�y呢?基本上,可以�@�幼觯�
  1. �_�J本地端已���恿� rpcbind 服�眨�
  2. �呙� NFS 伺服器分享的目�有哪些,�K�t解我��是否可以使用 (showmount; )
  3. 在本地端建立�A�要�燧d的�燧d�c目� (mkdir);
  4. 利用 mount �⑦h端主�C直接�燧d到相�P目�。

 

�o法�燧d的原因分析:

 

1.    用�舳说闹�C名�Q或 IP �W段不被允�S使用:

 

2.    伺服器或用�舳四承┓��瘴��樱�

 

3.    被防火���n掉了:

 

 
 
自��燧d autofs 的使用
在一般 NFS �n案系�y的使用情�r中,如果用�舳艘�使用伺服器端所提供的 NFS �n案系�y�r,要嘛就是得在 /etc/rc.d/rc.local ��中�O定�_�C�r�燧d,要嘛就得要登入系�y後手�永�用 mount ��燧d。 此外,用�舳说靡��A先手�拥慕�立好�燧d�c目�,然後�燧d上�怼5�是�@�拥氖褂们�r恐怕有�c小���}。

 

 

NFS �n案系�y�c�W路�B�的困�_:
我��知道 NFS 伺服器�c用�舳说倪B�或�S不��永�h存在,而 RPC �@��服�沼滞τ���的,如果�燧d了 NFS 伺服器後,任何一方�x�都可能造成另外一方老是在等待逾�r~而且,�燧d的 NFS �n案系�y可能又不是常常被使用,但若不�燧d的�,有�r候�o急要使用�r又得通知系�y管理�T,�@又很不方便...啊!好���的感�X啊~@_@
所以,�我���Q��思考的角度�碛��一下使用 NFS 的情境:
  • 可不可以�用�舳嗽谟惺褂玫� NFS �n案系�y的需求�r才�系�y自��燧d?
  • �� NFS �n案系�y使用完��後,可不可以� NFS 自�有遁d,以避免可能的 RPC �e�`?
如果能�_到上述的功能,那就太完美啦!有�]有�@�|西呢?有的,在�F在的 Linux �h境下�@是可以�_成的理想!用的就是 autofs �@��服�绽玻�
  • 建立主�O定�n /etc/auto.master ,�K指定��y的特定目�
�@��主要�O定�n的�热莺芎��危�只要有要被持�m��y的目�及『�Y料����n』即可。那���Y料����n的�n名是可以自行�O定的,在�B哥�@��例子��中我使用 /etc/auto.nfs �砻�名。

[root@clientlinux ~]# vim /etc/auto.master
/home/nfsfile /etc/auto.nfs

上述�Y料中比�^需要注意的是,那�� /home/nfsfile 目�不需要存在,因�� autofs ��主�拥慕�立�目�!如果你建立了,可能反而��出���}~因此,先�_定一下�]有�目�吧!

 

 

建立�Y料����n�� (/etc/auto.nfs) 的�燧d�Y��c伺服器����Y源
����我��所指定的 /etc/auto.nfs 是自行�O定的,所以�@���n案是不存在的。那�N�@���n案的格式是如何呢?你可以�@�涌矗�

[本地端次目� ] [-�燧d���] [伺服器所提供的目�]
�x��c��担�
[本地端次目� ] :指的就是在 /etc/auto.master �戎付ǖ哪夸�之次目�
[-�燧d��� ]    :就是前一小�提到的 rw,bg,soft 等等的��道玻】捎锌�o;
[伺服器所提供的目� ] :例如 192.168.100.254:/home/public 等
 
[root@clientlinux ~]# vim /etc/auto.nfs
public    -rw,bg,soft,rsize=32768,wsize=32768 192.168.100.254:/home/public
testing -rw,bg,soft,rsize=32768,wsize=32768 192.168.100.254:/home/test
temp      -rw,bg,soft,rsize=32768,wsize=32768 192.168.100.254:/tmp
# ��挡糠郑�只要最前面加�� - 符�即可!

�@�泳涂梢越�立���了!要注意的是,那些 /home/nfsfile/public 是不需要事先建立的! 咱��的 autofs ��事情�r�硖�理喔!好了,接下�碜�我��看看如何���H�\作吧!

 

 

���H�\作�c�^察
�O定�n�O定妥��後,��然就是要��� autofs 啦!

[root@clientlinux ~]# /etc/init.d/autofs stop
[root@clientlinux ~]# /etc/init.d/autofs start
# 很奇怪!非常怪! CentOS 6.x 的 autofs 使用 restart ��失效!所以�B哥才�M行�纱�

假�O你目前�K�]有�燧d任何�碜� 192.168.100.254 �@部 NFS 伺服器的�Y源目�。好了, 那�我�����H�碛^察看看���重要的�Y料吧!先看看 /home/nfsfile ��不��主�拥谋唤�立? 然後,如果我要�M入 /home/nfsfile/public �r,�n案系�y��如何�化呢?

[root@clientlinux ~]# ll -d /home/nfsfile
drwxr-xr-x. 2 root root 0 2011-07-28 00:07 /home/nfsfile
# 仔�看,�����l�F /home/nfsfile 容量是 0 喔!那是正常的!因�槭� autofs 建立的
 
[root@clientlinux ~]# cd /home/nfsfile/public
[root@clientlinux public]# mount | grep nfsfile
192.168.100.254:/home/public on /home/nfsfile/public type nfs (rw,soft,rsize=32768,
wsize=32768,sloppy,vers=4,addr=192.168.100.254,clientaddr=192.168.100.10)
# 上面的�出是同一行!瞧!突然出�F�@��玩意�海∫�槭亲��燧d的嘛!
 
[root@clientlinux public]# df /home/nfsfile/public
�n案系�y                1K-�^段      已用     可用 已用% �燧d�c
192.168.100.254:/home/public
                       7104640    143104   6607040   3% /home/nfsfile/public
# �n案的�燧d也出�F�]�e!

呵呵!真是好啊!如此一�恚�如果真的有需要用到�目��r,系�y才��去相�Φ乃欧�器上面�燧d!若是一�子�]有使用,那�N�目�就��被卸�d呢!�@�泳�p少了很多不必要的使用�r�C啦!�不�e用吧! ^_^

 

 
     

 

案例演练:
模�M的�h境��B中,伺服器端的想法如下:
  1. 假�O伺服器的 IP �� 192.168.100.254 �@一部;
  2. /tmp 分享�榭勺x��,�K且不限制使用者身份的方式,分享�o所有 192.168.100.0/24 �@���W域中的所有��X;
  3. /home/nfs 分享的�傩�槲ㄗx,可提供除了�W域�鹊墓ぷ髡就猓�向 Internet 亦提供�Y料�热荩�
  4. /home/upload 做�� 192.168.100.0/24 �@���W域的�Y料上�髂夸�,其中,�@�� /home/upload 的使用者及所�偃航M�� nfs-upload �@��名字,他的 UID �c GID 均�� 210;
  5. /home/andy �@��目��H分享�o 192.168.100.10 �@部主�C,以提供�主�C上面 andy �@��使用者�硎褂茫�也就是�f, andy 在 192.168.100.10 及 192.168.100.254 均有�ぬ�,且�ぬ�均�� andy ,所以�A��_放 /home/andy �o andy 使用他的家目�啦!
伺服器端�O定的��地演�:
好了,那�N�你先不要看底下的答案,先自己�庸P或者直接在自己的�C器上面�邮肿髯骺矗�等到得到你要的答案之後,再看底下的�f明吧!
  1. 首先,就是要建立 /etc/exports �@���n案的�热�樱�你可以�@���吧!

[root@www ~]# vim /etc/exports
/tmp          192.168.100.0/24(rw,no_root_squash)
/home/nfs     192.168.100.0/24(ro) *(ro,all_squash)
/home/upload 192.168.100.0/24(rw,all_squash,anonuid=210,anongid=210)
/home/andy    192.168.100.10(rw)

 
  1. 再�恚�就是要建立每�����的目�的���H Linux �嘞蘖耍∥��一��一���砜矗�

# 1. /tmp
[root@www ~]# ll -d /tmp
drwxrwxrwt. 12 root root 4096 2011-07-27 23:49 /tmp
 
# 2. /home/nfs
[root@www ~]# mkdir -p /home/nfs
[root@www ~]# chmod 755 -R /home/nfs
# 修改�^��栏竦�n案�嘞�⒛夸��c�n案�O定成唯�x!不能��入的��B,��更保�U一�c!
 
# 3. /home/upload
[root@www ~]# groupadd -g 210 nfs-upload
[root@www ~]# useradd -g 210 -u 210 -M nfs-upload
# 先建立���的�ぬ��c群�M名�Q及 UID 喔!
[root@www ~]# mkdir -p /home/upload
[root@www ~]# chown -R nfs-upload:nfs-upload /home/upload
# 修改�碛姓撸∪绱耍��t使用者�c目�的�嘞薅荚O定妥���樱�
 
# 4. /home/andy
[root@www ~]# useradd andy
[root@www ~]# ll -d /home/andy
drwx------. 4 andy andy 4096 2011-07-28 00:15 /home/andy

�@�幼右�恚��嘞薜���}大概就可以解�Q�樱�
  1. 重新��� nfs 服�眨�

[root@www ~]# /etc/init.d/nfs restart

 
  1. 192.168.100.10 �@部�C器上面演�一下:

# 1. �_�J�h端伺服器的可用目�:
[root@clientlinux ~]# showmount -e 192.168.100.254
Export list for 192.168.100.254:
/home/andy    192.168.100.10
/home/upload 192.168.100.0/24
/home/nfs     (everyone)
/tmp          192.168.100.0/24
 
# 2. 建立�燧d�c:
[root@clientlinux ~]# mkdir -p /mnt/{tmp,nfs,upload,andy}
 
# 3. ���H�燧d:
[root@clientlinux ~]# mount -t nfs 192.168.100.254:/tmp          /mnt/tmp
[root@clientlinux ~]# mount -t nfs 192.168.100.254:/home/nfs     /mnt/nfs
[root@clientlinux ~]# mount -t nfs 192.168.100.254:/home/upload /mnt/upload
[root@clientlinux ~]# mount -t nfs 192.168.100.254:/home/andy    /mnt/andy

 

 

 

 

 

 

 

你可能感兴趣的:(工作,服务器,procedure,nfs,休闲,相关性)