在不同的主机文件系统之间共享文件的最佳解决方案是什么

问题描述

我需要存储架构方面的建议。我有 2 台用于视频编码的服务器和 1 台用于处理上传和请求的机器。每台机器都有自己的硬盘驱动器,现在我需要了解如何连接所有这些硬盘驱动器以创建单个存储。我已经尝试过配置 glusterfs,但我不得不说它非常具有挑战性。我应该使用其他东西还是坚持使用 gluster?

解决方法

您在 GlusterFS 上尝试过什么?需要什么类型的Storage,你想要双倍的存储空间还是冗余副本?

如果要作为单个卷添加存储,则使用分布式 Gluster 卷,如果需要冗余,则使用复制卷。

我在回答这个问题时假设您正在合并存储以获得单个卷。

在两个节点/机器上安装 GlusterFS。假设两台机器是

node1.example.com
node2.example.com

登录机器 1 并邀请其他机器加入集群。

root@node1 # gluster peer probe node2.example.com

此后,准备磁盘并将其挂载以用作存储单元。例如,如果设备路径是 /dev/sdc 那么

root@node1 # mkfs.xfs -i size=512 /dev/sdc
root@node1 # mkdir -p /bricks/myvol/brick1
root@node1 # mount /dev/sdc /bricks/myvol/brick1

在其他机器上重复同样的事情

root@node2 # mkfs.xfs -i size=512 /dev/sdc
root@node2 # mkdir -p /bricks/myvol/brick2
root@node2 # mount /dev/sdc /bricks/myvol/brick2

现在登录任何一台机器,创建并启动 Gluster Volume

root@node1 # gluster volume create myvol          \
     node1.example.com:/bricks/myvol/brick1/brick \
     node2.example.com:/bricks/myvol/brick2/brick
root@node1 # gluster volume start myvol

现在在两台机器上创建挂载点并挂载 Gluster 卷。

root@node1 # mkdir -p /mnt/myvol
root@node1 # mount -t glusterfs localhost:/myvol /mnt/myvol
root@node2 # mkdir -p /mnt/myvol
root@node2 # mount -t glusterfs localhost:/myvol /mnt/myvol

现在您的编码器应用程序可以使用 /mnt/myvol 作为两个节点之间的持久存储。

本示例中的 Gluster 卷大小是每个节点 (sum(brick sizes)) 中提供的存储空间的总和。例如,如果两个节点/机器都有 10GiB 磁盘,则 Gluster 卷大小将为 20GiB

如果您想要冗余,这意味着当机器不可用时,数据也应该可用,然后将 Volume create 命令更改为

root@node1 # gluster volume create myvol replica 2 \
     node1.example.com:/bricks/myvol/brick1/brick  \
     node2.example.com:/bricks/myvol/brick2/brick

注意:卷大小将为 min(bricks_size),因为相同的文件存储在两台机器中。