我有一个提供二进制文件(图像等)的 Web 应用程序。我们的应用程序在Amazon EC2上运行。我们最初打算使用Amazon S3来存储和提供这些文件,这不再是一种选择。
我们需要使用CNAME通过HTTPS传输这些文件。由于许多技术原因,这对于Amazon S3来说显然是不可能的。Amazon 提供弹性块存储 (EBS),它允许您将大小高达 1TB 的块装载到一个实例。我们将有多个实例并行访问这些数据。
我在想的是使用分布式文件系统,如MogileFS / GluserFS / [insert-more-here]和Elastic Block Storage (EBS)。
所以我的问题是:在不使用冗余的Amazon S3 的情况下,其他人目前正在做什么以通过Amazon EC2创建可扩展(几个 100TB)的文件存储系统?数据仍将备份在Amazon S3 上,但所有读取都将脱离文件系统。
提前致谢。如果有人需要澄清任何事情,请随时询问。
我有一个 GlusterFS 2 节点 2 副本设置。我打算将它用作 OpenStack 实例存储,其中存储了 VM 磁盘映像。
根据我的测试,如果虚拟机管理程序当前安装的 GlusterFS 节点出现故障(使用默认 GlusterFS 设置)连接超时需要大约 45 秒,并且 glusterfs 客户端故障转移到另一个节点。在这 45 秒内 IO 操作将挂起,从 VM 的角度来看,这意味着磁盘变得无响应。
我知道对于 Linux,如果磁盘变得无响应,一段时间后(我不确定多长时间)内核会将文件系统重新挂载为只读。
我还可以降低 GlusterFS 卷的值network.ping-timeout,这将减少故障转移时间。
我的问题是,我应该设置多少这个值,以便大多数操作系统可以容忍虚拟磁盘的无响应时间而没有副作用?
更准确地说,我想知道 Windows NTFS、FreeBSD UFS/ZFS 和 Linux ext4 可以容忍的磁盘无响应时间。涉及的参数有哪些?(例如,/sys/block/sda/device/timeout在 Linux 上)
相关信息:
更新:@the-wabbit 已经回答了关于 Linux 和 Windows 的问题,我也想知道 FreeBSD 的情况
storage filesystems distributed-filesystems glusterfs openstack
我正在 Google Cloud Compute 上设置一些网络服务器,我需要在所有服务器之间同步一个目录以保持网站同步。我还想在需要时使用自动缩放功能来配置新服务器。
我意识到 GlusterFS 需要了解所有实例,但我的想法是从每个服务器设置监控,并在新/删除的服务器事件上自动更新配置。(虽然还没试过)
有没有人有过使用这些系统的经验?如果是这样,维护是如何进行的,以及涉及哪些成本,因为我不确定 GlusterFS 是否会花费除了它所在的驱动器之外的任何额外费用,而 Google Cloud Storage FS 的存储成本加上它运行的 api 命令.
synchronization fuse glusterfs google-compute-engine google-cloud-platform
我需要实现某种 HA 设置,其中两台服务器需要能够始终保持同步,无论您在哪一台服务器上写入。数据库部分可以通过主主复制设置来覆盖。然而,当涉及到文件和内容时,我一直无法找到能够很好地满足这些需求的东西。例如,我需要能够将 /var/www 从一台机器复制到另一台机器,并且能够在其中任何一台机器中进行写入,并且无论 http 请求发送到何处,始终具有相同的可用内容。
所以我不确定双向复制是否是通常不做的事情,我需要重新考虑这一点,或者我还没有对此进行足够的研究,但我不知所措。我似乎没有找到其他解决方案。
还有其他东西可以处理自动透明的双向文件复制吗?
我注意到当前离线的服务器上有 15% 的 CPU 负载。它已通过 TCP 挂载 GlusterFS 卷。从顶部看,它向我展示了它的 glusterfs。在那之后,我试图弄清楚到底是什么在使用它,我得到了这个:
# lsof /storage/
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
find 16433 nobody cwd DIR 0,19 8192 9259265867489333824 /storage/200000/200000/200700/200704/08
Run Code Online (Sandbox Code Playgroud)
然后:
# ps uax | grep find
root 16415 0.0 0.0 4400 724 ? SN 06:34 0:00 /bin/sh /usr/bin/updatedb.findutils
root 16423 0.0 0.0 4400 336 ? SN 06:34 0:00 /bin/sh /usr/bin/updatedb.findutils
nobody 16431 0.0 0.0 39524 1376 ? SN 06:34 0:00 su nobody -s /bin/sh -c /usr/bin/find / -ignore_readdir_race …Run Code Online (Sandbox Code Playgroud) 我有多个服务器,它们都需要在 /home 中具有相同的内容。换句话说,如果文件 /home/user1/test.txt 在服务器 A 上更新,则需要将其复制到集群中的所有其他服务器。
是否可以为此目的使用 GlusterFS?也就是说,让每个服务器在本地拥有所有数据的完整副本——该服务器将处理这些数据——并且只使用 GlusterFS 来负责将这些数据复制到其他服务器?
我对组合存储不感兴趣,而是拥有所有机器上的所有数据,只是为了让 GlusterFS 将其复制到其他机器上。
现在我有一个带有 ZFS 和 NFSv4 的 FreeBSD 主机。它被复制到另一个 FreeBSD 机器上用于备份。
对我来说很重要的 ZFS 功能是
题
是否可以在 CentOS 6 上使用 XFS 或 GlusterFS 完成相同或相似的设置?
更新
硬件是
每个主机在RAIDZ2中有36*3TB的空间,所以100TB可用,50TB可用。
看来是 Ubuntu 客户端可以在大量读取时使主机崩溃。目前有大约 5 个 NFS 客户端。没有读缓存。
除了启用巨型帧之外没有 NFSv4 调整
echo 'kern.ipc.nmbclusters="32768"' >> /boot/loader.conf
echo 'kern.ipc.maxsockbuf=16777216' >> /etc/sysctl.conf
echo 'net.inet.tcp.sendspace=262144' >> /etc/sysctl.conf
echo 'net.inet.tcp.recvspace=262144' >> /etc/sysctl.conf
echo 'net.inet.tcp.rfc1323=1' >> …Run Code Online (Sandbox Code Playgroud) 有两台机器,利润率和修正主义者,我在利润率中创建了一个卷:
root@profitmargin:~# gluster volume info
Volume Name: uploads
Type: Distribute
Status: Started
Number of Bricks: 1
Transport-type: tcp
Bricks:
Brick1: profitmargin:/var/lib/gluster/brick01
Run Code Online (Sandbox Code Playgroud)
在修正主义者中,我将此行添加到 fstab 以在启动时安装它:
profitmargin:/uploads /mnt/uploads glusterfs defaults,_netdev 0 0
Run Code Online (Sandbox Code Playgroud)
但是当计算机启动时它没有安装:
root@revisionist:~# mount
/dev/mapper/revisionist-root on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts …Run Code Online (Sandbox Code Playgroud) 我们已经设置了一对 GlusterFS 服务器镜像。无需特殊调整,无论官方 RHEL6 RPM 中的 GlusterFS-3.5.1 “开箱即用”什么,这就是我们所拥有的。
集群可以工作,但性能非常糟糕。例如,firefox-31.0.source.tar.bz2通过本地主机上的 GlusterFS 提取一个大的 tarball () 需要长达 44 分钟的时间。直接在同一磁盘上提取相同的文件所需时间不到 2。删除创建的树也存在类似的差异(通过 gluster 需要 10 分钟)...
当然,可以预见的是,需要进行镜像,等等,使用网络的文件系统会更慢——但是慢30 倍?简单地复制大文件速度很快——所以这不是我们所缺乏的带宽。当解压正在运行时,我看到glusterfs(客户端)和glusterfsd(服务器)进程都消耗了大量的 CPU(每个进程大约 10%),但系统仍然保持大约 70% 的空闲状态——两个 gluster 进程都消耗了大量的 CPU。比提取 bzip2 和 tar 更忙......他们在做什么?
我可以做一些调整来显着提高性能吗?或者我应该尝试ceph(或gfarm?)而不是 gluster ?或者对于大量的小文件来说它们都很糟糕?谢谢你!
performance-tuning distributed-filesystems glusterfs ceph glusterfs-3.5
我将 GlusterFS 用于文件存储集群和我的网络应用程序。
我有两卷,存储卷和网络卷。
目前我将网络安装为 NFS,因为 FUSE 太慢了。
现在我想知道是否有什么大的缺点,我是否也应该将存储安装为 NFS。
glusterfs ×10
filesystems ×3
fuse ×2
linux ×2
amazon-ebs ×1
amazon-s3 ×1
centos ×1
ceph ×1
nfs ×1
openstack ×1
replication ×1
storage ×1
ubuntu ×1
ubuntu-12.04 ×1
unison ×1
xfs ×1
zfs ×1