标签: glusterfs

DRBD 与 GlusterFS 用于复制

我需要构建一个解决方案来托管内部 git 存储库。它需要支持数十万(或更多)存储库。

我计划将多个“哑”服务器与共享存储一起使用,因此基本上当客户端尝试访问存储库时 - 负载平衡器会将其重定向到任何可用服务器。对存储库的任何更改 - 将在所有节点上复制。

我的第一个想法是为此使用 GlusterFS,但我读过它不能很好地处理小文件。我也在考虑使用 DRBD 自己复制所有内容,但这需要更多设置,并且与 GlusterFS 相比似乎更复杂。

两者中哪一个提供更好的性能?基本上,我试图解决的问题是,当任何服务器出现故障时 - 我希望其他人仍然能够提供数据。

nfs git drbd glusterfs shared-storage

7
推荐指数
1
解决办法
2万
查看次数

使用 MooseFS 的经验?

有人有使用 MooseFS 的经验吗?我想要一个简单的分布式存储平台来存储大约 10 TB 的静态数据存档并将其提供给 20-40 个节点。此外,我希望能够随着存档的增长而添加存储,而无需重建文件系统。我不在乎它是否有点慢。我只是希望它简单而稳定。基本上从我所看到的 OS X 来看,它介于 MooseFS 和 Gluster 之间。还有其他建议吗?

distributed-filesystems glusterfs

6
推荐指数
1
解决办法
6288
查看次数

需要有关运行 Apache+PHP 的网络服务器集群的 R/W 分布式文件系统的建议

在过去的几个月里,我一直在努力寻找在多个运行 Apache+PHP 的 Web 服务器(12+)之间共享多个网站内容的最佳方式。我面临的最大挑战之一是,我们需要能够随时读取写入文件系统,无论是好是坏的原因(即应用程序不在我们的控制范围内,通过 Web 界面管理的 wordpress 站点等……)。

以下是我尝试过的一些事情,结果证明:

  • Rsync/duplicity/csync2:每分钟只运行一次,这意味着某些更改不会在集群中以足够快的速度共享以防止出现大问题。
  • inotify/incron:考虑到要监控的大量文件和目录,太复杂了。此外,它在处理新文件时效果不佳。
  • GlusterFS:我们有一个 4 台服务器的 gluster 后端,性能虽然很慢,但还可以接受。不幸的是,在每个 Web 服务器上运行的 gluster 客户端不断崩溃,然后将 4 个文件服务器中的一个冻结了 2 到 15 分钟。我们联系了 Gluster Inc.,让他们的一些工程师帮助我们,但他们无法找出问题所在。我们不得不在使用 3 个月后放弃。

有关我们设置的一般信息:

  • 托管在 Amazon EC2 上
  • 运行 Ubuntu Maverick
  • 运行 Nginx (2) -> Varnish (2) -> Apache (12+)
  • .htaccess 被禁用以获得最佳性能。我们将指令直接添加到站点配置文件中
  • 我们运行的大多数网站/应用程序都不是我们的,不幸的是,只读环境是不可能的
  • 考虑到这些 Web 服务器正在处理的任务,具有自动故障转移的高可用性对我们来说非常重要

所以我认为这涵盖了一切:)。提前感谢您的时间和回复。

cluster nfs web-server glusterfs apache-2.2

6
推荐指数
1
解决办法
1796
查看次数

Gluster:什么是砖块与节点

我在理解 Gluster 程序块和节点时遇到了一个小问题。特别是,在3.3.0 Administration Guide 上,例如第 12 - 13 页,讨论了“条带卷”与“分布式条带卷”。有关概述,请参见第 5 章第 9 页。

我希望在 VMware ESXi 5.X 环境中将它用于 HA NFS 存储解决方案。因此,条带卷和分布式条带卷很受关注,因为它们与“访问非常大文件的高并发环境”有关。这充分描述了虚拟磁盘。

但是,在阅读手册时,我有这个:

  1. 条带卷将数据条带化到砖块上。
  2. 分布式条带卷跨两个或更多节点条带化数据。

所以我假设砖块是(例如)节点上的块设备(或者他们有时似乎提到的对等点)。一个节点是一个不同的服务器(其中一个节点)。

但是,条带卷上的图表显示了 server1 和 server2,因此这种假设似乎是错误的。

但是分布式条带卷也显示相同的内容,但不同。现在它显示 server1 有两个砖块(exp1 和 exp2),它称为“条带卷 0”,然后 server2 也有两个砖块(exp3 和 exp4),称为“条带卷 1”。

示例创建显示创建一个 8 节点 4 条带卷,这显然与每个节点只有 1 个砖块的图表不同。

