节点 | IP地址 | 镜像 |
---|---|---|
FTP | 192.168.116.130 | centos7 1511 |
NFS | 192.168.116.131 | centos7 1511 |
基础搭建
*两个节点都要配置*
// 修改主机名:
# hostnamectl set-hostname ftp
# hostnamectl set-hostname nfs
// 关闭防火墙及安全规则:
# systemctl stop firewalld
# systemctl disable firewalld
# setenforce 0
FTP 部署
yum 安装 FTP
[root@ftp ~]# yum -y install vsftpd
//启动 ftp 并设置开机自启:
[root@ftp ~]# systemctl start vsftpd
[root@ftp ~]# systemctl enable vsftpd
//创建虚拟用户账号(bai1-6):
[root@ftp ~]# vi /etc/vsftpd/users.conf
//内容
bai1
0000
bai2
0000
bai3
0000
bai4
0000
bai5
0000
bai6
0000
//转化为 Berkeley DB 格式的数据文件:
[root@ftp ~]# db_load -T -t hash -f /etc/vsftpd/users.conf /etc/vsftpd/users.db
//设置 DB 文件权限提高安全性:
[root@ftp ~]# chmod 600 /etc/vsftpd/users.db
//创建 FTP 根目录及虚拟用户映射的系统用户:
[root@ftp ~]# useradd vsftpd -d /home/vsftpd -s /sbin/nologin
[root@ftp ~]# mkdir -p /home/vsftpd/xmcsxy
[root@ftp ~]# chmod -R 755 /home/vsftpd
//建立支持虚拟用户的 PAM 认证文件:
[root@ftp ~]# vi /etc/pam.d/vsftpd
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/users
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/users
//备份配置文件并导入有效参数:
[root@ftp ~]# cp /etc/vsftpd/vsftpd.conf{,.bak}
[root@ftp ~]# egrep -v '^$|^#' /etc/vsftpd/vsftpd.conf.bak >
/etc/vsftpd/vsftpd.conf
//添加虚拟用户支持修改配置文件/etc/vsftpd/vsftpd.conf:
anonymous_enable=NO
chroot_local_user=YES
guest_enable=YES
allow_writeable_chroot=YES
user_config_dir=/etc/vsftpd/vsftpd_conf
//为不同的虚拟用户建立独立的配置文件:
[root@ftp ~]# mkdir -p /etc/vsftpd/vsftpd_conf
[root@ftp ~]# cd /etc/vsftpd/vsftpd_conf
[root@ftp vsftpd_conf]# vi bai1
local_root=/home/vsftpd/xmcsxy/yumwei #本地家目录路径
write_enable=YES
anon_upload_enable=NO
anon_max_rate=60000
//以此类推把 bai1.....bai6 配置完,修改每个用户的本地家目录路径!
重启服务生效配置文件:
[root@ftp ~]# systemctl restart vsftpd
[root@ftp ~]# systemctl status vsftpd
[root@ftp ~]# netstat -lntp | grep 21
tcp6 0 0 :::21 :::*
LISTEN 18750/vsftpd
NFS 部署
检查环境(两台都需要):
//检查环境(两台都需要):
# uname -a
//安装 nfs 依赖包(两台都需要):
# yum -y install nfs-utils rpcbind
//查看 nfsnobody 用户在不在(两台都需要):
# id nfsnobody
uid=65534(nfsnobody) gid=65534(nfsnobody) 组=65534(nfsnobody)
//启动 nfs 相关服务(两台都需要)
//启动 rpc 服务:
# systemctl start rpcbind
# systemctl enable rpcbind
//启动 nfs 服务:
# systemctl start nfs
# systemctl enable nfs
//查看 rpc 端口:
[root@ftp ~]# netstat -lntp | grep rpc
tcp 0 0 0.0.0.0:34875 0.0.0.0:*
LISTEN 19141/rpc.statd
tcp 0 0 0.0.0.0:20048 0.0.0.0:*
LISTEN 19162/rpc.mountd
tcp6 0 0 :::48860 :::*
LISTEN 19141/rpc.statd
tcp6 0 0 :::20048 :::*
LISTEN 19162/rpc.mountd
查看端口映射情况:
# rpcinfo -p localhost (注:这里 nfs 服务没启动,看不到 nfs 端口的映射情况)
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 57809 status
100024 1 tcp 59892 status
100005 1 udp 20048 mountd
100005 1 tcp 20048 mountd
100005 2 udp 20048 mountd
100005 2 tcp 20048 mountd
100005 3 udp 20048 mountd
100005 3 tcp 20048 mountd
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 3 tcp 2049 nfs_acl
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 3 udp 2049 nfs_acl
100021 1 udp 48151 nlockmgr
100021 3 udp 48151 nlockmgr
100021 4 udp 48151 nlockmgr
100021 1 tcp 49211 nlockmgr
100021 3 tcp 49211 nlockmgr
100021 4 tcp 49211 nlockmgr
创建共享目录(正是重点部分)
创建共享目录:
[root@nfs ~]# mkdir /data
更改共享目录权限:
[root@nfs ~]# chown -R nfsnobody.nfsnobody /data
[root@nfs ~]# chmod 755 -R /data
添加一块磁盘将永久挂载在/data 目录上:
添加一块磁盘将永久挂载在/data 目录上:
1 添加新磁盘重启虚拟机
//#查看新磁盘名字
[root@nfs ~]# cat /proc/partitions
major minor #blocks name
8 16 20971520 sdb
8 17 20970496 sdb1
8 0 41943040 sda
8 1 512000 sda1
8 2 41430016 sda2
11 0 4228096 sr0
253 0 39284736 dm-0
253 1 2097152 dm-1
[root@nfs ~]#
[root@nfs ~]# fdisk /dev/sdb
//命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
// 分区号 (1-4,默认 1):
// 起始 扇区 (2048-41943039,默认为 2048):
// 将使用默认值 2048
// Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):
// 将使用默认值 41943039
// 分区 1 已设置为 Linux 类型,大小设为 20 GiB
// 命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
3 .格式化分区并永久挂载
[root@nfs ~]# mkfs.ext4 /dev/sdb1
//永久挂载
[root@nfs ~]# vi /etc/fstab
/dev/sdb1 /data ext4 defaults 0 0
[root@nfs ~]# mount -a
[root@nfs ~]# df -h #查看是否挂载成功
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 898M 0 898M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 9.6M 901M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root 21G 1.3G 20G 7% /
/dev/sda1 1014M 150M 865M 15% /boot
tmpfs 182M 0 182M 0% /run/user/0
/dev/sdb1 20G 45M 19G 1% /data
//4 配置 nfs 共享目录
[root@nfs ~]# vi /etc/exports
/data 192.168.116.0/24(rw,no_root_squash,async) #分配
no_root_squash 权限
//5 生效配置与检验
[root@nfs ~]# exportfs -rv
exporting 192.168.116.0/24:/data
[root@nfs ~]# showmount -e localhost
Export list for localhost:
/data 192.168.116.0/24
[root@ftp ~]# showmount -e 192.168.116.131 #检测 nfs 共享目录创建成
果
Export list for 192.168.116.131:
/data 192.168.116.0/24
6.4 调试与检验成果
将/data 目录挂载到/home/vsftpd/xmcsxy/目录上
[root@ftp ~]# mount -t nfs 192.168.116.131:/data /home/vsftpd/xmcsxy/
[root@ftp ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 898M 0 898M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 9.6M 901M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root 30G 1.3G 29G 5% /
/dev/sda1 1014M 149M 865M 15% /boot
tmpfs 182M 0 182M 0% /run/user/0
192.168.100.12:/data 20G 44M 19G 1% /home/vsftpd/xmcsxy
创建对应 FTP 虚拟用户的家目录:
[root@ftp ~]# cd /home/vsftpd/xmcsxy/
[root@ftp xmcsxy]# mkdir yumwei
[root@ftp xmcsxy]# mkdir yumwei2
[root@ftp xmcsxy]# mkdir yumwei3
[root@ftp xmcsxy]# mkdir yumwei4
[root@ftp xmcsxy]# mkdir yumwei5
[root@ftp xmcsxy]# mkdir yumwei6
测试虚拟用户登录:
在 nfs 服务端安装 lftp(ftp 命令行客户端):
测试虚拟用户登录:
在nfs 服务端安装 lftp(ftp 命令行客户端)
测试虚拟用户登录:
在 nfs 服务端安装 lftp(ftp 命令行客户端):
[root@nfs ~]# lftp bai1@192.168.116.130
口令:
lftp bai1@192.168.116.130:~> ls
-rw-r--r-- 1 0 0 15056476 Dec 22 2021 php-5.6.39.tar.bz2
lftp bai1@192.168.116.130:/> get php-5.6.39.tar.bz2
shell 备用数据脚本及定时计划
[root@nfs ~]# vi /usr/local/sbin/backup.sh
a=`date '+%Y%m%d'` #定义时间
b=/backup/weekbackup #定义备份目录路径
c=/var/log/backup.log #定义输出日志路径
pname=$(rpm -qa | grep rsync) #定义 rsync 安装包检查
#判断 rsync 是否存在
if [ $? -eq 0 ]
then
echo "软件包 rsync 已经安装。"
else
echo "软件包 rsync 没有安装"
yum -y install rsync >> /dev/null
if [ $? -eq 0 ];then
echo "安装 rsync 完成。"
else
echo "安装 rsync 失败。"
fi
fi
#判断备份目录是否存在,并增量备份。
if [ ! -d "$b" ];then
mkdir -p $b
echo "$a Backup File missing!" >> /var/log/backup.log
rsync -rvz /data $b/$a
else
rsync -rvz /data $b/$a
if [ -d $b/$a ];then
echo "$a Backup success." >> /var/log/backup.log
find $b -mtime +14 | xargs rm -rf
else
echo "$a Backup failed." >> /var/log/backup.log
fi
fi
测试脚本执行过程结果:
[root@nfs ~]# sh -x /usr/local/sbin/backup.sh
++ date +%Y%m%d
+ a=20211222
+ b=/backup/weekbackup
+ c=/var/log/backup.log
++ rpm -qa
++ grep rsync
+ pname=
+ '[' 1 -eq 0 ']'
+ echo '软件包 rsync 没有安装'
软件包 rsync 没有安装
+ yum -y install rsync
+ '[' 0 -eq 0 ']'
+ echo '安装 rsync 完成。'
安装 rsync 完成。
+ '[' '!' -d /backup/weekbackup ']'
+ mkdir -p /backup/weekbackup
+ echo '20211222 Backup File missing!'
+ rsync -rvz /data /backup/weekbackup/20211222
sending incremental file list
created directory /backup/weekbackup/20211222
data/
data/lost+found/
data/yumwei/
data/yumwei/php-5.6.39.tar.bz2
data/yumwei2/
data/yumwei3/
data/yumwei4/
data/yumwei5/
data/yumwei6/
sent 15061796 bytes received 63 bytes 30123718.00 bytes/sec
total size is 15056476 speedup is 1.00
[root@nfs ~]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@nfs ~]#
[root@nfs ~]#
[root@nfs ~]# crontab -e
0 21 */7 * * sh /usr/local/sbin/backup.sh #每 7 天晚上 21 点执行一次脚本
至此案例实操完成!