shell脚本部署GlusterFS分布式存储系统

博客涉及GlusterFS分布式存储系统和Shell脚本相关内容,虽未给出具体内容,但推测围绕二者展开,如GlusterFS的使用、配置,Shell脚本的编写、应用等信息技术相关要点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#!/bin/bash
#AUTHOR:AN
#VERSION:1.1.0
#DATE:2019-06-19
#FUNCTION:部署GlusterFS分布式存储系统
#DESCRIPTION:单台服务器做RAID0,可以提高磁盘的读写速度,数据的安全性可以通过GlusterFS来保证

######################定义变量######################
Nfs_Dir=/cloud_nsd					#NFS共享目录
Script_Path=$Nfs_Dir/shell			#脚本路径
Ftp_Server=192.168.1.200			#FTP服务器
####################IP地址---主机名###################
node1=192.168.1.210
node2=192.168.1.211
node3=192.168.1.212
docker1=192.168.1.21

#加载函数库
if [ -f "$Script_Path/myfunction.lib" ];then
 	source $Script_Path/myfunction.lib 
else
	echo -e "\033[31m函数库不存在\033[0m"
	exit 68
fi

##############################################################
#GlusterFS的rpm包放入自建YUM仓库
YUM_CONF(){
	local Yum_Conf=/etc/yum.repos.d/local.repo
	[ ! -f $Yum_Conf ] && touch $Yum_Conf || > $Yum_Conf
	cat >> $Yum_Conf << EOF
[local_repo]
name=CentOS-\$releasever - Base
baseurl="ftp://$Ftp_Server/centos-1804"
enabled=1
gpgcheck=1

[myrepo]
name=myrepo
baseurl="ftp://$Ftp_Server/myrepo"
enabled=1
gpgcheck=0
EOF
	yum clean all && yum repolist
}

#主机名解析
HOSTS(){
	cat >> /etc/hosts << EOF
$node1		node1
$node2		node2
$node3		node3
$docker1 	docker1
EOF
}

##############################################################
#创建RAID0
CREATE_RAID0(){
	mdadm -C /dev/md0 -l 0 -n $1 $2 $3 $4
	mdadm --detail /dev/md0 &>/dev/null && OK RAID0
}
#创建逻辑卷
Volume_Name=myvg
CREATE_LV(){
	vgcreate $Volume_Name /dev/md0
	for i in `seq $1`
	do
		lvcreate -n ${HOSTNAME}-brick$i -L $2 myvg
		mkfs.xfs -i size=512 /dev/myvg/${HOSTNAME}-brick$i
		mkdir -p /bricks/brick-$i
		echo "/dev/myvg/${HOSTNAME}-brick$i /bricks/brick-$i xfs defaults 0 0" >> /etc/fstab
	done	
	mount -a && cecho 36 "逻辑卷创建成功" || cecho 31 "逻辑卷创建失败"
	for i in `seq $1`
	do
		mkdir /bricks/brick-$i/brick
	done	
}

#配置YUM源,设置主机名解析,安装软件
INIT(){
	YUM_CONF
	HOSTS
	YUM glusterfs-server
	STR_SVC glusterd
	CA_SERVICE glusterd	
}

#创建信任池
CREATE_POOL(){
	gluster peer probe $1	
}

#创建共享卷()
CREATE_SHARE(){
	gluster volume create docker_data replica 3 \
node1:/bricks/brick-3/brick \
node2:/bricks/brick-3/brick \
node3:/bricks/brick-3/brick \
node1:/bricks/brick-4/brick \
node2:/bricks/brick-4/brick \
node3:/bricks/brick-4/brick
	gluster volume start docker_data
	gluster volume info docker_data &>/dev/null && OK docker_data && exit 0
	ERROR docker_data && exit $ISERROR
}
##############################################################
#客户端挂载使用
CLIENT(){
	HOSTS
	YUM glusterfs-fuse
#	mount -t glusterfs 192.168.1.210:/docker_data /docker_data
	echo "192.168.1.210:/docker_data /docker_data glusterfs _netdev 0 0" >>/etc/fstab
	mount -a
}
	
#帮助信息
HELP(){
	cat << EOF
GlusterFS.sh version 1.1.0
Usage: GlusterFS [-h] [-raid0 磁盘数量 磁盘名1 磁盘名2......] [-lv num 逻辑卷数量 size 逻辑卷大小]
		[-init]	[-pool 节点1 节点2] [-volume]
=======================================================================
optional arguments:
	-h	提供帮助信息
#所有节点都需要操作
	-raid0		创建RAID0
	-lv			创建逻辑卷
	-init		配置YUM源,主机名解析,安装glusterd
#只需要在一个节点上操作
	-pool		将节点加入信任池
	-volume		创建共享卷
EXAMPLE:
	bash GlusterFS.sh -raid0 3 /dev/vdb /dev/vdc /dev/vdd	
	bash GlusterFS.sh -lv num 4 size 25G
	bash GlusterFS.sh -pool node2 node3
EOF
}
#############################主程序#############################
[ $# -eq 0 ] && HELP
case $1 in 
-h)
	HELP;;
-raid0)
	Disk_Num=$2
	if [ $# -ne "$[Disk_Num+2]" ];then
		cecho 31 "Invalid option:bash `basename $0` [-h]"
	else 
		CREATE_RAID0 $2 $3 $4 $5
	fi;;
-lv)
	[ -n $3 -a -n $5 ] && CREATE_LV $3 $5 || cecho 31 "Invalid option:bash `basename $0` [-h]";; 	
-init)
	INIT;;
-pool)
	for i in $@;do
		if [ "$i" == "-pool" ];then
			continue
		else
			CREATE_POOL $i
		fi
	done;;	
-volume)
	CREATE_SHARE;;
*) 
	cecho 31 "Invalid option:bash `basename $0` [-h]"
esac
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值