2018-07-13(NFS,FTP搭建)

14.1 NFS介绍

NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它容许网络中的计算机之间经过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用能够透明地读写位于远端NFS服务器上的文件,就像访问本地文件同样
NFS最先由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版本
NFS数据传输基于RPC协议,RPC为Remote Procedure Call的简写。
NFS应用场景是:A,B,C三台机器上须要保证被访问到的文件是同样的,A共享数据出来,B和C分别去挂载A共享的数据目录,从而B和C访问到的数据和A上的一致
2018-07-13(NFS,FTP搭建)
NFS原理图: 服务端须要启动一个NFS服务,服务端要想给客户端提供服务,须要借助RPC协议,RPC协议是由rpcbind服务实现;在centos 5或者以前的版本叫portmap服务;以后的版本叫rpcbind服务;NFS服务默认不会监放任何端口;最终实现NFS服务,须要借助rpcbind服务产生的RPC协议,RPC协议默认监听的端口是111; 整个流程为:服务端的NFS服务监听一个端口经过RPC协议监听的端口,告诉客户端RPC协议,而后客户端经过本机的RPC端口回传数据信息到服务端NFS监听的端口,最终实现通讯
2018-07-13(NFS,FTP搭建)
NFS的优缺点分析mysql

优势 linux

  • 节省本地存储空间,将经常使用的数据存放在一台NFS服务器上且能够经过网络访问,那么本地终端将能够减小自身存储空间的使用。
  • 要在网络中的每一个机器上都建有Home目录,Home目录能够放在NFS服务器上且能够在网络上被访问使用。
  • 一些存储设备如软驱、CDROM和Zip(一种高储存密度的磁盘驱动器与磁盘)等均可以在网络上被别的机器使用。这能够减小整个网络上可移动介质设备的数量。

缺点
有上面的工做原理能够看出,由较少的客户端访问相对较小的数据集时这种结构工做的很好,经过直接链接的存储器可以收到显著的效益(就象你PC上的磁盘);也就是数据可以由多个客户端共享,可以由任何有NFS能力的客户端访问。但是若是大量的客户端须要访问数据或太大的数据集时,NFS服务器很快就变成了一个瓶颈,抑制了系统性能。
[NFS 处理高性能计算(HPC)一直不够理想。高性能计算涉及到的数据文件很是庞大,而且 NFS 客户机的数量可能达到几千台。(想想拥有数千个计算节点的计算集群或网格)。在这里,NFS 是一个负担,由于 NFS 服务器的局限性 — 好比带宽、存储容量和处理器速度 — 限制了整体计算性能。NFS 在这里成了瓶颈。]—IBM解释nginx

14.2 NFS服务端安装配置

准备工做:
两台或以上机器,一台做为服务端,其余为客户端,
这里用192.168.66.132做为服务端,安装nfs-utils和rpcbind包,192.168.66.131为客户端,安装nfs-utils包
服务端安装配置sql

