0525NFS与FTP服务搭建与配置



一、NFS介绍

1、NFS简介

  • NFS,Network File System。网络文件系统,即通过网络,对在不同主机上的文件进行共享。
  • NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版本,更新比较慢其实4.1是从2010年就开始使用了。
  • NFS数据传输基于RPC协议,RPC为Remote Procedure Call的简写。

2、NFS应用场景

NFS应用场景为:A,B,C三台机器上需要保证被访问到的文件是一样的,A共享数据出来,B和C分别去挂载A共享的数据目录,从而B和C访问到的数据和A上的一致

ftp nfs 哪个快_ViewUI

在生产环境,我们很少使用单机部署应用,因为单机存在单点故障,一旦宕机,将无法为前端业务提供服务,这是客户无法容忍的。 现在提倡的高可用及7*24服务,是我们追求的目标。对于一些小的应用,双机成为了主流。

我们来看一种简单集群场景,应用分别部署在A及B上,前端通过F5或着web服务器访问应用。NFS提供了一种机制,可以让A、B访问C中的一个共享目录,就像是操作本地文件一样。

3、NFS原理

  • 首先:NFS包括两部分,服务端及客户端
  • 由于NFS服务功能很多,会有很多端口,这些端口还有可能不固定,那么客户端就无法与服务器进行通信,因为程序间通信必须通过端口(tcp/udp都是端到端通信),那么就需要一个中间的桥接机制,RPC进程即充当这样一个角色,RPC的端口是一定的(111),当NFS启动时,会向RPC进行注册,那么客户端PRC就能与服务器RPC进行通信,从而进行文件的传输。
  • 当客户端用户打开一个文件或目录时,内核会判断,该文件是本地文件还是远程共享目录文件,如果是远程文件则通过RPC进程访问远程NFS服务端的共享目录,如果是本地文件,则直接打开。
  • 为了更好的并发,RPC进程及NFS进程都有多个。

ftp nfs 哪个快_前端_02



二、安装配置NFS

1、准备两台机器,一台作为服务端(luo01 192.168.169.129),一台作为客户端(luo02 192.168.169.130);

2、在luo01上安装:nfs-utils包

yum install -y nfs-utils

同时也在luo02上安装:nfs-utils包;

yum install -y nfs-utils

3、在luo01上,新建配置文件;写入以下语句

vim /etc/exports

/home/nfstestdir 192.168.169.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)

说明:

  • /home/nfstestdir :共享的目录
  • rw: 读写
  • ro: 只读
  • sync: 同步模式,内存数据实时写入磁盘
  • async :非同步模式
  • no_root_squash: 客户端挂载NFS共享目录后,root用户不受约束,权限很大
  • root_squash: 与上面选项相对,客户端上的root用户收到约束,被限定成某个普通用户
  • all_squash:客户端上所有用户在使用NFS共享目录时都被限定为一个普通用户
  • anonuid/anongid: 和上面几个选项搭配使用,定义被限定用户的uid和gid
  • 192.168.169.0/24:为客户端的网段;

4、创建nfstestdir目录,并给予777权限;

mkdir /home/nfstestdir

chmod 777 /home/nfstestdir/

5、开启nfs服务,并监听端口,端口111为NFS服务的默认端口;

(systemctl start rpcbind)

systemctl start nfs

netstat -lnpt

ps aux |grep nfs

ftp nfs 哪个快_运维_03

ftp nfs 哪个快_ViewUI_04

6、设置开机启动:systemctl enable nfs

7、在客户端luo02上设置:

查看服务端共享目录:showmount -e 192.168.169.129

ftp nfs 哪个快_ftp nfs 哪个快_05

此时,需要关闭两台机器的防火墙及selinux

systemctl stop firewalld

getenforce

setenforce 0

关闭后连接成功

ftp nfs 哪个快_运维_06

8、在luo02上挂载NFS

mount -t nfs 192.168.169.129:/home/nfstestdir /mnt/

ftp nfs 哪个快_ftp nfs 哪个快_07

9、在增加的/mnt分区,就是NFS共享的目录,在该目录下创建测试文件

cd /mnt/

ls

touch luo.111

ftp nfs 哪个快_运维_08

10、在服务端luo01机器上,查看其详细信息

ftp nfs 哪个快_开发工具_09



三、exportfs命令

