1、 存储类型
存储类型分为三种:
- DAS:直连式存储(比较古老)
- SAN:存储区域网络(SAN比较复杂,且成本很高,大型公司会用到)
- NAS:网络附加存储(NAS是最常用的,类似百度网盘)
| 分类 | DAS | NAS | SAN |
|---|---|---|---|
| 传输类型 | SCSI、FC | IP | IP、FC、SAS |
| 数据类型 | 数据块 | 文件 | 数据块 |
| 典型应用 | 任何 | 文件服务器 | 数据库应用 |
| 优点 | 磁盘与服务器分离;便于统一管理 | 不占用应用服务器资源;广泛支持操作系统;扩展较容易;即插即用,安装简单方便 | 高扩展性;高可用性;数据集中,易管理 |
| 缺点 | 连接距离短;数据分散,共享困难;存储空间利用率不高;扩展性有限 | 不适合存储量大的块级应用;数据备份及恢复占用网络带宽 | 相比NAS成本较高;安装和升级比NAS复杂 |
小拓展:协议和端口号
| 协议 | 端口号 |
|---|---|
| ftp | 20、21 |
| ssh | 22 |
| http | 80 |
| https | 443 |
| telnet | 23 |
| mysql | 3306 |
| redis | 6379 |
2、FTP 文件传输协议
FTP是明文传输,基于c/s(客户端、服务端)结构 。
FTP有两个端口:
- 20是数据端口, 传输真实数据;
- 21是命令端口, 主要用来验证权限、认证,和一些基本信息的传递。
小拓展:FTP是协议,协议的最终体现形式是软件。FTP对应的软件有很多,比如:vsftpd、filezilla…
2.1 主动模式和被动模式
两种模式:(针对服务器)
-
主动模式:
- 首先 客户机 会随机产生一个端口号,主动去连接 服务器的 tp21端口
- 如果 服务器是主动模式 那么服务器会开启 20端口 和客户端相连
- 最后再传输真实数据
-
被动模式:
- 客户机 会随机产生一个端口号,主动去连接 服务器的 tcp21端口
- 如果服务器是 被动模式,那么服务器会产生一个随机的端口号,被动等待客户机来连接
- 最后再传输真实数据(这个随机端口号是通过tcp 21端口,知会给客户机的)
2.2 用户认证:
- 匿名用户:ftp、anonymous,匿名用户共享文件位置:/var/ftp
- 系统用户:Linux用户、用户/etc/passwd、密码/etc/shadow(不允许超级管理员登录)
- 虚拟用户:特定服务的专用用户,独立的用户/密码文件
2.3 vsftpd软件
vsftpd是 very secure FTP daemon的缩写,意思是非常安全、高速稳定
vsftpd是centos默认的ftp软件
| 类型 | 位置 |
|---|---|
| 配置文件 | /etc/vsftpd/vsftpd.conf |
| 用户认证配置文件 | /etc/pam.d/vsftpd |
2.3.1 vsftpd的客户端和服务端软件
- 服务端:vsftpd //安装了服务端,客户端也会自动安装
- 客户端:ftp
`服务端`
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install vsftpd -y
[root@localhost ~]# systemctl start vsftpd //开启
[root@localhost ~]# ss -natp |grep vsftpd //查看端口号
LISTEN 0 32 :::21 :::* users:(("vsftpd",pid=11179,fd=4)) //首先打开的是21端口
`客户端`
[root@localhost ~]# ftp 192.168.125.130 //客户端连接服务端
Connected to 192.168.125.130 (192.168.125.130).
220 (vsFTPd 3.0.2)
Name (192.168.125.130:root): ftp //匿名用户
331 Please specify the password.
Password: //密码默认可以为空
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,125,100,183,24).
150 Here comes the directory listing.
drwxr-xr-x 2 0 0 6 Jun 09 2021 pub
ftp> cd pub
250 Directory successfully changed.
ftp> pwd
257 "/pub" //注意: /pub的/不是服务端或者客户端的根,而是服务端ftp软件的根,即 /var/ftp
2.3.2 常见的FTP命令
| 命令 | 含义 |
|---|---|
| get | 下载 |
| put | 上传 |
| ! | 在本机使用命令 |
ftp> help //可以使用help 查看帮助
ftp> ls //可以使用 ls 查看文件列表
227 Entering Passive Mode (192,168,125,100,225,36).
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 0 May 05 14:28 1234
drwxr-xr-x 8 0 0 2048 Sep 05 2017 centos7
drwxr-xr-x 2 0 0 6 Jun 09 2021 pub
226 Directory send OK.
ftp> passive //被动的、消极的, 人为指定被动模式,默认使用消极模式
ftp> get 1234 //从服务端 下载1234文件
local: 1234 remote: 1234
227 Entering Passive Mode (192,168,125,100,97,138).
150 Opening BINARY mode data connection for 1234 (0 bytes).
226 Transfer complete.
2.4 vsftpd常见配置
配置文件:/etc/vsftpd/vsftpd.conf
注意:systemctl restart vsftpd 改完配置文件一定记得重启!!!
anonymous_enable=YES //允许匿名用户登录
local_enable=YES //允许本地用户登录
local_umask=022 //权限,umask是022
xferlog_file=/var/log/xferlog //日志存放位置
2.4.1 修改默认端口号
listen_port=端口号 端口号 默认为21
示例:
服务端:
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
listen_port=9527 //修改配置文件
[root@localhost ~]# systemctl restart vsftpd //重启
[root@localhost ~]# ss -natp |grep vsftpd //过滤端口号
LISTEN 0 32 :::9527 :::* users:(("vsftpd",pid=11787,fd=4))
ESTAB 0 0 ::ffff:192.168.125.130:9527 ::ffff:192.168.125.140:33154 users:(("vsftpd",pid=11790,fd=2),("vsftpd",pid=11790,fd=1),("vsftpd",pid=11790,fd=0),("vsftpd",pid=11788,fd=2),("vsftpd",pid=11788,fd=1),("vsftpd",pid=11788,fd=0))
客户端:
[root@localhost ~]# ftp 192.168.125.130 9527 //指明端口号,注意端口号前不加选项port !
Connected to 192.168.125.130 (192.168.125.130).
220 (vsFTPd 3.0.2)
Name (192.168.125.130:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
2.4.2 时间
时间很重要~
use_localtime=YES 使用当地时间
格林威治时间比北京时间晚8个小时
2.4.3 匿名用户登录
anonymous_enable=YES 支持匿名用户,CentOS8 默认不允许匿名
no_anon_password=YES 匿名用户略过口令检查 , 默认NO
2.4.4 匿名用户上传
客户机上传文件到 服务器的位置:/var/ftp
上传需要设置两部分:
#第一部分:
anon_upload_enable=YES 匿名上传,注意:文件系统权限
anon_mkdir_write_enable=YES 匿名建目录
#第二部分:权限
允许匿名用户有读写权限
注意:/var/ftp 根目录不允许有最大权限,否则会登录不上。
###服务机###
[root@localhost ftp]# vim /etc/vsftpd/vsftpd.conf
anon_upload_enable=YES
anon_mkdir_write_enable=YES
[root@localhost ftp]# systemctl restart vsftpd
[root@localhost ftp]# cd /var/ftp/pub
[root@localhost pub]# chmod 777 /var/ftp/pub
###客户机###
[root@localhost mnt]# ftp 192.168.125.130
Connected to 192.168.125.130 (192.168.125.130).
220 (vsFTPd 3.0.2)
Name (192.168.125.130:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd /var/ftp/pub //注意:此为错误❌示范,put上传文件时,不能出现绝对路径!!!
550 Failed to change directory.
ftp> cd pub //正确示范,要使用相对路径!
250 Directory successfully changed.
ftp> put abc
local: abc remote: abc
227 Entering Passive Mode (192,168,125,130,22,61).
150 Ok to send data.
226 Transfer complete.
ftp> ls
227 Entering Passive Mode (192,168,125,130,251,191).
150 Here comes the directory listing.
-rw------- 1 14 50 0 May 07 19:28 abc //上传成功
226 Directory send OK.
思考:远程用户是否可写,和什么有关?
- 软件配置
- 登录用户的权限
2.4.5 匿名用户下载、删除文件
- 下载get 要有可读r 权限
- 上传put 要有可写w 权限
anon_world_readable_only=NO //只能下载全部读的文件, 默认YES
anon_umask=0333 //指定匿名上传文件的umask,默认077,注意:0333中的0不能省略!!!
anon_other_write_enable=YES //可删除和修改上传的文件,默认NO
// 权限:666-333=333,出现奇数自动加1,也就是444
示例:
客户机:
[root@localhost mnt]# ftp 192.168.125.130
Connected to 192.168.125.130 (192.168.125.130).
220 (vsFTPd 3.0.2)
Name (192.168.125.130:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub //切换到pub,使用相对路径
250 Directory successfully changed.
ftp> get cba //下载
local: cba remote: cba
227 Entering Passive Mode (192,168,125,130,88,6).
150 Opening BINARY mode data connection for cba (0 bytes).
226 Transfer complete.
ftp> ls
227 Entering Passive Mode (192,168,125,130,38,120).
150 Here comes the directory listing.
-rw------- 1 14 50 0 May 07 19:28 abc
-rw-r--r-- 1 0 0 0 May 07 19:50 cba //下载成功
ftp> delete abc //删除
250 Delete operation successful.
ftp> ls
227 Entering Passive Mode (192,168,125,130,212,236).
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 0 May 07 19:50 cba
//删除成功
注意:get和put 不支持对目录文件进行下载和上传,必须先使用tar命令将目录进行归档压缩,之后才能下载或上传。
2.4.6 指定匿名用户的上传文件的默认的所有者和权限
匿名用户上传文件默认的所有者是ftp 用户 是可以修改的
chown_uploads=YES #默认NO
chown_username=zhangsan
chown_upload_mode=0644
2.5 禁锢
禁锢所有系统用户在家目录中
chroot_local_user=YES #禁锢系统用户,默认NO,即不禁锢
注意:所有用户的 家目录权限需要修改
例如:chmod 500 /home/lisi/
小拓展:
1、vim编辑器中查看是否有空格:set list
2、udp53是用来解析、tcp53是用来主从复制
- ftp中不支持绝对路径
- umask中0333的0不能省略
- 根目录不允许有最大权限
3、NFS
3.1 NFS简介
NFS是网络文件系统,是基于RPC(远程控制调用)实现的,两个软件相结合。
NFS和RPC是有强依赖关系。 RPC采用c/s架构 客户端和服务端
NFS的端口号都是随机产生。
NFS优势:节省本地存储空间。
3.2 NFS软件
软件包:nfs-utils (包含服务端和客户端相关工具)
依赖关系:rpcbind、tcp-wrappers
内核支持:nfs.ko
端口号:
- nfs-utils:2049/tcp
- rpcbind:111
共享文件格式:
- 共享目录
- 主机
- 权限
3.3 NFS工具
3.3.1 exportfs
exportfs:可用于管理NFS导出的文件系统
常见选项:
-v #查看本机所有NFS共享
-r #重读配置文件,并共享目录
-a #输出本机所有共享
-au #停止本机所有共享
3.3.2 showmount
常见用法:
showmount -e hostname
[root@centos7 ~]#showmount -e 10.0.0.8
Export list for 10.0.0.8:
/data/wordpress *
3.3.3 mount.nfs
客户端NFS挂载
NFS相关的挂载选项:man 5 nfs
fg #(默认)前台挂载
bg #后台挂载
hard #(默认)持续请求
soft #非持续请求
intr #和hard配合,请求可中断
rsize #和wsize 一次读和写数据最大字节数,rsize=32768
_netdev #无网络连接不挂载
vers #指定版本,客户端centos8默认4.2 ,centos7默认4.1 centos6默认4.0
3.4 配置文件格式
默认选项:(ro,sync,root_squash,no_all_squash)
ro,rw 只读(readonly)和读写
async 异步,数据变化后不立即写磁盘,先写入到缓冲区中,过一段时间再写入磁盘,性能高,安全性
低
sync(1.0.0后为默认)同步,数据在请求时立即写入共享存储磁盘,性能低,安全性高
## 压榨squash
root_squash (默认)远程root映射为nfsnobody,UID为65534,CentOS8 为nobody,CentOS 7以前的版本为nfsnobody
no_root_squash 远程root映射成NFS服务器的root用户
all_squash 所有远程用户(包括root)都变成nfsnobody,CentOS8 为nobody
no_all_squash (默认)保留共享文件的UID和GID
anonuid和anongid 指明匿名用户映射为特定用户UID和组GID,而非nobody,可配合all_squash使用
3.5 实验一:
nfs服务端配置文件:/etc/exports
服务端192.168.125.130:
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install nfs-utils.x86_64 -y
[root@localhost ~]# systemctl start nfs
[root@localhost ~]# mkdir /share
[root@localhost ~]# vim /etc/exports //设置配置文件
/share * 或者 192.168.1.1 // *代表任意
[root@localhost ~]# systemctl restart nfs //也可以使用exportfs -r,重新读取配置
[root@localhost ~]# exportfs -v //显示本机共享情况
客户端:
[root@localhost ~]# showmount -e 192.168.125.130 //可以看到对面服务器的共享目录
[root@localhost ~]# mount 192.168.125.130:/share /mnt
//挂载命令 对面的ip 冒号 文件夹 自己挂载的目录
####永久挂载####
[root@localhost ~]# vim /etc/fstab
192.168.125.130:/share /mnt nfs default,_netdev 0 0
nfs文件系统 权限:netdev意思是如果前面不通,就不挂
[root@localhost ~]# mount -a //测试
[root@localhost ~]# df -h //查看挂载信息,并显示单位
3.6 实验二:
实验目的:7-2与7-4 共享到7-3
实验环境:
-
客户端:7-2:192.168.125.10 ;7-4:192.168.125.140
-
服务端:7-3:192.168.125.130
实验流程:
7-2:
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install httpd -y
[root@localhost ~]# cd /var/www/html
[root@localhost html]# vim index.html
test test
[root@localhost html]# systemctl start httpd
7-4:
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install httpd -y
[root@localhost ~]# cd /var/www/html
[root@localhost html]# vim index.html
test test
[root@localhost html]# systemctl start httpd
7-3:
[root@localhost ~]# yum install nfs-utils.x86_64 -y
[root@localhost ~]# curl 192.168.125.10 //查看7-2
test test
[root@localhost ~]# curl 192.168.125.140 //查看7-4
test test
[root@localhost ~]# mkdir /share
[root@localhost ~]# vim /etc/exports //服务端配置
[root@localhost ~]# cd /share
[root@localhost share]# vim index.html
this is test
[root@localhost share]# systemctl start nfs
7-2:
[root@localhost html]# showmount -e 192.168.125.130
Export list for 192.168.125.130:
/share *
[root@localhost html]# mount 192.168.125.130:/share /var/www/html
7-4:
[root@localhost html]# showmount -e 192.168.125.130
Export list for 192.168.125.130:
/share *
[root@localhost html]# mount 192.168.125.130:/share /var/www/html
7-3:
[root@localhost share]# curl 192.168.125.10
this is test
[root@localhost share]# curl 192.168.125.140
this is test
排错总结:
- 实验过程中,防火墙容易自启,可以经常查看一下,以防实验报错:
查看防火墙状态:systemctl status firewalld.service