一、 #安装nfs-utils和rpcbind
[root@02 ~]# yum install -y nfs-utils rpcbind                           
二、#安装完后修改配置文件,指定要进行分享的目录;指定要共享该目录的机器,ip能够ip段,也能够写ip
[root@02 ~]# vim /etc/exports                                      
/home/nfstestdir 192.168.66.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
三、#建立分享目录并制定权限,这里为了实验把权限设置为777
[root@02 ~]# mkdir /home/nfstestdir
[root@02 ~]# chmod 777 /home/nfstestdir  
四、#启动服务并查看
[root@02 ~]# systemctl start rpcbind
[root@02 ~]# ps aux |grep rpcbind                                        
rpc        1593  0.2  0.1  65000  1040 ?        Ss   09:56   0:00 /sbin/rpcbind -w
root       1595  0.0  0.0 112720   972 pts/0    S+   09:56   0:00 grep --color=auto rpcbind
[root@02 ~]# netstat -lnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1593/rpcbind  
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      812/nginx: master p 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      790/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1112/master         
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      812/nginx: master p 
tcp6       0      0 :::111                  :::*                    LISTEN      1593/rpcbind        
tcp6       0      0 :::22                   :::*                    LISTEN      790/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1112/master         
tcp6       0      0 :::3306                 :::*                    LISTEN      1095/mysqld         
udp        0      0 0.0.0.0:920             0.0.0.0:*                           1593/rpcbind        
udp        0      0 0.0.0.0:111             0.0.0.0:*                           1593/rpcbind        
udp        0      0 127.0.0.1:323           0.0.0.0:*                           535/chronyd         
udp6       0      0 :::920                  :::*                                1593/rpcbind        
udp6       0      0 :::111                  :::*                                1593/rpcbind        
udp6       0      0 ::1:323                 :::*                                535/chronyd         
raw6       0      0 :::58                   :::*                    7           543/NetworkManager 
五、#启动nfs服务,在启动nfs服务后会自动启动rpc相关的其余服务。
[root@02 ~]# systemctl start nfs
[root@02 ~]# ps aux |grep rpc
rpc        1593  0.0  0.1  65000  1416 ?        Ss   09:56   0:00 /sbin/rpcbind -w
rpcuser    1629  0.0  0.1  42420  1756 ?        Ss   10:04   0:00 /usr/sbin/rpc.statd
root       1631  0.0  0.0      0     0 ?        S<   10:04   0:00 [rpciod]
root       1640  0.0  0.0  19360   400 ?        Ss   10:04   0:00 /usr/sbin/rpc.idmapd
root       1643  0.0  0.0  42608   944 ?        Ss   10:04   0:00 /usr/sbin/rpc.mountd
root       1682  0.0  0.0 112720   972 pts/0    R+   10:05   0:00 grep --color=auto rpc
六、#若是想让nfs服务开机自启动,还须要执行如下命令。
[root@02 ~]# systemctl enable nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.

14.3 NFS配置选项

[root@02 ~]# cat /etc/exports
/home/nfstestdir 192.168.66.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)     #括号里面的为权限相关的一些配置选项

NFS配置选项的含义:shell

• rw 读写vim

• ro 只读windows

• sync 同步模式,内存数据实时写入磁盘centos

• async 非同步模式数组

• no_root_squash 客户端挂载NFS共享目录后,root用户不受约束,权限很大安全

• root_squash 与上面选项相对,客户端上的root用户收到约束,被限定成某个普通用户

• all_squash 客户端上全部用户在使用NFS共享目录时都被限定为一个普通用户

• anonuid/anongid 和上面几个选项搭配使用,定义被限定用户的uid和gid

客户端上作一个挂载

一、安装rpcbind,rpcbind包是由nfs-utils自带的包一块儿安装的。

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

二、查看服务端分享的目录,这showmount -e 加服务端的ip查看

[root@01 ~]# showmount -e 192.168.66.132
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)

#若是出现上面的报错,说明网络不通,没有办法和192.168.66.132的111端口通信,要么是对方的rpcbind服务没有开启,若是服务开启了还不行,那就是防火墙的关系致使。须要配置防火墙放行nfs服务和rpcbind服务的端口

这是做测试用,把服务端和客户端的防火墙都关闭,包括selinux。

[root@02 ~]# systemctl stop firewalld  关闭服务端防火墙
[root@02 ~]# setenforce 0
[root@01 ~]# systemctl stop firewalld  关闭客户端防火墙
[root@01 ~]# setenforce 0

再用showmount -e查看,就能够看到服务端分享的目录和容许的ip

[root@01 ~]# showmount -e 192.168.66.132
Export list for 192.168.66.132:
/home/nfstestdir 192.168.66.0/24

三、把服务端分享的目录挂载到本地

[root@01 ~]# mount -t nfs 192.168.66.132:/home/nfstestdir /mnt
[root@01 ~]# df -h
文件系统                         容量  已用  可用 已用% 挂载点
/dev/sda3                         18G  7.1G   11G   40% /
devtmpfs                         479M     0  479M    0% /dev
tmpfs                            489M     0  489M    0% /dev/shm
tmpfs                            489M  6.8M  482M    2% /run
tmpfs                            489M     0  489M    0% /sys/fs/cgroup
/dev/sda1                        197M   97M  100M   50% /boot
tmpfs                             98M     0   98M    0% /run/user/0
192.168.66.132:/home/nfstestdir   18G  5.4G   13G   30% /mnt

14.4 exportfs命令

nfs服务不能随便重启,不然可能致使客户端的nfs服务被挂起,所以可使用exportfs命令在不重启服务的前提下更新配置文件。

