glusterfs部署
GlusterFS 是一个开源的分布式文件系统,旨在提供高性能、高可用性和可扩展性,适用于存储大量数据。它通过将多个存储节点组合成一个统一的文件系统,允许用户透明地访问分布在不同节点上的数据。
主要组件
- 存储砖块(Bricks):存储砖块是 GlusterFS 的基本存储单元,通常是服务器上的一个目录或挂载点。
- 卷(Volumes):卷是由一个或多个存储砖块组成的逻辑存储空间,用户通过卷来访问数据。
- 客户端(Clients):客户端是访问 GlusterFS 卷的应用程序或系统,通过挂载卷来读写数据。
- 管理节点(Glusterd):管理节点负责集群的管理和配置,运行glusterd 服务。
卷类型
- 分布式卷(Distributed Volume):将数据分散存储在多个存储节点上,适合存储大量小文件,但没有数据冗余。
- 复制卷(Replicate Volume):将数据复制到多个存储节点上,提供数据冗余和高可用性。
- 条带卷(Stripe Volume):将数据分割成多个条带,分散存储在多个存储节点上,适合大文件的存储。
- 分布式复制卷(Distributed Replicate Volume):结合了分布式卷和复制卷的特点,既提供数据冗余,又扩展存储容量。
工作原理及应用场景
- 数据分布:GlusterFS 使用哈希算法将数据分布到不同的存储砖块上,确保数据的均匀分布。
- 数据访问:客户端通过挂载卷来访问数据,GlusterFS 会透明地处理数据的分布和访问。
- 故障恢复:在复制卷中,如果某个存储节点发生故障,GlusterFS 会自动从其他副本中恢复数据。
- 大数据存储:适用于存储和处理大量数据,如 Hadoop、Spark 等大数据平台。
- 云存储:作为云存储后端,提供可扩展的存储解决方案。
- 媒体存储:用于存储视频、音频等媒体文件,支持高带宽的数据访问。
- 企业存储:作为企业级存储解决方案,提供高性能和高可用性。
部署
存储空间配置
将ubuntu-vg-1下的所有空间都给lv-data,每台服务器都需要这样操作
lvcreate -l +100%FREE -n lv-data ubuntu-vg-1
格式化
mkfs.ext4 /dev/ubuntu-vg-1/lv-data
创建文件夹
mkdir -p /gluster/data
挂载
mount /dev/ubuntu-vg-1/lv-data /gluster/
echo '/dev/minio-vg-1/lv-data /gluster ext4 defaults 0 0' >> /etc/fstab
组成gluster集群
服务端下载
apt install -y glusterfs-server
systemctl start glusterd
systemctl enable glusterd
systemctl status glusterd
客户端(可能之间提示已下载)
apt install -y glusterfs-client glusterfs-common
systemctl enable glusterd
探测其他机器
sudo gluster peer probe 172.32.1.13
sudo gluster peer probe 172.32.1.15
查看状态
gluster peer status
创建卷(不能直接使用挂载点,需要挂载点下面创建一个文件夹,这里创建的分布式卷)
gluster volume create gv0 172.32.1.11:/gluster/data 172.32.1.13:/gluster/data 172.32.1.15:/gluster/data
启动配置
gluster volume start gv0
查看状态
gluster volume info
挂载(三台机器都需要,挂载到指定目录供设备使用)
mount -t glusterfs 172.32.1.11:/gv0 /data
echo '172.32.1.11:/gv0 /data ext4 defaults 0 0' >> /etc/fstab
查看
df -hT
用户权限配置
三台机器都设置
groupadd -g 2000 glusterusers
chown root:glusterusers /data
chmod 775 /data
usermod -aG glusterusers server_01
usermod -aG glusterusers server_02
usermod -aG glusterusers server_03
glusterfs 删除空间
umount /data
如果卸载失败,说明可能有进程正在使用,运行(一个节点umount就行):
fuser -vm /data
kill -9 <进程ID>
umount /data
删除lv
lvremove /dev/ubuntu-vg2/lv-data
查看
lvs
删除gluster volume
sudo gluster volume delete gv0
sudo rm -rf /data/.glusterfs
sudo rm -rf /data/.trashcan