【Zanuck 镇】个人及企业数据可扩展存储方案(开源:glusterfs+zfs+centos)

小镇最近在研究存储方案,实乃刚需,至于为什么,请看下图:


当时小镇选择了万由nas+win10+单盘+goodsync备份,当时天真的我以为8tb的单盘一辈子都用不完。至于当时为何选择看上去如此low的方案?因为简单好用,如果nas机器坏掉,把硬盘拔出插到硬盘底座就能用windows立马取出数据。(平民用用这种方案挺好,有可靠性,防误删,但是容量不能横向扩展,并)

但是!

小镇的数据不够放了

于是,小镇逛遍了各大论坛,去youtube上看别人的解决方案(请看LinusTechTips和45drives的频道),最后选择了以下方案:


最终方案:

硬件:两个万由nas机箱(随意)+交换机一台(万兆最好,千兆ok)+各种硬件(要求ecc内存,其他随意,保证ecc开启并且使用就行)

软件:

1、centos : CentOS 是一个基于Red Hat Linux 提供的可自由使用源代码的企业级Linux发行版本。

2、ZFS : 最初是由Sun公司为Solaris 10操作系统开发的文件系统。作为OpenSolaris开源计划的一部分,ZFS于2005年11月发布,被Sun称为是终极文件系统,经历了 10 年的活跃开发。而最新的开发将全面开放,并重新命名为 OpenZFS

3、GlusterFS:一款开源的分布式存储软件。

4、samba、nfs等一系列共享软件。

原理:

裸机系统centos,单机的存储靠zfs的raidz保证性能和可靠性,单点故障靠glusterfs这款分布式存储软件来保证整体存储的可用性。glusterfs目录可以靠samba服务器分享出去。


安装以及配置过程(vmware虚拟机上进行)

安装:

1、安装Centos:下载iso,地址:https://www.centos.org/download/,用utraiso写入u盘,引导U盘启动,点击下一步直到安装完成。

2、安装zfs:

1)yum localinstall --nogpgcheck
 http://mirror.centos.org/centos/7/extras/x86_64/Packages/epel-release-7-9.noarch.rpm

2)yum localinstall--nogpgcheck http://download.zfsonlinux.org/epel/zfs-release.el7.noarch.rpm

3)yum install kernel-devel zfs

4)yum install "kernel-devel-uname-r == $(uname -r)"

5)  dkms remove -m zfs -v 0.6.0.90 --all
dkms remove -m spl -v 0.6.0.90 --all
dkms add -m spl -v 0.6.0.90
dkms add -m zfs -v 0.6.0.90
dkms install -m spl -v 0.6.0.90
dkms install -m zfs -v 0.6.0.90

(这里请将0.6.0.90换成自己的zfs版本)

6)modprobe zfs

3、安装glusterfs:

1)yum install centos-release-gluster

2)yum install -y glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma

4、安装samba(其他的nfs等不一一列举):

1)yum install samba samba-client


配置:

1、配置zfs:小镇这里在虚拟机里面虚拟除了两个非os的额外硬盘,现实中请插入硬盘,尽量保证是企业级硬盘且硬盘大小一致。先列出硬盘:fdisk -l

Disk /dev/sda: 42.9 GB, 42949672960 bytes, 83886080 sectors
/dev/sda1   *        2048      616447      307200   83  Linux
/dev/sda2          616448     4812799     2098176   82  Linux swap / Solaris
/dev/sda3         4812800    83886079    39536640   83  Linux
Disk /dev/sdc: 21.5 GB, 21474836480 bytes, 41943040 sectors
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
小镇这里额外的两个硬盘是sdb和sdc。然后小镇使用镜像模式建立zpool池(4盘推荐raidz,更高推荐raidz2。raidz损失一个盘的容量用校验值来保证冗余,mirror依靠两两之间镜像),然后使用zpool status查看pool的状态,pool状态正常后挂载到自定义目录。

zpool create -f diskstation mirror sdb sdc
zpool status
zfs set mountpoint=/mnt/diskstation diskstation

2、配置glusterfs:

第一步关闭防火墙。

systemctl stop firewalld.service
systemctl disable firewalld.service
然后启用gluster服务:

service glusterd start

现在可以开始将其他存储节点加入gluster集群了:小镇这里两个节点,一个192.168.1.130,一个1.131。添加好后用gluster peer status查看状态。

gluster peer probe 192.168.1.130
gluster peer probe 192.168.1.131
gluster peer status
创建gluster volume,gluster总共有6中volume模式,具体请看http://blog.163.com/szy8706@yeah/blog/static/62713185201351510303223/

小镇这里使用复制卷:

gluster volume create zty-volume replica 2 transport tcp 192.168.1.130:/mnt/diskstation 192.168.1.131:/mnt/diskstation 

最后将gluster存储挂载到相应的目录

mount -t glusterfs 192.168.1.130:zty-volume /opt/zty
这时候用df -h查看挂 载情况
Filesystem               Size  Used Avail Use% Mounted on
/dev/sda3                 38G  2.1G   36G   6% /
devtmpfs                 3.9G     0  3.9G   0% /dev
tmpfs                    3.9G     0  3.9G   0% /dev/shm
tmpfs                    3.9G  8.7M  3.9G   1% /run
tmpfs                    3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda1                297M  114M  184M  39% /boot
tmpfs                    781M     0  781M   0% /run/user/0
diskstation               20G  4.0M   20G   1% /mnt/diskstation
192.168.1.130:zt-volume   39G   13M   39G   1% /opt/zty
3、配置samba

假设给我家里人用做共享,总共4种用户角色,mom,dad,myown,guestz。其中的权限分配为,dad可以访问/opt/zty/dad,mom可以访问/opt/zty/mom,我可以访问所有目录,guestz只能访问/opt/zty/guestz。

创建相应用户和用户组:

useradd mom
useradd dad
useradd guestz
useradd zhentianyu

groupadd god

usermod -g god zhentianyu


/etc/samba/smb.conf的配置如下:我的角色是zhentianyu,属于god用户组。

[global]
        workgroup = SAMBA
        security = user

        passdb backend = tdbsam

        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw


[printers]
        comment = All Printers
        path = /var/tmp
        printable = Yes
        create mask = 0600
        browseable = No

[print$]
        comment = Printer Drivers
        path = /var/lib/samba/drivers
        write list = root
        create mask = 0664
        directory mask = 0775

[Mom]  
  comment = AA  
  path = /opt/zty/mom
  public = no  
  valid users = @god,mom  
  write list = @god,mom
  printable = no  
  
[Dad]  
  comment = AA  
  path = /opt/zty/dad
  public = no  
  valid users = @god,dad  
  write list = @god,dad
  printable = no  
  
[Guest]  
  comment = AA  
  path = /opt/zty/guestz
  public = no  
  valid users = @god,guestz
  write list = @god,guestz
  printable = no  

[Myown]
  comment = AA  
  path = /opt/zty/myown
  public = no  
  valid users = @god,zhentianyu
  write list = @god,zhentianyu
  printable = no  

最后检验成果!在windows中访问\\192.168.1.130

【Zanuck 镇】个人及企业数据可扩展存储方案(开源:glusterfs+zfs+centos)_第1张图片

我是用的mom的账号登录的,尝试访问Dad试下:

【Zanuck 镇】个人及企业数据可扩展存储方案(开源:glusterfs+zfs+centos)_第2张图片

提示拒绝访问并且要求重新输入账号。


这时我关闭192.168.1.131这台服务器,传输文件并没有中断,速度都没有变化!

然后再131这台服务器中删除一个硬盘,传输文件也没有中断,速度也没有变化!可靠性很高!


ok!一切结束了。企业一样,只不过用更加正规的一系列硬件。(推荐45drives的机箱,10t的企业级硬盘,hba卡尽量用高质量的)交换机请采用万兆交换机,服务器与交换机之间做链路聚合提高传输速度。

你可能感兴趣的:(【Zanuck 镇】个人及企业数据可扩展存储方案(开源:glusterfs+zfs+centos))