经常使用选项

• -a 所有挂载或者所有卸载

• -r 从新挂载

• -u 卸载某一个目录

• -v 显示共享目录

效果测试

一、修改服务端配置文件

vim /etc/exports
#新增一行
/tmp 192.168.66.0/24(rw,sync,no_root_squash)

二、更新配置文件(从新挂载) exportfs -arv //不用重启nfs服务,配置文件就会生效

[root@02 nfstestdir]# exportfs -arv
exporting 192.168.66.0/24:/tmp
exporting 192.168.66.0/24:/home/nfstestdir

三、在客户端查看权限

[root@01 mnt]# showmount -e 192.168.66.132
Export list for 192.168.66.132:
/tmp             192.168.66.0/24
/home/nfstestdir 192.168.66.0/24

注:客户端重启后,要从新挂载共享目录,要想开机自动挂载,能够把挂载命令写到/etc/fstab里

14.5 NFS客户端问题

针对NFS4版本存在以下问题:
客户端挂载共享目录后,不论是root用户仍是普通用户,建立新文件时属主、数组为nobody。

解决方法:

方法1:在客户端进行挂载时加上选项-o nfsvers=3

[root@01 ~]# mount -t nfs -o nfsvers=3 192.168.230.135:/tmp/ /mnt/

若是目录已经挂载,而又不想卸载,执行以下命令:

[root@01 ~]# mount -t nfs -oremount,nfsvers=3 192.168.230.135:/tmp/ /mnt/

方法2:客户端和服务端都须要
•客户端和服务端都须要

• vim /etc/idmapd.conf //

• 把“#Domain = local.domain.edu” 改成 “Domain = xxx.com” (这里的xxx.com,随意定义吧),而后再重启rpcbind服务

15.1 FTP介绍

平常使用rz,sz命令进行文件互传时会有不少限制,好比传输大小不能超出4G,不能给云端主机传输文件,针对上述问题,可经过在服务端搭建ftp服务器解决

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

• FTP的主要做用就是让用户链接一个远程计算机(这些计算机上运行着FTP服务器程序),并查看远程计算机中的文件,而后把文件从远程计算机复制到本地计算机,或把本地计算机的文件传送到远程计算机。

• 小公司用的多,大企业不用FTP,由于不安全

15.2/15.3 使用vsftpd搭建ftp

centos自带ftp服务的软件包是vsftpd,直接下载安装便可。

安装vsftpd软件包

yum install -y vsftpd

建立登陆ftp的用户

useradd -s /sbin/nologin virftp   //不容许登陆系统,用于给虚拟用户作映射

vsftpd软件包是可使用系统级别的用户,假设建立了一个普通用户luo,设置一个密码,这时候就能够用vsftpd启动这个服务,而后用user1这个用户去登录,登陆的形式为ftp,登陆进去后会进入到luo这个用户的家目录下,但这样操做会存在安全隐患。

为了解决上述隐患,咱们能够给ftp设置一个虚拟用户,虚拟用户映射成系统中的一个普通用户(也能够映射多个虚拟用户),这个用户即便给了用户和密码你也是没有办法去经过ssh登陆到服务器的机器,这样就相对安全了不少。

编辑虚拟用户自定义密码文件

vim /etc/vsftpd/vsftpd_login //奇数行为用户名,偶数行为密码,多个用户就写多行
ftpuser
123456

改下文件权限

chmod 600 /etc/vsftpd/vsftpd_login

密码文件格式转换

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

建立虚拟用户配置文件所在目录

mkdir /etc/vsftpd/vsftpd_user_conf

在目录下建立虚拟用户配置文件

vim ftpuser  //虚拟用户的配置文件的文件名须要与密码文件中建立的用户的名字一致

local_root=/home/virftp/ftpuser  //定义虚拟用户家目录
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                     //最大客户端数

建立虚拟用户家目录

mkdir /home/virftp/ftpuser

在家目录下建立测试文件

touch /home/virftp/ftpuser/test.txt

修改用户权限

chown -R virftp:virftp /home/virftp

将权限作一个修改,由于最后映射成virftp 这个用户,若virftp这个用户没有读的权力那就是错误的,没法正常的去上传和下载

定义密码文件的所在位置

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

