分享
 
 
 

NFS简介

王朝other·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

大家好

:

下面是小弟写的一些介绍

NFS

的文章,

由於想参与网路管理的工作学长指派这一个主题给我报告,

由於本身对这方面并不太懂,

只是找一些书籍随便拼拼凑凑,

不知道有没有写到重点,或是一些要点没有提到,因此post出来希望熟悉NFS

的高手们能花一点时间看看我的文章

然後mail给我,指出错误的地方,或者直接reply也可以,

谢谢

!

E-mail

:

u3430854@sparc20.ncu.edu.tw

===========================================================================

What

is

NFS

?

Network

File

System

NFS

是由SUN公司发展,

并於1984年推出,

NFS是一个RPC

service

,

它使我们能够达到档案的共享,

它的设计是为了在不同的系统间使用,

以它的通讯协定设计与主机及作业系统无关.当使用者想用远端档案时只

要用"mount"就可把remote档案系统挂接在自己的档案系统之下,使得远端

的档案使用上和local机器的档案没两样.

machine

A

machine

B

bin

etc

usr

bin

etc

usr

man

man

share

local

假如我们在机器A上,

要把机器B上的

/usr/man

挂接到machine

A

/usr/man只要下

mount

machine_name:/usr/man

/usr/home

就可mount过来.而我们不只是可以mount目录,就是一个档也是可以的.在

挂接之後我们只能对档案做reading

(or

writing)

的动作,而不能在

remote

machie上把此档或目录move,delete掉

,

但须注意的是如我们

mount

/usr

,

不能再mount

/usr底下的目录,

否则会发生错误

Servers

&

Clients

NFS就是促使Servers上的档案能被其他的机器mount,而达到资源共享,

享用这些档案的机器就可称为Client,一个client可以从server上mount一

个档或是一个层次的目录(file

hierarchies)

.

然而事实上任何一台机器

都可以做NFS

server

or

NFS

client

,甚至同时为NFS

server

and

NFS

client

也可以.

Server's

Exporting

&

Client's

Mounting

NFS

server

所export

出来的档案或目录都记录在

/etc/exports

一个档中,当我们启动NFS

server

/etc/rc.local

的这一个script

会自动的启动

exportfs

这一个程式

,

搜寻

/etc/exports

这一个档是否

存在,

并且赋予正确的权限给所有export出去的

file

hierarchies

.

但须注意的是,只有server所export出去的路径,NFS

client才能够mount

,

同样的当启动client时

,

系统会自动去mount所有server

export的路径,

而mount到的所有路径都会记录在

/etc/fstab

,

类似如下的fstab档

/dev/sd0a

/

4.2

rw

1

1

/dev/sd0h

/tmp

4.2

rw

1

3

/dev/sd0g

/usr

4.2

rw

1

2

/dev/fd0

/pcfs

pcfs

rw,noauto

0

0

sparc20:/swap

/swap

nfs

rw,intr,bg,soft

0

0

sparc17:/home

/home

nfs

rw,intr,bg,soft

0

0

sparc17:/home3

/home3

nfs

rw,intr,bg,soft

0

0

sparc14:/home4

/home4

nfs

rw,intr,bg,soft

0

0

sparc20:/home2

/home2

nfs

rw,intr,bg,soft

0

0

sparc20:/var/spool/mail

/var/spool/mail

nfs

rw,intr,bg,soft

0

0

rs970:/home1

/home1

nfs

rw,intr,bg,soft

0

0

Noted

:

当client

mount

到一个路径,绝对不是说copy

server上的这一个路径

到local的机器上,我们可以用

cd

进入这一个mount到的路径,就如同是使用

local

directory一样

Setting

Up

a

NFS

Server

1.

定义机器为

NFS

file

server

2.

划分server's

disk

,定义哪一些partitions

是要提供出来作为

client

所共享的file

system

3.

Client

Form

上定义每一台client

的参数

4.

写出

/etc/exports

(一般系统都有一个default

exports)

5.

重新boot

NFS

server

or

用指令

exportfs

-a

输出所有的

directories

并且用

nfsd

8

&

启动

nfsd守护程式,常驻在背景

ps.

