GFS是一個可擴展的分佈式文件系統,用於大型的、分佈式的、對大量數據進行訪問的應用。它運行於廉價的普通硬件上,並提供容錯功能。它能夠給大量的用戶提供整體性能較高的服務。
開源的分佈式文件系統;
由存儲服務器、客戶端以及 NFS/Samba 存儲網關組成;node
擴展性和高性能; 高可用性; 全局統一命名空間; 彈性卷管理; 基於標準協議
模塊化,堆棧式的結構 經過對模塊的組合,實現複雜的功能
經過 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