这是一个用来认证的文件,在登陆FTP须要有一个认证的过程,认证的过程须要告诉它,经过什么样的形式去认证,认证的时候去×××这个密码库

注:32位的centos系统的文件名应为lib32

编辑vsftpd的主配置文件

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

启动vsftpd服务

systemctl start vsftpd

若是启动不了服务,能够把 /etc/vsftpd/vsftpd.conf 中的listen_ipv6=YES,而后把上一个listen=NO改为listen=YES
查看监听端口

[root@01 vsftpd_user_conf]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name         
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      3319/vsftpd

监听端口为21

ftp测试

Windows端
Windows可使用filezilla客户端开源软件,十分方便
2018-07-13(NFS,FTP搭建)
Linux端

Linux为了方便测试采用lftp

安装lftp包

[root@01 ~]# yum -y install lftp

链接FTP服务器

[root@01 ~]# lftp ftpuser@127.0.0.1
口令: 
lftp ftpuser@127.0.0.1:~> ls
-rw-r--r--    1 0        0               0 Jul  16 10:20 test.txt

注:使用?可查看ftp可用命令,经常使用命令put、get

下载test文件

lftp ftpuser@127.0.0.1:/> get test.txt
lftp ftpuser@127.0.0.1:/> quit
[root@01 ~]# ls
anaconda-ks.cfg       test.txt

15.4 xshell使用xftp传输文件

经过xshell实现ftp功能有两种方法,经过sftp和xftp
sftp
经过xshell的会话,使用sftp协议链接服务器
2018-07-13(NFS,FTP搭建)
登陆后能够正常使用命令,也可使用get下载文件

sftp:/root> get test.txt
Fetching /root/test.txt to test.txt
sftp: received 0 ???in 0.02 seconds

下载文件的存放位置在属性中设置
2018-07-13(NFS,FTP搭建)
xftp

xftp经过在xshell界面经过快捷键ctrl+alt+f使用,首次使用会弹出对话框提示下载安装。
2018-07-13(NFS,FTP搭建)
安装完成后,须要先经过ssh登陆到一台主机,使用Ctrl+alt+f唤出xftp,便可正常使用。
2018-07-13(NFS,FTP搭建)
注:xftp走的是ssh协议,不属于ftp,这种只要是linux开启了sshd服务就能够用;

vsftp获取其余ftp软件实现的是ftp服务,windows上能够搭建,linux上也能够搭建

15.5 使用pure-ftpd搭建ftp服务

pure-ftpd相比于vsftpd更加轻量化,搭建FTP服务器时更加简洁。

安装pure-ftpd软件包

yum install -y epel-release
yum install -y pure-ftpd

若是以前有启动过别的ftp服务,须要中止vsftpd服务

systemctl stop vsftpd

因为vsftpd和pure-ftpd同属于ftp服务,都须要监听21端口,若是二者同时运行会发生冲突

编辑pure-ftpd配置文件

vim /etc/pure-ftpd/pure-ftpd.conf//找到pureftpd.pdb这行,把行首的#删除
修改文件容许pure-ftpd服务指定密码文件

启动pure-ftpd服务

systemctl start pure-ftpd

建立测试目录

测试目录用于pure-ftpd的虚拟用户使用

mkdir /data/ftp

建立普通用户

useradd -u 1020 pure-ftp

修改用户权限

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

建立虚拟用户

pure-pw useradd ftp_usera -u pure-ftp  -d /data/ftp  //虚拟用户名为ftp_usera

pure-ftpd服务一样须要一个或多个虚拟用户映射到一个系统用户

pure-pw --help能够查看pure-pw命令的用法

密码文件格式转换

pure-pw mkdb

效果测试

[root@l01 ~]# touch /data/ftp/test1234.txt
[root@01 ~]# lftp ftp_usera@127.0.0.1
口令: 
lftp ftp_usera@127.0.0.1:~> ls      
drwxr-xr-x    2 1020       pure-ftp           16 Jul  3 10:43 .
drwxr-xr-x    2 1020       pure-ftp           16 Jul  3 10:43 ..
-rw-r--r--    1 1020       pure-ftp                16Jul  3 10:43 test1234.txt

咱们能够看到属主为uid,属组映射为系统中组的名字pure-ftpd

相关文章
相关标签/搜索