跨Linux服务器搭建共享/集群式读写文件系统的最简方案咨询(含POSIX兼容场景)
跨Linux服务器搭建共享/集群式读写文件系统的最简方案咨询(含POSIX兼容场景)
我来分享下针对两台Linux服务器+未初始化块设备场景的最简实现方案,毕竟性能不是核心需求,咱们就追求易上手、符合POSIX标准的集群读写方案:
首选方案:GlusterFS(分布式集群文件系统)
GlusterFS是完全符合POSIX标准的分布式文件系统,搭建步骤简单,不需要额外的集群管理组件,刚好适配你的非性能敏感场景,还能实现双节点数据复制保障可用性。
具体操作步骤:
在两台服务器上安装GlusterFS
- 如果你用Debian/Ubuntu系列:
sudo apt update && sudo apt install glusterfs-server glusterfs-client -y - 如果你用RHEL/CentOS/Rocky系列:
sudo dnf install glusterfs-server glusterfs-client -y
- 如果你用Debian/Ubuntu系列:
启动并设置GlusterFS服务开机自启
在S1和S2上都执行:sudo systemctl start glusterd sudo systemctl enable glusterd建立双节点信任集群
先确保S1和S2能通过主机名或IP互相访问(可以提前配置/etc/hosts或者用DNS),然后在S1上执行:sudo gluster peer probe S2执行完后可以用下面的命令确认集群状态:
sudo gluster peer status显示S2的状态为
Connected就说明成功了。准备块设备作为存储节点
在S1和S2上对/dev/sdb做相同的操作:- 先给块设备分区(用
fdisk就行,创建一个主分区/dev/sdb1):sudo fdisk /dev/sdb # 按n创建分区,选p主分区,一路回车默认,最后w保存退出 - 格式化分区为XFS(GlusterFS官方推荐的文件系统):
sudo mkfs.xfs /dev/sdb1 - 创建挂载目录并挂载分区:
sudo mkdir -p /gluster/bricks/brick1 sudo mount /dev/sdb1 /gluster/bricks/brick1 - 写入
/etc/fstab保证开机自动挂载:echo "/dev/sdb1 /gluster/bricks/brick1 xfs defaults 0 0" | sudo tee -a /etc/fstab
- 先给块设备分区(用
创建并启动GlusterFS复制卷
在S1上执行下面的命令,创建一个双副本的共享卷(保证两台节点都有数据备份):sudo gluster volume create shared_vol replica 2 S1:/gluster/bricks/brick1 S2:/gluster/bricks/brick1 force sudo gluster volume start shared_vol可以用
sudo gluster volume info shared_vol查看卷的详细信息。在两台服务器上挂载共享卷
在S1和S2上都执行:sudo mkdir -p /mnt/shared sudo mount -t glusterfs S1:/shared_vol /mnt/shared同样写入
/etc/fstab实现开机自动挂载:echo "S1:/shared_vol /mnt/shared glusterfs defaults 0 0" | sudo tee -a /etc/fstab
方案优势:
- 完全符合POSIX标准,你在
/mnt/shared下的操作和本地文件系统几乎没区别 - 双节点数据复制,单节点故障时另一节点还能提供服务
- 搭建步骤简洁,不需要额外的集群管理工具(比如Pacemaker)
- 满足非性能敏感场景的读写需求
备选方案:OCFS2 + Pacemaker(传统集群文件系统)
如果需要更严格的集群锁机制,可以考虑这个方案,但步骤相对繁琐一些,需要配置Pacemaker集群管理器,适合对集群一致性要求更高的场景,不过对于你的需求来说GlusterFS已经足够简单好用了。
备注:内容来源于stack exchange,提问作者otujuhxv
相关产品推荐
相关产品推荐