假如A的NFS服务停掉了,但是B和C还在挂载着A分享的分区,这就无法正常工作了,由于B和C上面的进程是d状态(不可中断进程,在ps一节中学习到的),一旦A停止了,B和C一定会出问题,无法服务,既不可以重启,也不可以关闭,就会把系统整挂掉。所以NFS一定不可以随便重启。 如果必须重启怎么办?先把B和C上面的目录卸载下来。那么就开始卸载 B和C的目录,一个一个卸载下来;出现这种情况,不利于生产以及智能化。因此需要利用exportps命令。

ftp nfs 哪个快_运维_10

1、exportps命令常用选项:

选项

释义

-a

全部挂载或者全部卸载

-r

重新挂载

-u

卸载某一个目录

-v

显示共享目录

2、在服务端luo01上:exportfs -arv

exporting 192.168.169.0/24:/home/nfstestdir

这样就可以让服务器直接生效,不需要再次重启nfs服务,也不会对客户端造成之前所说的错误!

3、编辑配置文件,增加一个共享的目录

vim /etc/exports

/tmp/ 192.168.169.130(rw,sync,no_root_squash) //新增一个共享目录,及其权限

3、用命令:exportfs -arv 直接生效,不用重启NFS服务

exportfs -arv

exporting 192.168.169.130:/tmp //新增加的共享目录

exporting 192.168.169.0/24:/home/nfstestdir

4、在luo02上,卸载挂载点

家目录中:umount /mnt

5、使用luo02客户端测试;

查看服务端共享目录:showmount -e 192.168.169.129

ftp nfs 哪个快_ViewUI_11

5、在luo02上挂载到mnt下

mount -t nfs 192.168.169.129:/tmp /mnt/

ftp nfs 哪个快_运维_12

6、在luo02中mnt下创建一个测试文本;

新建测试文本1212.txt,查看其gid和uid都为root;

vi /mnt/1212.txt

ls -l /mnt/

ftp nfs 哪个快_ftp nfs 哪个快_13

7、在服务端luo01下,查看/tmp目录下的1212.txt测试文本,其uid和gid都为root

ftp nfs 哪个快_运维_14



四、NFS服务端问题

注意:NFS 4版本会有该问题

我们在分享一个目录且权限设置为no_root_squash,客户端看到的文件属主、组不是root,却是nobody。 这个不是设置错误,是软件本身自带的BUG。

解决方案:

方案1:在客户端挂载的时候加上 -o nfsvers=3,其目的是制定nfs使用3版本。

mount -t nfs -o,nfsvers=3 192.168.169.129:/tmp /mnt/

方案2:在服务端和客户端配置:vim /etc/idmapd.conf

vi /etc/idmapd.conf

#Domain = local.domain.edu // 改为 Domain = xxx.com,任意域名

然后再重启rpcbind服务;

 



五、FTP服务

1、FTP服务介绍

我们之前传输文件所用的是rzsz命令,可以简单明了的就把我们所需的文件下载或者上传。但是有个缺陷,不可以上传或者下载大体积的文件。FTP就可以解决这个问题! 

FTP是File Transfer Protocol(文件传输协议,简称文传协议)的英文简称,用于在Internet上控制文件的双向传输。

FTP的主要作用就是让用户连接一个远程计算机(这些计算机上运行着FTP服务器程序),并查看远程计算机中的文件,然后把文件从远程计算机复制到本地计算机,或把本地计算机的文件传送到远程计算机。 小公司用的多,大企业不用FTP,因为不安全。

2、使用vsftpd搭建ftpfuw

(1)安装相关软件

centos上自带的FTP软件vsftpd,默认没有安装;需要用yum安装;

yum install -y vsftpd

安装后,不用配置,可以直接使用,默认支持使用系统账号登录,但是因为安全原因,需要建立账号体系;

(2)创建用户

安装后,不用配置,可以直接使用,默认支持使用系统账号登录,但是因为安全原因,需要建立账号体系;

useradd -s /sbin/nologin virftp //创建虚拟用户

vim /etc/vsftpd/vsftpd_login //编写虚拟用户的账号、密码文件

(奇数行为用户名,偶数行为密码)

testuser1

129615

user1

129615

设置文件权限:chmod 600 /etc/vsftpd/vsftpd_login

