GFS是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,并提供容错功能。它可以给大量的用户提供总体性能较高的服务。开源的分布式文件系统;由存储服务器、客户端以及 NFS/Samba 存储网关组成;
扩展性和高性能; 高可用性; 全局统一命名空间; 弹性卷管理; 基于标准协议
模块化,堆栈式的结构 通过对模块的组合,实现复杂的功能
通过 HASH 算法得到一个32位的整数; 划分为 N 个连接的子空间,每个空间对应一个 Brick;
保证数据平均分布在每一个 Brick 中; 解决了对元数据服务器的依赖,进而解决了单点故障以及访问瓶颈。
没有对文件进行分块处理; 通过扩展文件属性保存 HASH值; 支持的底层文件系统有 ext3 、ext4 、ZFS 、XFS等
文件分布在不同的服务器,不具备冗余性; 更容易和廉价地扩展卷的大小; 单点故障会造成数据丢失; 依赖底层的数据保护。
根据偏移量将文件分为 N 块(N个条带节点),轮询的存储在每个 Brick Server 节点; 存储大文件时,性能尤为突出; 不具备冗余性,类似 raid0
数据被分割成更小块分布到块服务器群中的不同条带区; 分布减少了负载且更小的文件加速了存取的速度; 没有数据冗余
同一个文件保存一份或多分副本; 复制模式因为要保存副本,所以磁盘利用率较低; 多个节点上的存储空间不一致,那么将安装木桶效应取最低节点的容量作为该卷的总容量
卷中所有的服务器均保存一个完整的副本; 卷的副本数量可由客户创建的时候决定; 至少由两个块服务器或更多服务器; 具备容灾性。
兼顾分布式和条带卷的功能; 主要用于大文件访问处理; 至少最少需要 4 台服务器。
兼顾分布式卷和复制卷的功能; 用于需要冗余的情况下
node1 192.168.13.128 node2 192.168.13.129 node3 192.168.13.130 node4 192.168.13.131 kvm 192.168.13.133
[root@localhost ~]# hostnamectl set-hostname node1 [root@localhost ~]# su [root@localhost ~]# hostnamectl set-hostname kvm [root@node1 ~]# vim /etc/hosts ##修改本地解析文件 192.168.13.128 node1 192.168.13.129 node2 192.168.13.130 node3 192.168.13.131 node4 192.168.13.133 kvm ##所有服务器上关闭防火墙 [root@node1 ~]# systemctl stop firewalld.service ##关闭防火墙 [root@node1 ~]# setenforce 0 ##分别复制配置文件到所有服务器上 [root@node1 ~]# scp /etc/hosts root@192.168.13.129:/etc/hosts [root@node1 ~]# scp /etc/hosts root@192.168.13.130:/etc/hosts [root@node1 ~]# scp /etc/hosts root@192.168.13.131:/etc/hosts [root@node1 ~]# scp /etc/hosts root@192.168.13.133:/etc/hosts ##在所有node节点服务器上挂载,修改yum配置文件 [root@node1 ~]# mkdir /gfs [root@node1 ~]# mount.cifs //192.168.100.3/LNMP-C7 /gfs/ ##挂载 [root@node1 ~]# cd /etc/yum.repo.d/ [root@node1 yum.repos.d]# mkdir bak ##创建备份目录 [root@node1 yum.repos.d]# mv CentOS-* bak/ [root@node1 yum.repos.d]# vim abc.repo ##所有node节点都需要配置yum源 [abc] name=abc baseurl=file:///gfs/gfsrepo ##挂载目录下的gfsrepo路径 gpgcheck=0 enabled=1 [root@node1 yum.repos.d]# yum clean all && yum makecache ##建立元数据缓存 [root@node1 yum.repos.d]# yum install -y glusterfs glusterfs-server gluster-fuse glusterfs-rdma ##安装必要的软件 [root@node1 yum.repos.d]# systemctl start glusterd ##开启gluster服务 [root@node1 yum.repos.d]# systemctl enable glusterd ##开机自启动 [root@node1 yum.repos.d]# ntpdate ntp1.aliyun.com ##同步时间
[root@node1 yum.repos.d]# cd /opt/ [root@node1 opt]# vim disk.sh //挂载磁盘脚本,一键操作 #! /bin/bash echo "the disks exist list:" fdisk -l |grep '磁盘 /dev/sd[a-z]' echo "==================================================" PS3="chose which disk you want to create:" select VAR in `ls /dev/sd*|grep -o 'sd[b-z]'|uniq` quit do case $VAR in sda) fdisk -l /dev/sda break ;; sd[b-z]) #create partitions echo "n p w" | fdisk /dev/$VAR #make filesystem mkfs.xfs -i size=512 /dev/${VAR}"1" &> /dev/null #mount the system mkdir -p /data/${VAR}"1" &> /dev/null echo -e "/dev/${VAR}"1" /data/${VAR}"1" xfs defaults 0 0\n" >> /etc/fstab mount -a &> /dev/null break ;; quit) break;; *) echo "wrong disk,please check again";; esac done [root@node1 opt]# chmod +x fdisk.sh ##添加执行权限 [root@node1 opt]# ./fdisk.sh ##执行脚本 [root@node1 opt]# df -hT ##查看挂载信息
##添加存储信任池,只要在一台主机上添加其他三台节点即可 [root@node1 opt]# gluster peer probe node2 [root@node1 opt]# gluster peer probe node3 [root@node1 opt]# gluster peer probe node4 [root@node1 opt]# gluster volume create models replica 2 node1:/data/sdb1 node2:/data/sdb1 node3:/data/sdb1 node4:/data/sdb1 force ##创建分布式复制卷 gluster volume create dis-vol node1:/data/sdb1 node2:/data/sdb1 force //创建分布式卷 gluster volume create stripe-vol stripe 2 node1:/data/sdc1 node2:/data/sdc1 force //创建条带卷 gluster volume create rep-vol replica 2 node3:/data/sdb1 node4:/data/sdb1 force //创建复制卷 gluster volume create dis-stripe stripe 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 force //创建分布式条带卷 [root@node1 opt]# gluster volume start models ##启动分布式复制卷
[root@kvm ~]# mkdir /abc [root@kvm ~]# mount.cifs //192.168.100.3/iOS /abc/ [root@kvm ~]# cp /abc/CentOS-7-x86_64-DVD-1708.iso /opt/ & ##将centos7镜像复制到/opt/进行后台运行 [root@kvm ~]# cd /etc/yum.repo.d/ [root@kvm yum.repos.d]# mkdir bak ##创建备份目录 [root@kvm yum.repos.d]# mv CentOS-* bak/ [root@kvm yum.repos.d]# scp -r root@192.168.13.128:/gfs/gfsrepo / ##复制gfs源到根目录下 [root@kvm yum.repos.d]# vim abc.repo ##所有node节点都需要配置yum源 [abc] name=abc baseurl=file:///gfsrepo ##源文件的路径 gpgcheck=0 enabled=1 [root@kvm yum.repos.d]# umount /abc/ ##centos镜像复制完成后解挂载 [root@kvm yum.repos.d]# yum install -y glusterfs glusterfs-fuse ##安装必要的软件 [root@kvm yum.repos.d]# mv bak/* ./ ##释放原有的yum源 [root@kvm yum.repos.d]# rm -rf bak/ [root@kvm yum.repos.d]# yum list ##yum列表更新 [root@kvm yum.repos.d]# mkdir /kvmdata ##创建挂载点 [root@kvm yum.repos.d]# mount.glusterfs node1:models /kvmdata ##将分布式复制卷挂载到挂载点中 [root@kvm yum.repos.d]# df -hT ##可以看出原来一共是160G现在是80G
[root@kvm ~]# yum groupinstall "GNOME Desktop" -y ##桌面环境 yum install qemu-kvm -y ##kvm内核 yum install qemu-kvm-tools -y ##调试工具 yum install virt-install -y ##命令行工具 yum install qemu-img -y ##组件,创建磁盘,启动虚拟机 yum install bridge-utils -y ##网络支持工具 yum install libvirt -y ##虚拟机管理工具 yum install virt-manager -y ##图形化管理虚拟机 [root@kvm ~]# egrep '(vmx|svm)' /proc/cpuinfo ##看cpu是否支持 [root@kvm ~]# lsmod | grep kvm ##检查kvm是否安装 [root@kvm ~]# systemctl start libvirtd ##开启服务 [root@kvm ~]# systemctl status libvirtd [root@kvm ~]# systemctl enable libvirtd ##开启自启 [root@kvm ~]# cd /etc/sysconfig/network-scripts/ [root@kvm network-scripts]# vim ifcfg-ens33 ##末行添加 BRIDGE=br0 [root@kvm network-scripts]# cp -p ifcfg-ens33 ifcfg-br0 ##复制配置文件为桥接 [root@kvm network-scripts]# vim ifcfg-br0 TYPE=Bridge ##桥接模式 BOOTPROTO=static ##静态 NAME=br0 ##名字为br0 DEVICE=br0 IPADDR=192.168.13.133 ##ip地址 NETMASKE=255.255.255.0 ##子网掩码 GATEWAY=192.168.13.1 ##网关 [root@kvm network-scripts]# service network restart ##重启网卡 [root@kvm network-scripts]# cd /kvmdata/ ##切换到GFS挂载点 [root@kvm kvmdata]# mkdir kgc_disk kgc_iso ##创建文件系统目录及镜像目录 [root@kvm kvmdata]# cp /opt/CentOS-7-x86_64-DVD-1708.iso kgc_iso/ & ##将镜像文件复制到镜像目录中
[root@kvm ~]# virt-manager
[root@node1 ~]# cd /data/sdb1/ ##分布在各个node节点服务器上 [root@node1 sdb1]# ls kgc_disk kgc_iso