一些细节

1.

检查

/etc/exports

输出路径的权限,确定只有root能修改,

all

user只能read

2.

用exportfs

去增加或删除directories

exportfs

-o

access=engineering,ro=dancer

/usr

exportfs

-u

/usr

3.

假如你的机器没有NIS(YP

server)的服务,当更改资料时记得修改

/etc/passwd

/etc/group

/etc/hosts

/etc/ethers

4.

为你自己的network

设置security

exportfs的语法

/usr/etc/exportfs

[

-avu

]

[

-o

option

]

[

directory

]

-a

:

/etc/exports

中所有路径export出去

-u

:

export出去的路径卸下

,

exportfs

-u

/usr

-o

option

:

exportfs

-o

ro

/usr

,所有人对/usr

都为read

only

option

还有

root

=

hostname

,

access

=

client

access

=

netgroup

For

example

:

exportfs

-a

把exports中的路径全部export出去

exportfs

-o

access=engineering:other

/usr

/usr

这路径export後只有engineering

and

other

这两个

group

能够

read

&

write

exportfs

-o

access=oak,ro=dancer

/usr

设定dancer

这台client

/usr

为read

only

,且只有

oak这一个

group

能做read

/etc/exports

档的□例

syntax

:

directory

-option[,option]

(设定两个group能rw)

/usr

-access=engineering:accounting

/home

-access=engineering:accounting

/var/spool/mail

-access=engineering:accounting

/export/exec/sun3

-access=engineering:accounting

/export/exec/sun3.sunos.4.1

-access=engineering:accounting

/export/exec/kvm/sun3.sunos.4.1

-access=engineering:accounting

/export/root/birch

-access=birch,root=birch

/export/swap/birch

-access=birch,root=birch

/export/root/oak

-access=oak,root=oak

/export/swap/oak

-access=oak,root=oak

/export/root/willow

-access=willow,root=willow

/export/swap/willow

-access=willow,root=willow

/export/root/pine

-accsee=pine,root=pine

/export/swap/pine

-accsee=pine,root=pine

(access=client

,

root=hostname

如此只有这一台client的superuser有权力rw)

Setting

Up

a

NFS

Client

1.

宣告机器为没有磁碟机或没有资料的Client,在使用SunInstall之前

2.

编辑好

/etc/fstab

这一个档,确定要mount的路径都在fstab中

3.

依照fstab所设的内容,在Client上设定好Mount

points

(mount_points

就是用mkdir

设exports所输出的路径)

4.

确定我们所要mount的路径,都有出现在

/etc/exports

5.

可以启动mount去连结server上的directories

(

mount

-a

)

/etc/fstab

档的□例

syntax

filesystem

directory

type

options

freq

pass

oak:/export/root/boomer

/

nfs

rw

0

0

^^^

因为档案在server上,not

on

client

所以client的设定为0

oak:/export/exec/sun3

/usr

nfs

ro

0

0

oak:/export/exec/kvm/sun3

/usr/kvm

nfs

ro

0

0

oak:/usr/share

/usr/share

nfs

ro

0

0

oak:/home/oak

/home/oak

nfs

rw,bg

0

0

§

mount

的语法

syntax

:

mount

-t

type

[-rv]

-o

[option]

server:pathname

/mount_point

MOUNT

:

mount

-a

把/etc/fstab

中所列的路径全部挂上

mount

-o

ro,soft,bg

dancer:/usr/local

/usr/local/dancer

把dancer

server

的/usr/local

mount

client的

/usr/local/dancer

并且是read

only

-t

type

:

你所要mount的型别,

nfs

or

4.2

-r

:

所mount的路径定为read

only

-v

:

mount过程的每一个动作,都有messages

传回到萤幕上

hard

:

重复要求,直到server回应为止,但如server一直不回应

the

server

may

be

down

!

soft

:

当client的请求得不到回应,retry

one

time

传回

error

message

bg

:

当第一次请求不成功,第二次的mount将放到背景执行

fg

:

retries

mount

都一直在提示符号下进行

intr

:

当正在进行

NFS

请求时,允许用键盘中断

mount

成功时的message

NFS

server

hostname

ok