此外,创建这两种类型的示例使用相同的语法。

有人可以帮忙澄清一下吗?什么是砖,什么是节点?我说得对吗,“条带化”图实际上是错误的,实际上显示的是分布式条带化卷?

glusterfs

6
推荐指数
1
解决办法
9384
查看次数

GlusterFS 直接 I/O 模式

你能帮我理解 GlusterFS 中的“direct-io-mode”吗?

我在禁用直接 I/O 模式的情况下获得了更好的读取结果 - 这是否意味着在禁用模式下它正在从缓存写入/读取 - 它是系统缓存还是 GlusterFS 缓存?推荐的方法是什么?我正在使用 4 个具有分布式复制卷的节点进行 Web 服务:

Write: dd if=/dev/zero of=tempfile bs=1M count=1024 conv=fdatasync,notrunc
echo 3 > /proc/sys/vm/drop_caches
Read: dd if=tempfile of=/dev/null bs=1M count=1024
Read-Read: dd if=tempfile of=/dev/null bs=1M count=1024

Write           Read            Re-Read
67.5 MB/s       94.9 MB/s       94.6 MB/s   direct-io-mode=enabled
65.8 MB/s       230 MB/s        226 MB/s    direct-io-mode=disabled
Run Code Online (Sandbox Code Playgroud)

glusterfs

6
推荐指数
1
解决办法
9960
查看次数

具有本地磁盘缓存的分布式文件系统

我的服务器基础设施发展迅速,我决定创建一个分布式存储集群。我一直在为这个任务寻找一个合适的文件系统来满足我的要求,但它们都不支持本地磁盘缓存功能。我的每台服务器都有两个 600GB SAS 硬盘驱动器,我喜欢将它们用作缓存存储,用于存储来自分布式存储的最常访问的文件。

是否有任何开源文件系统支持此功能?我喜欢使用 Ceph 或 GlusterFS,但我没有找到有关本地磁盘缓存的任何信息。我认为这是分布式文件系统应该支持的基本功能之一。

linux distributed-filesystems glusterfs

6
推荐指数
2
解决办法
6058
查看次数

Gluster + ZFS,基准测试期间死锁:zfs_iput_taskq 100% cpu

首先是一些背景:我在一家运行 PHP 网络应用程序的公司工作。我们在多个网络服务器上通过 NFS 安装了一个存储后端。今天我们遇到了一个问题,如果一个网络服务器通过 NFS 写入文件,有时该文件直到几分钟后才会出现在其他安装的客户端上。它也不是多余的,因此我们无法执行任何“隐形”维护。

我一直在考虑迁移到 GlusterFS 解决方案(两个或三个复制的砖块/机器以实现冗余)。现在,使用 XFS 作为 Gluster “背后”的存储文件系统效果很好,性能也很好。Gluster 似乎也没有上面提到的同步问题。

但是,我想使用 ZFS 作为后端文件系统,原因是;

  • 便宜的压缩(当前存储 1.5TB 未压缩)
  • 很容易扩展存储卷“实时”(一个命令,比较 LVM 一团糟)
  • 快照、位腐烂保护和所有其他 ZFS 荣耀。

在我的解决方案演示设置中,我有三台带有 Replicated Gluster 的服务器,在每台服务器上的单独磁盘上都有一个 ZFS 后端池。我在 Linux (0.6.2) + GlusterFS 3.4 上使用 CentOS 6.5 和 ZFS。我也尝试过 Ubuntu 13.10。一切都在 VMware ESX 中。

