1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > Ubuntu 搭建 配置 nfs服务器

Ubuntu 搭建 配置 nfs服务器

时间:2022-06-24 21:44:23

相关推荐

Ubuntu 搭建 配置 nfs服务器

什么是NFS?

NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

通过nfs,我们可以实现不同设备下文件的访问。(尤其是跨设备拷贝大型文件的时候)

注:通过nfs还能实现从uboot直接读取远程文件系统

搭建好了NFS服务器以后,其他的设备就可以通过网络对服务器的nfs进行挂载并访问。

NFS的安装与配置

安装

sudo apt-get install nfs-kernel-server -y

增加配置

sudo vim /etc/exports

增加策略,每个策略一行

设定格式如下:

共享目录 主机名称或者IP(参数1, 参数2)

例如:

/nfs *(rw,sync,no_root_squash)

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

/nfs :要共享的路径

*:*通配,表示所有网段都可以访问

sync :同步写入硬盘

no_root_squash :nfs客户端共享目录使用者权限

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

启动

service nfs-kernel-server restart

(启动之前要确保对应的文件夹是存在的,否则会出现"Job for * canceled.")

停止

service nfs-kernel-server stop

查看是否启动

service nfs-kernel-server status

或者

netstat -a | grep nfs

或者

nfsstat

测试

#mkdir /mnt/nfs--在/mnt下创建nfs目录

#touch /nfs/nfstest --在/nfs目录下创建一个文件nfstest

#mount -t nfs localhost:/nfs /mnt/nfs --将主机/nfs目录挂载到/mnt/nfs下

#ls /mnt/nfs/ --查看/mnt/nfs/目录下有nfstest文件

#umount /mnt/nfs/--测试完后卸载掉

NFS的使用

客户端

mount -o nolock,tcp 服务器IP:/配置的共享路径 /映射到本机的路径

如:

mount -o nolock,tcp 192.168.5.113:/nfs /nfs --将5.113中的/nfs挂载到本地的/nfs下

服务器(其实服务器已经包含了客户端)

NFS的有关参数

刚刚所展示的NFS是简单的实现,其实它还有很多值得注意的地方,“参数”。

NFS的常用目录及常用命

/etc/exports NFS服务的主要配置文件

/usr/sbin/exportfs NFS服务的管理命令

/usr/sbin/showmount 客户端的查看命令

/var/lib/nfs/etab 记录NFS分享出来的目录的完整权限设定值

/var/lib/nfs/xtab 记录曾经登录过的客户端信息

NFS服务的配置文件为 /etc/exports,这个文件是NFS的主要配置文件,不过系统并没有默认值,所以这个文件不一定会存在,可能要使用vim手动建立,然后在文件里面写入配置内容。

/etc/exports文件内容格式:

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

这里的参数有两部分---服务端参数、客户端参数。

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

a. 输出目录:

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

b. 客户端:

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

客户端常用的指定方式

指定ip地址的主机:192.168.0.200

指定子网中的所有主机:192.168.0.0/24 192.168.0.0/255.255.255.0

指定域名的主机:

指定域中的所有主机:*.

所有主机:*

c. 选项:

选项用来设置输出目录的访问权限、用户映射等。

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服务器也不检查其父目录的权限,这样可以提高效率;

客户端

先来看服务端在/etc/exports 括号中可以指定的参数:

选项

描述

rw

允许读写权限

ro

只读权限

sync

同步模式(Default),所有数据在写入后可以请求

async

异步模式,数据在写入过程中可以写入

secure

NFS通过1024以下的安全TCP/IP端口发送(Default)

insecure

NFS可以通过所有端口发送

wdelay

如果多个用户要写入NFS目录,则归组写入 (Default)

no_wdelay

如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。

subtree_check

如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限 (Default)

no_subtree_check

与subtree_check对应

root_squash

Map requests from uid/gid 0 to the anonymous uid/gid.

