glusterfs部署之后,需要根据生产环境应用的访问特性做一些调优。这时会使用 gluster volume set 指令设置卷属性,但是操作过程中,还是遇到了一些困难。

设置glusterfs的缓存

gluster volume set g_backup performance.cache-size 1GB

遇到以下报错

#gluster volume set g_backup performance.cache-size 1GB
volume set: failed: Staging failed on 192.168.1.191. Error: One or more connected clients cannot support the feature being set. These clients need to be upgraded or disconnected before running this command again
Staging failed on gstore-2.example.com. Error: One or more connected clients cannot support the feature being set. These clients need to be upgraded or disconnected before running this command again
Staging failed on gstore-11.example.com. Error: One or more connected clients cannot support the feature being set. These clients need to be upgraded or disconnected before running this command again

再检查卷信息,发现上述报错导致缓存设置没有成功

Continue reading

GoFlex Home的内存实在太小了,只有128MB。实际测试下来,虽然将 performance.cache-size 设置成 16MB,使得GoFlex Home可以挤出可怜的16M内存用来作为glusterfs的客户端卷缓存,但是,实际上为了能够同时提供NFS输出和netatalk、avahi支持(用于苹果设备的TimeMachine备份),需要消耗更多的内存。

部署跨网络镜像的TimeMachine存储虽然实现了双存储镜像的glusterfs来支持运行NetaTalk,提供高可靠的Apple TimeMachine备份存储。但是实际上由于硬件性能实在有限,备份数据的效率较低,平均只有 2MB/s 到 4MB/s 的写入速度,并且性能波动很大(由于内存不足,需要不断内存换页)。

换一个思路:

  • GlusterFS的服务器和客户端其实可以分离,分离客户端的同时,相当于把NetaTalk和Avahi服务也分离出来,不再占用GoFlex Home存储设备的资源。这样,存储设备可以专用于数据存储,只运行GlusterFS服务端,在有限的内存和cpu资源下,可以专机专用,发挥存储镜像高可用所长。

  • 运行GlusterFS客户端和NetaTalk/Avahi的节点,相当于存储设备机头,可以使用树莓派来实现。现在,淘宝上200元可以买到配有512M内存的树莓派主板,配上SD卡、壳子和电源,大致可以在250元实现一个较好性能的GlusterFS存储机头。如果要保障高可用(呃,有点过度设计了,但是对于中小企业有使用价值),可以使用两个树莓派,使用Pacemaker来实现高可用的NetaTalk输出。

Continue reading

为了能够可靠且自动化备份数据(主要针对苹果设备),经过几天的努力,结合了多项开源技术,在家用网络环境中实现一个高可用性的分布式存储,并且能够支持苹果设备的TimeMachine备份。

费用只有苹果设备的一半,但是使用开源技术打造的分布式存储,不仅支持基于网络的TimeMachine备份,而且还实现底层数据透明镜像,自动在两台存储设备保持两个副本。这样,即使出现磁盘故障,也不会丢失备份数据。

使用到的开源技术主要有:

在内存有限的ARM环境使用glusterfs存储需要注意缓存配置 128M内存Arch Linux ARM使用glusterfs客户端

  • netatalk 和 avahi - 实现零配置(zeroconfig,由Avahi实现)的苹果文件协议(Apple Filing Protocol,由netatalk实现),使得苹果设备能够通过网络实现TimeMachine备份
Continue reading

使用两台Seagate GoFlex Home网络存储部署glusterfs分布式文件系统之后,我准备使用其中一个节点(如果支持浮动IP就更好)来挂载glusterfs卷。目的是为了实现部署跨网络镜像的TimeMachine存储

  • 在Arch Linux ARM上使用netatalk协议输出glusterfs存储卷
  • 将Apple产品(Mac/Iphone)的数据存储到glusterfs上,以便能够实现双副本备份。

配置 nas1/etc/fstab 添加内容如下

127.0.0.1:/g_backup    /g_data/g_backup  glusterfs       defaults,_netdev         0 0

然后挂载存储目录

mount /g_data/g_backup

使用的设备是Segate GoFlex Home网络存储,这个存储只有 128MB 内存,运行 glusterfs 服务器勉强可以,但是在使用glusterfs客户端挂载的时候有错误日志如下:

[2014-10-26 15:33:52.943617] E [quick-read.c:827:check_cache_size_ok] 0-g_backup-quick-read: Cache size 134217728 is greater than the max size of 124276736
[2014-10-26 15:33:52.943768] E [xlator.c:403:xlator_init] 0-g_backup-quick-read: Initialization of volume 'g_backup-quick-read' failed, review your volfile again
[2014-10-26 15:33:52.943849] E [graph.c:307:glusterfs_graph_init] 0-g_backup-quick-read: initializing translator failed
[2014-10-26 15:33:52.943921] E [graph.c:502:glusterfs_graph_activate] 0-graph: init failed
[2014-10-26 15:33:52.945593] W [glusterfsd.c:1095:cleanup_and_exit]  0-: received signum (0), shutting down
[2014-10-26 15:33:52.945712] I [fuse-bridge.c:5475:fini] 0-fuse: Unmounting '/g_data/g_backup'.
[2014-10-26 15:33:52.977175] W [glusterfsd.c:1095:cleanup_and_exit]  0-: received signum (15), shutting down
Continue reading

Puppet部署使用了内建的证书认证(certificate authority,CA)来实现客户服务器的安全通讯。某些情况下,需要重新生成证书和安全认证(私钥和公钥),例如:

  • puppet master服务器搬迁到不同的网络
  • 由于无法预见的安全漏洞需要重建所有安全证书

我这次的证书重建是因为puppet master服务器的 /var/lib/puppet 目录损坏

Continue reading

阿泰

author.bio


author.job