为了测试这个设置,我在 Gluster 上安装了卷,然后运行 ​​BlogBench ( http://www.pureftpd.org/project/blogbench ) 来模拟负载。我遇到的问题是,在测试结束时,ZFS 存储似乎陷入僵局。所有三台机器都有“zfs_iput_taskq”以 90-100% 的 CPU 运行,并且测试冻结。如果我中止测试,僵局不会消失,唯一的选择似乎是硬重启。

我试过了:

  • 禁用时间
  • 禁用调度程序(noop)
  • 不同压缩/无压缩
  • 直接在 ZFS 上的 Blogbench 工作正常
  • 作为后端的 Gluster + XFS 上的 Blogbench 工作正常

想法?我应该放弃 ZFS 并使用其他东西吗?备择方案? …

zfs storage nfs centos glusterfs

6
推荐指数
1
解决办法
2959
查看次数

glusterfs 在集群服务器上启动时挂载 - RHEL 7

我已经在一对服务器上配置了 gluserfs,我可以将它安装在我的客户端机器上。当我将两台机器脱机并从头启动时,我还希望能够在引导时在两台 glusterfs 服务器上挂载 glusterfs 文件系统。

这些服务器使用起搏器设置为集群。除了共享数据库之外,pacemaker 还提供了一个虚拟 IP 地址来挂载 gluster 文件系统。

在两台服务器都使用以下命令启动后,我可以在每个服务器上手动挂载文件系统:

mount -t glusterfs nodea:/gv0 /data
Run Code Online (Sandbox Code Playgroud)

这很棒。但我希望这在启动时自动发生。

所以我尝试在 fstab 中添加一个条目:

nodea:/gv0  /data       glusterfs   _netdev 0 0
Run Code Online (Sandbox Code Playgroud)

当我在集群启动并运行后运行“mount -a”命令时,它会起作用。但是,它在启动时不起作用。(这是客户端机器在启动时挂载 glusterfs 的方式,但集群已启动并正在运行。所以当然它可以在启动时为它们工作。)

我还尝试创建一个 systemd 单元文件来处理启动时 glusterfs 的安装。我的单元文件位于名为“data.mount”的 /etc/systemd/system 中,如下所示:

# Mounting gluster fs at /data

[Unit]
Description = Automount gluster filesystem
After=pcsd.service

[Mount]
What=nodea:/gv0
Where=/data
Type=glusterfs

[Install]
WantedBy = pcsd.service
Run Code Online (Sandbox Code Playgroud)

同样,当两台服务器都通过运行命令“systemctl start data.mount”启动并运行时,这会起作用。如果我只重启集群中的一台机器,它也可以工作。但它不适用于重新启动两台服务器。

如果集群中的两个节点都出现故障,或者如果我出于某种原因想同时重新启动两个节点,我想确保当两台机器重新启动时,glusterfs 已安装在 /data 上。

作为一种解决方法,我在两台机器上的 root 的 crontab 中添加了以下几行:

@reboot sleep 60 && mount -t glusterfs nodea:/gv0 …
Run Code Online (Sandbox Code Playgroud)

glusterfs

6
推荐指数
2
解决办法
1万
查看次数

GlusterFS 传输端点有时未连接

我正在使用 GlusterFS 3.7.9,目前在具有 4 个砖块的单个服务器上。

每块砖有 4TB,卷设置为仅分发。

该卷安装在辅助服务器上,我将其用于备份目的。

问题是,每隔几天辅助服务器就会看到该卷变小(12TB),并且当它尝试访问我得到的一些文件时transport endpoint not connected

就好像它不再看到 4 块砖中的一块,而卷所在的服务器可以毫无问题地看到它们。

我的IP在防火墙白名单中,gluster volume status说一切都很好。

我应该检查什么?我找不到任何理由。

filesystems fuse distributed-filesystems glusterfs

6
推荐指数
1
解决办法
2万
查看次数

glusterfs 内存使用过多

我运行了一个基于 Heketi 的 3 节点 glusterfs 3.10 集群,以通过 Kubernetes 自动配置和取消配置存储。目前,有 20 个卷处于活动状态——大多数卷的最小允许大小为 10gb,但每个卷只有几百 mb 的数据持久化。每个卷都复制到两个节点上(相当于 RAID-1)。

但是,节点上的 gluster 进程在每个节点上占用了大量内存 (~13gb)。创建statedump并查看结果,每个卷使用 1 到 30mb 的内存:

# for i in $(gluster volume list); do gluster volume statedump $i nfs; done
# grep mallinfo_uordblks -hn *.dump.*
11:mallinfo_uordblks=1959056
11:mallinfo_uordblks=20888896
11:mallinfo_uordblks=2793760
11:mallinfo_uordblks=23316944
11:mallinfo_uordblks=1917536
11:mallinfo_uordblks=29287872
11:mallinfo_uordblks=14807280
11:mallinfo_uordblks=2170592
11:mallinfo_uordblks=2077088
11:mallinfo_uordblks=15463760
11:mallinfo_uordblks=2030032
11:mallinfo_uordblks=2079856
11:mallinfo_uordblks=2079920
11:mallinfo_uordblks=2167808
11:mallinfo_uordblks=2396160
11:mallinfo_uordblks=34000240
11:mallinfo_uordblks=2649920
11:mallinfo_uordblks=1683776
11:mallinfo_uordblks=6316944
Run Code Online (Sandbox Code Playgroud)

所有卷都有性能的默认设置。出于某种原因,缓存大小显示了两次 - 一次是 32mb,一次是 128mb:

# gluster volume get <volumeId> all | grep performance …
Run Code Online (Sandbox Code Playgroud)

cloud storage glusterfs

6
推荐指数
0
解决办法
2864
查看次数