mount

fail

NFS

server

hostname

not

responding,

still

trying

.

.

.hostname

server

not

reponding:

RPC:

Timed

out

§

UNMOUNT

:

umount

mount_point

umount

-a

卸下所有已经mount上的路径

==========================================================================

How

NFS

Work

?

当我们启动

NFS

file

server

时,/etc/rc.local

会自动启动exportfs这

一个程式,指定可以export的档案或目录,而我们所能mount的也只能是其所指定

的目录.

NFS

架设在

XDR/RPC的协定之上

XDR

:

(eXternal

Data

Representation)

外部资料表示法

XDR(eXternal

Data

Representation)

提供一种方法把资料从一种格式转换

成另一种标准资料格式表示法,确保在不同的电脑,作业系统及电脑语言中,所

有资料代表的意义都是相同的

RPC

:

(Remote

Procedure

Calls)

远端程序呼叫

RPC(Remote

Procedure

Calls)

远端程序呼叫,

请求远端电脑给予服务.

托器(client)就会透过网路传送RPC到远端电脑,请求服务.

(一般

local

machine

:

client

remote

machine

:

server

)

NFS

如何运用

RPC

传送资料

客户端process

主服务端process

┌————┐

┌—————┐

客户端

主服务站

│routines│

routines

└—┬——┘

└┬————┘

本地程序呼叫

(1)

(10)

(6)

(5)

┌———┴┐

┌————┴┐

客户端

主服务端

stub

stub

└—┬——┘

└┬————┘

系统呼叫

(2)

(9)

(7)

(4)

┌———┴┐

(8)

┌————┴┐

│network

<——————┤

network

│routines├——————>

routines

└————┘

(3)

└—————┘

本地系统核心

网路通讯

远端系统核心

(1)

client

送出讯息,请求服务

(2)

client

stub

(客户株)

把client

送出的参数转换成XDR---标准资料

格式并用系统呼叫(system

call)

把讯息送到网路上

(3)

讯息经过网路送达远端主机系统

(4)

远端主机将接受到的讯息传给server

stub

(服务站株)

(5)

把XDR形式的资料,转换成符合主机端的格式,取出client发出的服务

请求参数,送给server

(6)

--

(10)

则是逆向而行

,

server

送出服务给

client

rc.local

启动守护程式

一个NFS

server

inet

,

portmap

,

nfs

,

mount

此四个守护程式,保

持在背景执行的状态下才能运作.

(if

running

NIS

must

add

ypbind

daemon)

当启动

NFS

file

server

时,

the

/etc/rc.local

script

会做如下的动作

1.

执行exportfs

,

读取server's

/etc/exports

告诉kernel

所要输出的file

hierarchies

存取的权限

(

exportfs

-a

)

2.

启动

rpc.mountd

daemon

nfsd

daemon

(通常是

8

个)

(

rpc.mountd

-n

nfsd

8

&

echo

-n

'nfsd'

)

当启动

NFS

client

rc.local

会做如下的动作

1.

启动

boid

daemons

处理读写的程序

(biod

8

echo

-n

'

biod'

)

2.

执行

mount

-vat

nfs

读取client's

/etc/fstab

并且

mount

有属於

NFS-type

的files

NFS

daemons

(守护程式)

的功用

nfsd,

biod,

rpc.mountd,

inetd,

portmap

都可在/usr/etc

下找到

nfsd

:

依client

对档案系统的需求情况,

而启动

"

file

system

request

daemon

"

应付client

的需求,而一般file

system

request

daemon

的数目

"

8

",

这也就是我们在rc.local

中写

"

nfsd

8

&

"的原因了

biod

:

此指令是在NFS

client上用的

,

用来启动

"

asynchronous

block

I/O

daemon"

用来建立buffer

cache

,

处理在client上的读写

mountd

:

mountd

是一台

RPC

server

,启动rpc.mountd

daemon後

它会读取

/etc/xtab

查看哪一台client正在mount

哪一个file

system,并回

应client

所要mount

的路径

(mountd处理的过程可用

showmount

来看)

inetd

:

inetd

(Internet

services

daemon)

,

当系统启动时rc.local

会启动inetd

