数据库
MySQL
ORACLE
占位哈哈
占位哈哈
占位哈哈
占位哈哈
占位哈哈
占位哈哈
占位哈哈
占位哈哈
Linux运维
中间件
shell脚本
占位哈哈
占位哈哈
占位哈哈
占位哈哈
占位哈哈
占位哈哈
占位哈哈
首页 动态 发帖 版块 我的
 退出
游客  
等级:
金豆:
经验:
首页  /  linux运维  /  linux服务  /  正文

nfs的部署和优化

  787 
 0
 0

NFS 服务会经常用到,用于在网络上共享存储。这样讲,你对 NFS 可能不太了解,我们举一个例子来说明一下 NFS 是用来做什么的。假如有三台机器 A、 B、 C,它们需要访问同一个目录,目录中都是图片,传统的做法是把这些图片分别放到 A、 B、 C。但是,若使用 NFS,只需要放到 A 上,然后 A 共享给 B 和 C 即可。访问的时候, B 和 C 是通过网络的方式去访问 A 上的那个目录的。

服务端配置 NFSCentOS 上使用 NFS 服务,需要安装两个包(nfs-utils 和 rpcbind), 不过当使用 yum 安装nfs-utils 时会把 rpcbind 一起安装上:

# yum install -y nfs-utils

在之前的 CentOS 版本中,是需要安装 portmap 包的,从 CentOS6 开始,就改为 rpmbind了。 NFS 配置起来还是蛮简单的,只需要编辑配置文件/etc/exports 即可。下面先创建一个简单的 NFS 服务器。首先是修改配置文件,默认该文件为空,现在编辑它:

# vim /etc/exports //写入如下内容:
/home/ 192.168.0.0/24(rw,sync,all_squash,anonuid=501,anongid=501)

这个配置文件就这样简单一行。共分为三部分,第一部分就是本地要共享出去的目录,第二部分为允许访问的主机(可以是一个 IP 也可以是一个 IP 段)第三部分就是小括号里面的,为一些权限选项。关于第三部分,我简单介绍一下:

rw:读写。

ro:只读。

sync:同步模式,内存中数据时时写入磁盘。

async:不同步,把内存中数据定期写入磁盘中。

no_root_squash:加上这个选项后, root 用户就会对共享的目录拥有至高的权限控制,就像是对本机的目录操作一样。不安全,不建议使用。75

root_squash:和上面的选项对应, root 用户对共享目录的权限不高,只有普通用户的权限,即限制了 root。

all_squash:不管使用 NFS 的用户是谁,他的身份都会被限定成为一个指定的普通用户

身份。

anonuid/anongid:要和 root_squash 以及 all_squash 一同使用,用于指定使用 NFS 的用户限定后的 uid 和 gid,前提是本机的/etc/passwd 中存在这个 uid 和 gid。

介绍了上面的相关的权限选项后,再来分析一下我们刚刚配置的那个/etc/exports 文件。其中要共享的目录为/home,信任的主机为 192.168.0.0/24 这个网段,权限为读写,同步,限定所有使用者,并且限定的 uid 和 gid 都为 501。编辑好配置文件后,就该启动 NFS 服务了:

# /etc/init.d/rpcbind start; 
/etc/init.d/nfs start

在启动 nfs 服务之前,需要先启动 rpcbind 服务,之前 CentOS 老版本中并不是 rpcbind,而是叫做 portmap。

客户端上挂载 NFS客户端在挂载 NFS 之前,我们需要先看一看服务端都共享了哪些目录,这需要使用showmount 命令,但是这个命令是 nfs-utils 这个包所带的,所以同样需要安装 nfs-utils:

# yum install -y nfs-utils

现在可以看看服务器端都共享了哪些目录了:

# showmount -e 192.168.0.10
Export list for 192.168.0.10:
/home 192.168.0.0/24

说明:其中 192.168.0.10 为 NFS 服务端 ip。可以看到刚才我们在服务端配置的 nfs 共享信息。 showmount -e 加 IP 就可以查看 NFS的共享情况,上例中,就可以看到 192.168.0.10 的共享目录为/home,信任主机为192.168.0.0/24 这个网段。

下面的命令是在客户端上挂载 NFS:

# mount -t nfs -o nfsvers=3 192.168.137.10:/home/ /mnt/76

说明: -o 后面跟挂载选项,如果不加 -onfsvers=3 则在挂载目录下的文件属主和组都是nobody,如果指定 nfsvers=3 则显示 501,所以尽量加上这个选项,避免权限混乱。

# df -h
文件系统 容量 已用 可用 已用%% 挂载点
/dev/sda3 14G 6.4G 6.7G 50% /
tmpfs 160M 0 160M 0% /dev/shm
/dev/sda1 97M 27M 66M 29% /boot
/dev/sdb5 989M 19M 920M 3% /home
192.168.0.10:/home/
989M 19M 920M 3% /mnt

用 df -h 命令可以看到多出来一个/mnt 分区,它就是 NFS 共享的目录了。

命令 exportfs

在这一章节里,使用的命令不多,另外还有一个常用的命令那就是 exportfs,它的常用选项为[-aruv]

-a :全部挂载或者卸载

-r :重新挂载

-u :卸载某一个目录

-v :显示共享的目录

使用 exportfs 命令,当改变/etc/exports 配置文件后,不用重启 nfs 服务直接用这个 exportfs即可。接下来我们做一个实验,先改一下服务端的配置文件:

# vim /etc/exports
增加一行:
/tmp/ 192.168.0.0/24(rw,sync,no_root_squash)
然后服务端上执行命令:
# exportfs -arv
exporting 192.168.0.0/24:/tmp
exporting 192.168.0.0/24:/home77

在之前的命令中用到了 mount 命令来挂载 nfs,其实 mount 这个 nfs 服务还是有些说法的。首先是用-t nfs 来指定挂载的类型为 nfs。另外在使用 nfs 时,常用一个选项就是-o nolock 了,即在挂载 nfs 服务时,不加锁。 在客户端上执行:

# mkdir /test
# mount -t nfs -o nolock 192.168.0.10:/tmp/ /test/

我们还可以把要挂载的 nfs 目录写到 client 上的/etc/fstab 文件中,挂载时只需要执行mount -a 即可。在 /etc/fstab 里加一行:

192.168.0.10:/tmp/ /test nfs nolock 0 0

因为刚刚挂载过,所以先卸载:

# umount /test/

然后执行:

# mount -a

这样也可以挂载上,而且以后开机会自动挂载上。关于 NFS 部分就讲这么多,内容并

不多,相信你很快就能掌握!


写在最好

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

摘自《阿铭Linux》,感谢阿铭!


标签:
作者签名: 只有努力,才会有收获   楼主  2021-11-25 16:48:58

点赞推荐

回复列表
合作伙伴:
Powered by 运维术 8.3.2
© 2017-2024 模板 by 黑衣人
您的IP: 3.145.85.151 , 2024-09-19 09:03:37
Powered by 运维术 8.3.2
© 2017-2024 模板 by 黑衣人
(0) 分享
分享
取消
我的客服