no_root_squash

root用户具有根目录的完全管理访问权限。

all_squash

Map all uids and gids to the anonymous user. 对公共目录访问时较有用。

no_all_squash

保留共享文件的UID和GID (Default)

anonuid=UID

指定匿名用户访问时映射机的用户uid

anongid=GID

指定匿名用户访问时映射机的用户gid

常用配置示例如下:

/tmp*(rw,no_root_squash)

/public192.168.0.*(rw) *(ro)

/nfs/test192.168.0.100(rw)

/home/linux *.(rw,all_squash,anonuid=40,anongid=40)

/build buildhost[0-9].local.domain(rw)

/foo 2001:db8:9:e54::/64(rw) 192.0.2.0/24(rw)

客户端mount时的相关参数:

参数

描述

默认值

suid

nosuid

如果挂载点上面有任何 SUID(粘滞位) 的 binary 程序时,

你只要使用 nosuid 就可以取消 SUID 的功能!

suid

rw

ro

如在服务允许写的权限,但为了安全起见,可以挂载时指定仅使用读取权限挂载

rw

dev

nodev

一般只有 /dev 这个目录挂载时才会用到

dev

exec

noexec

是否具有执行 binary file 的权限?

如果掛载的只是资料区 (例如 /home),那么可以选择 noexec

exec

user

nouser

是否允许使用者进行挂载与卸载功能?

如果要保护系統,最好不要提供使用者進行掛载与卸载

nouser

auto

noauto

这个 auto 指的是『mount -a』时,是否自动挂载该挂载点。

如果你不需要这个 partition 随时被挂载,可以设为 noauto。

auto

上面是 mount 自带的参数,除此之外,nfs 还支持指定以下参数:

参数

参数功能

默认值

fg

bg

这两参数有点类似于进程中的fg、bg,指定fg mount时,会一直等到挂载成功或超时。指定bg时,挂载会在后台进行。

fg

soft

hard

为hard时,当C/S其中一台离线,则RPC 会持续的呼叫,直到对方恢复连线为止。如果是 soft ,那 RPC 会在 time out 后『重复』呼叫,而非『持续』呼叫,

因此系統的延迟会比较不明显。

hard

intr

当使用hard 方式時,若加上 intr 参数, 则当 RPC 持续呼叫中,该次的呼叫是可以被中断的 (interrupted)。

rsize

wsize

读(rsize)和写(wsize)的block块大小 (block size)。 这个设定值可以影响用户端与服务器端传送缓存区的大小。一来说,在LAN网络内,有足够内存时,这个值可以设的大一些。比如 32768 (bytes) ,用于提升数据传送速度。但也不能超过网络能够传送的最大值。

rsize=1024

wsize=1024

注意事项:

如果我们在启动了NFS之后又修改了/etc/exports,是不是还要重新启动nfs呢?这个时候我们就可以用exportfs命令来使改动立刻生效,该命令格式如下:

exportfs [-aruv]

-a :全部mount或者unmount /etc/exports中的内容

-r :重新mount /etc/exports中分享出来的目录

-u :umount 目录

-v :在 export 的时候,将详细的信息输出到屏幕上。

具体例子:

[root @test root]# exportfs -rv(全部重新export一次!)

exporting 192.168.0.100:/home/test

exporting 192.168.0.*:/home/public

exporting *.:/home/linux

exporting *:/home/public

exporting *:/tmp

reexporting 192.168.0.100:/home/test to kernel

具体例子:

[root @test root]#exportfs -au (全部都卸载了)

[root @test root]# vi /etc/exports

/home/soft 192.168.2.11(rw)

[root@localhost init.d]# nfs start

-bash: nfs: command not found

[root@localhost init.d]# ./nfs start

Starting NFS services: [ OK ]

Starting NFS quotas: [ OK ]

Starting NFS daemon: [ OK ]

Starting NFS mountd: [ OK ]

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。