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包
[[email protected] ~]# yum install -y nfs-utils rpcbind
# rpcbind的功能是用来通信的,想要实现server端和client端的通信就必须要有rpcbind
(2)[[email protected] ~]# 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)[[email protected] ~]# vim /etc/exports #编辑写入要共享的目录
/nfs 192.169.50.200(rw,sync) #也可以写一个网段如:192.169.50.0/24 括号里可以写ro只读,rw是可读可写,sync是同步
注意: 在A机器上(server端),编辑的这个文件目的是把自己的目录共享给哪个ip或者网段。
(5)启动rpcbind和nfs服务
[[email protected] ~]# /etc/init.d/rpcbind start #启动rpcbind服务
[[email protected] ~]# /etc/init.d/nfs start #启动nfs
注意: 重启时注意先后顺序!
在B机子上
(1)安装nfs包
[[email protected] ~]# yum -y install nfs-utils
(2)显示共享目录
[[email protected] ~]# showmount -e 192.169.50.201 #这个ip是我们的server服务端
Export list for 192.169.50.201:
/nfs 192.169.50.200 #这个是我们服务端共享的目录和共享给哪台机器ip
(3)挂载
[[email protected] ~]# mkdir /shiyan
[[email protected] ~]# mount -t nfs 192.169.50.201:/nfs /shiyan
[[email protected] ~]# 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机器上:
[[email protected] ~]# cd /shiyan
[[email protected] shiyan]# touch 1.txt
touch: cannot touch `1.txt‘: Permission denied
#原因是A机器上共享的/nfs目录默认挂载过来是有一个用户的, 必然是/nfs共享目录的权限问题,至少是其他用户不可写!
在A机器上:
[[email protected] ~]# ll -d /nfs
drwxr-xr-x 3 root root 4096 Apr 27 07:59 /nfs
#可见共享的这个/nfs目录的权限是755,除了属主外,属组和其他用户的权限是不可写的。
解决办法:
在A机器上:
[[email protected] ~]# cd /nfs
[[email protected] nfs]# chmod 777 .
[[email protected] nfs]# ll -d .
drwxrwxrwx 3 root root 4096 Apr 27 07:59 .
# 将/nfs目录的权限改为777,任何用户可读可写可执行!
在B机器上:
[[email protected] shiyan]# touch 1.txt
[[email protected] 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的属主和属组是否可以指定呢?下节我们接着讨论。。