读取

inetd.conf

这一个

configuration-file

,

读取网路上所有

server's

address

,

连结启动inetd.conf中所

有的server

,

当client

请求服务时,

inetd

就会为clinet

启动

相关的server

daemon

负责任务,

如user

telnet

,

inetd

启动telnetd

迎合user

telnet

的需求,

其馀像

ftp

,

finger

,

rlogin

之类的应用程式

,

inetd

也都会启动相对应的

daemons,

ftpd,

fingerd,

rloingd

portmap

:

portmap

是一台server

,

主要功能

转换

TCP/IP

通讯协定的

port

number

变成

RPC

program

number

,

因为这样clinet才能

做RPC

calls

一般

RPC

server

是被inetd

所启动的,

所以portmap

必须

在inetd之前启动,

否则无法做

RPC

call

NFS

的网路安全的

NFS

使server上的档案能被client所取用,

乍看之下好像server

的档案任何人都可取用没什麽保护性,

其实不是如此的.

一开始server

exportfs

之前在

/etc/exporrc

中就已经设定了档案的使用权限,

/usr/src

-access=engineering:accounting

就是限定只有

rcgineering

accounting

这两台

client

才能

mount

/usr/src

/usr/src

-access=oak,root=oak

这是说只有

oak

这台

cilent

mount这一个路径

且只有

oak

client's

superuser

才能行使

read

&

write

的权力

另外管理者为了维护

exported

mounted

的安全,

一定要建

立公共(public)和私人(secret)的

key(password),

然而这些安全性

问题是要建立在

NIS

(network

infomation

system)

上的,

有一个

/etc/publickey档

,里面记录了public

and

secret

keys

,

而这些key

是依照

machine_name

user_name

,以16

进位码表示出来的,

管理

者可在有NIS的机器上用

newkey

-u

username

给予user

login

权力

newkey

-h

hostname

造出login

此机器时所需的password

在NFS刚安装时

user

"nobody"

任何人都可以进入,

所以管理者

一定要做修改,

以保护资料的安全.

当使用者为

nobody

publickey

的内容

netname

user's

public

key

:

user's

secret

key

nobody

3d91f44568fbbefada5a7:7675cd9b8753b5db09dabf12

在管理者给予user权力之後,

user

就可使用

chkey

修改自己的

secret

key

创造自己的帐号路口,

willow%

chkey

Generating

new

key

for

username

password

:

Sending

key

change

request

to

server

...

Done.

willow%

所设定的password

是使用者位於

NIS

中的加密键

,

当我们login

NIS

就会将此密码解开,(因为publickey中是以16进位码记录)

,

存放到

keyserv

里加以保管,

再将加密键传给client

,

当client

发出请求时

,

此键会附在每个NFS

请求上一起送到

NFS

server

上,

当加密键和server上

所保存的keyserv核对无错後,

请求就会被接受

When

fail

to

mount

server

1.

rpcinfo

-p

server_name

去查看此server是否存在

2.

rpcinfo

-u

server_name

mount

查看mountd

daemon

是否有

在server上执行

3.

假如server

都没问题,检查

server

client

之间的

Ethernet

connetions

4.

在client

ps

ax

看portmap

and

several

biod

daemons

running

or

not

!

(rpcinfo

:

用来对

RPC

server

RPC

呼叫,回传远端程序呼叫

过程中的讯息)

一些mount

失败的错误讯息

1.

/etc/mtab

:

No

such

file

or

directory

mtab

这一个路径或是档案必须存在,在mount之前

2.

mount

:

...

Block

device

required

远端的机器名称可能打错了

3.

mount:

...

not

found

in

/etc/fstab

fstab

一定要存在,client

/etc下

4.

...

not

in

hosts

database

/etc/hosts

没有这一个

hosts

database

,

或是

NIS

的daemon,

ypbind

没有在执行

5.

Must

be

root

to

use

mount

一般都只有

root

才能mount

,所以mount之前先成

为superuser

6.

Stale

NFS

file

handle

当我们已经mount

上的file

or

directory

,在server

上突然被remove

or

unexport

,就会出现此讯息 (http://www.fanqiang.com) 进入

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有