NFS部署及优化(一)


一、NFS的基本概念

NFS == network file system 网络文件系统

必然通过网络通信来实现文件的访问和写入,所以做这个实验的话最好有两台虚拟机

配置:

A:一个192.169.50.201为server端

B:一个192.169.50.200为client端

会有一个server端、一个client端

 #cs这样的通信形式

允许一个系统在网络上与他人共享目录和文件,通过使用NFS,用户和程序可以像访问本地的文件一样,去访问远程的文件,也就是说通过NFS服务,就可以让这台机器访问远程的文件,就好比是访问自己的文件一样!

二、常见问题

比如:我们现在有三台机器,A、B、C 他们需要访问同一个目录,而这个目录中都是图片,传统的做法是分别将这些图片放到A上、B上、C上,如果A上的图片发生了改变,那么需要将这些改变的图片分别同步到B上、C上。显然这样做是非常的繁琐,也比较浪费磁盘空间,更浪费带宽资源。

三、解决办法:

在A上搭建一个NFS服务,把A上的目录同时共享给B和C,B和C将A共享的目录放在自己的本地上,这个动作叫做挂载(跟磁盘挂载一个性质),也就是把A共享的目录挂载到B和C上。

这时候在用户看来,A、B、C同时存在一样的目录,里面的文件也是一样的,我去改动任何一个机器上的该目录下的文件,其他两个服务器都会跟着改动,这个就是NFS的优势。

四、部署NFS

在A机器上


(1)安装nfs和rpcbind包

[root@shiyanji ~]# yum install -y nfs-utils rpcbind

# rpcbind的功能是用来通信的,想要实现server端和client端的通信就必须要有rpcbind

(2)[root@shiyanji ~]# df -h #目的是查看选择下要共享的目录

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda3              18G  5.0G   12G  30% /

tmpfs                 947M     0  947M   0% /dev/shm

/dev/sda1             190M   29M  152M  16% /boot

/dev/mapper/vg_nfs-lv_nfs

                      985M  1.3M  932M   1% /nfs

实验中,我们要做的共享目录是/nfs。

(3)[root@shiyanji ~]# vim /etc/exports #编辑写入要共享的目录

NFS部署及优化(一)_linux

/nfs 192.169.50.200(rw,sync) #也可以写一个网段如:192.169.50.0/24 括号里可以写ro只读,rw是可读可写,sync是同步

注意: 在A机器上(server端),编辑的这个文件目的是把自己的目录共享给哪个ip或者网段。

(5)启动rpcbind和nfs服务

[root@shiyanji ~]# /etc/init.d/rpcbind start #启动rpcbind服务

[root@shiyanji ~]# /etc/init.d/nfs start #启动nfs

注意: 重启时注意先后顺序!


在B机子上


(1)安装nfs包

[root@kehuji ~]# yum -y install nfs-utils

(2)显示共享目录

[root@kehuji ~]# showmount -e 192.169.50.201 #这个ip是我们的server服务端

Export list for 192.169.50.201:

/nfs 192.169.50.200  #这个是我们服务端共享的目录和共享给哪台机器ip

(3)挂载

[root@kehuji ~]# mkdir /shiyan

[root@kehuji ~]# mount -t nfs 192.169.50.201:/nfs   /shiyan

[root@kehuji ~]# df -h

Filesystem           Size  Used Avail Use% Mounted on

/dev/sda3             16G  4.9G  9.9G  33% /

tmpfs                504M     0  504M   0% /dev/shm

/dev/sda1            190M   25M  156M  14% /boot

192.169.50.201:/nfs  985M  1.3M  932M   1% /shiyan


权限问题


在B机器上:

[root@kehuji ~]# cd /shiyan

[root@kehuji shiyan]# touch 1.txt

touch: cannot touch `1.txt': Permission denied

#原因是A机器上共享的/nfs目录默认挂载过来是有一个用户的, 必然是/nfs共享目录的权限问题,至少是其他用户不可写!

在A机器上:

[root@shiyanji ~]# ll -d /nfs

drwxr-xr-x 3 root root 4096 Apr 27 07:59 /nfs

#可见共享的这个/nfs目录的权限是755,除了属主外,属组和其他用户的权限是不可写的。

解决办法:

在A机器上:

[root@shiyanji ~]# cd /nfs

[root@shiyanji nfs]# chmod 777 .

[root@shiyanji nfs]# ll -d .

drwxrwxrwx 3 root root 4096 Apr 27 07:59 .

# 将/nfs目录的权限改为777,任何用户可读可写可执行!

在B机器上:

[root@kehuji shiyan]# touch 1.txt

[root@kehuji shiyan]# ll

total 16

-rw-r--r-- 1 nfsnobody nfsnobody     0 Apr 27 08:22 1.txt

drwx------ 2 root      root      16384 Apr 27 07:59 lost+found

# 这个时候看到新建的1.txt的文件属主和属组都是nfsnobody!


这小节遗留问题:这个1.txt的属主和属组是否可以指定呢?下节我们接着讨论。。