(3)vsfptd 使用的密码不是明文,所以需要生产相对应的库文件;

db_load -T -t hash -f /etc/vsftpd/vsftpd_login

/etc/vsftpd/vsftpd_login.db

生成完毕后查看:

ls -l /etc/vsftpd/

-rw-r--r--. 1 root root 12288 5月  26 23:12 vsftpd_login.db//此为生成的库文件密码

(4)创建与虚拟账号相关的虚拟账号,以及配置文件

mkdir /etc/vsftpd/vsftpd_user_conf

cd /etc/vsftpd/vsftpd_user_conf

vim testuser1 //新建账号的配置文件

添加如下配置内容:

local_root=/home/virftp/testuser1 //虚拟用户的家目录

anonymous_enable=NO //是否允许匿名用户

write_enable=YES //是否允许可写

local_umask=022 //创建新目录和文件的权限

anon_upload_enable=NO //是否允许匿名用户上传

anon_mkdir_write_enable=NO //是否允许匿名用户可创建

idle_session_timeout=600 //连接后没有任何操作的超时时间,空闲时间段

data_connection_timeout=120 //数据传输超时时间

max_clients=10 //最大允许连接的clients客户端

(5)创建虚拟用户的家目录,并在其下面创建新文件

mkdir /home/virftp/testuser1

touch /home/virftp/testuser1/test.txt

chown -R virftp:virftp /home/virftp //更改整个目录权限

(6)配置认证文件及路径。

vim /etc/pam.d/vsftpd

最前面添加:

auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login //新增语句

account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login //新增语句

(7)修改全局配置文件/etc/vsftpd/vsftpd.conf

vim /etc/vsftpd/vsftpd.conf

修改如下内容:

将anonymous_enable=YES 改为 anonymous_enable=NO

将#anon_upload_enable=YES 改为 anon_upload_enable=NO

#anon_mkdir_write_enable=YES 改为 anon_mkdir_write_enable=NO

在最末尾添加如下配置:

chroot_local_user=YES

guest_enable=YES

guest_username=virftp

virtual_use_local_privs=YES

user_config_dir=/etc/vsftpd/vsftpd_user_conf

allow_writeable_chroot=YES

(8)启动服务并查看启动状态

systemctl start vsftpd

ps aux |grep vsftp

netstat -lntp

注意: 21端口FTP; 22端口SSHD; 23端口TELNET

ftp nfs 哪个快_运维_15

3、客户端的FTP测试

Windows中可以安装filezilla软件,linux服务器端安装lftp

yum install -y lftp

查看服务端的文件:lftp testuser1@127.0.0.1

Ls

可用?查看能够使用哪些命令

4、xshell使用xftp传输文件

(1)、使用xshell直接传输

原理就是:使用sftp模式登录服务器

第一步:在xshell下,新建会话,按下图设置其属性;

ftp nfs 哪个快_前端_16

第二步:按下图,设置其目标目录;

ftp nfs 哪个快_ftp nfs 哪个快_17

第三步:此时弹出页面,填写主机名,root

ftp nfs 哪个快_运维_18

第四步:此时进入到/root下,可以到有大文件的目录xia;

(2)、xshell使用xftp软件传输文件

ftp nfs 哪个快_前端_19



六、使用pure-ftpd搭建ftp服务

Pure-ftp为另外一款轻量FTP服务软件,和vsftp类似

1、安装并配置pure-ftpd

yum install -y pure-ftpd

vim /etc/pure-ftpd/pure-ftpd.conf

按下图,让其语句加载(即去掉前面的#)

ftp nfs 哪个快_ftp nfs 哪个快_20

因为vsftpd和pure-ftpd 共用21端口,因此需要把vsftpd服务关掉,再开启pure-ftpd

systemctl stop vsftpd

systemctl start pure-ftpd

ps aux | grep pure-ftpd

2、创建一个新的系统用户

mkdir /data/ftp //创建数据目录

touch /data/ftp/123.txt //创建一个文件

useradd -u 1020 pure-ftp //设置UID

chown -R pure-ftp:pure-ftp /data/ftp/

3、通过pure-pw命令增加ftp用户以及配置用户库文件

pure-pw useradd ftp_usera -u pure-ftp -d /data/ftp/

pure-pw mkdb //建立虚拟用户数据

lftp ftp_usera@127.0.0.1