分布式文件系统----GFS分析与分布式文件系统群集部署

GFS分析与分布式文件系统群集部署

一: GFS分析

1.1:GlusterFS简介

  • Gluster File System,开源的分布式文件系统,是Scale存储的核心,能够处理千数量级的客户端.在传统的解决 方案中Glusterfs能够灵活的结合物理的,虚拟的和云资源去体现高可用和企业级的性能存储
  • 由存储服务器(Brick Server)、客户端以及NFS/Samba 存储网关组成
  • 无元数据服务器
  • GlusterFS特点
    • 扩展性和高性能
    • 高可用性
    • 全局统一命名空间
    • 弹性卷管理
    • 基于标准协议
  • 常用术语
    • Brick: GFS中的存储单元,通过是一个受信存储池中的服务器的一个导出目录。可以通过主机名和目录名来标识,如’SERVER:EXPORT’
    • Volume:卷
    • FUSE:内核文件系统,Filesystem Userspace是一个可加载的内核模块,其支持非特权用户创建自己的文件系统而不需要修改内核代码。通过在用户空间运行文件系统的代码通过FUSE代码与内核进行桥接。
    • VFS:虚拟文件系统
    • Glusterd:Gluster management daemon,要在trusted storage pool中所有的服务器上运行。
  • GFS的结构
    • 模块化堆栈式架构
    • 模块化、堆栈式的架构
    • 通过对模块的组合,实现复杂的功能

1.2:GlusterFS工作流程

  • 1、客户端或应用程序通过GlusterFS的挂载点访问数据

  • 2、linux系统内核通过VFS API收到请求并处理

  • 3、VFS将数据递交给FUSE内核文件系统, fuse文件系统则是将数据通过/dev/fuse设备文件递交给了GlusterFS client端

  • 4、GlusterFS client 收到数据后,client根据配置文件的配置对数据进行处理

  • 5、通过网络将数据传递至远端的GlusterFS Server,并且将数据写入到服务器存储设备上

  • mark

1.3:GlusterFS工作原理

  • 弹性HASH算法

    • 通过HASH算法得到一个32位的整数
    • 划分为N个连续的子空间,每个空间对应一个Brick
    • 弹性HASH算法的优点
    • 保证数据平均分布在每一个Brick中
    • 解决了对元数据服务器的依赖,进而解决了单点故障以及访问瓶颈
  • mark

  • N个Brick(storage)节点的GlusterFS卷,平均分配232次方的区间的范围空间

    访问文件时,通过计算该文件的HASH值,从而对应到Brick(storage)存储空间

    通过HASH分配到各个节点块,每个节点块都有自己的地址

1.4:GlusterFS的卷类型

  • 分布式卷
    条带卷
    复制卷
    分布式条带卷
    分布式复制卷
    条带复制卷
    分布式条带复制卷

分布式卷

  • 没有对文件进行分块处理

  • 通过扩展文件属性保存HASH值

  • 支持的底层文件系统有ext3、ext4、ZFS、XFS等

  • 特点

    • 文件分布在不同的服务器,不具备冗余性
    • 更容易和廉价地扩展卷的大小
    • 单点故障会造成数据丢失
    • 依赖底层的数据保护
  • 创建命令

    gluster volume create dis-volume server1:/dir1 server2:/dir2

  • mark

条带卷

  • 根据偏移量将文件分成N块(N个条带节点),轮询的存储在每个Brick Server节点

  • 存储大文件时,性能尤为突出

  • 不具备冗余性,类似Raid0

  • 特点

    • 数据被分割成更小块分布到块服务器群中的不同条带区
    • 分布减少了负载且更小的文件加速了存取的速度
    • 没有数据冗余
  • 创建命令

    gluster volume create stripe-volume stripe 2 transport tcp server1:/dir1 server2:/dir2

  • mark

复制卷

  • 同一文件保存一份或多分副本

  • 复制模式因为要保存副本,所以磁盘利用率较低

  • 多个节点上的存储空间不一致,那么将按照木桶效应取最低节点的容量作为该卷的总容量

  • 特点

    • 卷中所有的服务器均保存一个完整的副本
    • 卷的副本数量可由客户创建的时候决定
    • 至少由两个块服务器或更多服务器
    • 具备冗余性
  • 创建命令

    gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2

    rep-volume 卷名 replica 2 分两块

  • mark

分布式条带卷

  • 兼顾分布式卷和条带卷的功能

  • 主要用于大文件访问处理

  • 至少最少需要 4 台服务器

  • 创建命令

    gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2

  • mark

分布式复制卷

  • 兼顾分布式卷和复制卷的功能

  • 用于需要冗余的情况下

  • 创建命令

    gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2

  • mark

二: GFS群集部署

2.1: 环境部署

  • 开五台虚拟机,一台cilent,四台nodes,nodes增加四块磁盘,每块5G
角色IP地址磁盘
node1192.168.100.14020GX4
node2192.168.100.15020GX4
node3192.168.100.16020GX4
node4192.168.100.17020GX4
client192.168.100.18020GX4
  • 将要使用的卷名称和信息
卷名称卷类型空间大小/GBBrick
dis分布式卷40node1(sdb1);node2(sdb1)
stripe-volume条带卷40node1(sdc1);node2(sdc1)
rep-volume复制卷20node3(sdb1);node4(sdb1)
dis-stripe分布式条带卷80node1(sdd1);node2(sdd1);node3(sdd1);node4(sdd1)
dis-rep分布式复制卷40node1(sde1);node2(sde1);node3(sde1);node4(sde1)
  • 修改主机名,添加磁盘

    主机名node1~4 ; 四个节点每个添加四块20G的磁盘

  • 创建、格式化、挂载磁盘shell脚本,一键操作

    vim disk.sh
     
    #! /bin/bash
    echo "the disks exist list:"
    ##grep出系统所带磁盘
    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)
     ##本地磁盘就退出case语句
            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]# df -Th
    文件系统       类型      容量  已用  可用 已用% 挂载点
    /dev/sda2      xfs       245G  4.9G  240G    2% /
    devtmpfs       devtmpfs  1.9G     0  1.9G    0% /dev
    tmpfs          tmpfs     1.9G     0  1.9G    0% /dev/shm
    tmpfs          tmpfs     1.9G   13M  1.9G    1% /run
    tmpfs          tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
    /dev/sda5      xfs        33G   37M   33G    1% /home
    /dev/sda1      xfs        20G  174M   20G    1% /boot
    tmpfs          tmpfs     378M  8.0K  378M    1% /run/user/42
    tmpfs          tmpfs     378M     0  378M    0% /run/user/0
    /dev/sdb1      xfs        20G   33M   20G    1% /data/sdb1
    /dev/sdc1      xfs        20G   33M   20G    1% /data/sdc1
    /dev/sdd1      xfs        20G   33M   20G    1% /data/sdd1
    /dev/sde1      xfs        20G   33M   20G    1% /data/sde1
    "四个节点都要检查sdb sdc sdd sde 四个磁盘挂载上"
    

2.2: node上的操作,建立关系

  • 1.在四台node上映射主机名

    vim /etc/hosts
    192.168.100.140 node1
    192.168.100.150 node2
    192.168.100.160 node3
    192.168.100.170 node4
    [root@node1 opt]# scp /etc/hosts root@192.168.100.150:/etc/hosts	"分发给其他三个节点"
    [root@node1 opt]# ping node2			"依次ping其他节点都能通"
    PING node2 (192.168.100.150) 56(84) bytes of data.
    64 bytes from node2 (192.168.100.150): icmp_seq=1 ttl=64 time=1.23 ms
    64 bytes from node2 (192.168.100.150): icmp_seq=2 ttl=64 time=0.336 ms
    
  • 2.在四台Node上,编写GFS的源,如下,以node1为例

    [root@node1 opt]# mount.cifs //192.168.31.224/redhat7 /opt
    [root@node1 gfs]# cd /opt
    [root@node1 opt]# ls
    gfs  gfsrepo  gfsrepo.rar
    [root@node1 opt]# cd gfs
    [root@node1 gfs]# ll
    总用量 0
    drwxr-xr-x. 2 root root 0 9  13 17:20 gfsrepo
    [root@node1 opt]# cd /etc/yum.repos.d/
    [root@node1 yum.repos.d]# mkdir bak    ##将原来的源移动到新建的目录中
    [root@node1 yum.repos.d]# mv Cent* bak/
    [root@node1 yum.repos.d]# ls
    bak
    [root@node1 yum.repos.d]# vim GLFS.repo
     
    [GLFS]
    name=glfs
    baseurl=file:///opt/gfs/gfsrepo
    gpgcheck=0
    enabled=1
     
    [root@node1 yum.repos.d]# yum clean all
    [root@node1 yum.repos.d]# yum list
    
  • 3.在四台node上,安装GFS相关软件包

    yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma    ###安装
    //报错解决,把系统自带的包先删掉
    yum remove glusterfs -y
    yum remove glusterfs-libs.x86_64 -y
    再安装
    systemctl start glusterd.service
    systemctl enable glusterd.service
    systemctl status glusterd.service
    
  • 4.设置时间同步,四台node都需要设置,以node1为例,关闭防火墙和SElinux功能

    systemctl stop firewalld
    setenforce 0 
    ntpdate ntp1.aliyun.com
     
     
    systemctl stop firewalld
    setenforce 0
    
    [root@node1 ~]# glusterfs --version
    glusterfs 3.10.2
    
  • 5.添加存储信任池,只要在一台主机上添加其他三台节点即可,本实验在node1上操作

    [root@node1 ~]# gluster peer probe node2
    peer probe: success. 
    [root@node1 ~]# gluster peer probe node3
    peer probe: success. 
    [root@node1 ~]# gluster peer probe node4
    peer probe: success. 
    [root@node1 gfs]# gluster peer status
    Number of Peers: 3
    
    Hostname: node2
    Uuid: a25be762-e42c-4b9c-9089-8c8dc57a875c
    State: Peer in Cluster (Connected)
    
    Hostname: node3
    Uuid: f93aba62-d263-4112-85c8-0d49ddcc2445
    State: Peer in Cluster (Connected)
    
    Hostname: node4
    Uuid: a4e6f5fa-ea37-4e28-aae4-f53753c387e8
    State: Peer in Cluster (Connected) 
    
    
  • 6.GFS卷的创建,只需要在node1中创建管理即可

    • 创建分布式卷
    #利用node1和node2上的两块磁盘创建,dis-vol为磁盘名,force表示强制
    [root@node1 ~]# gluster volume create dis-vol node1:/data/sdb1 node2:/data/sdb1 force
    volume create: dis-vol: success: please start the volume to access data
     
    #启动dis-vol卷
    [root@node1 ~]# gluster volume start dis-vol
    volume start: dis-vol: success
     
    #查看该卷的状态
    [root@node1 ~]# gluster volume info dis-vol
    Volume Name: dis-vol
    Type: Distribute
    Volume ID: b17eca56-a083-48d8-84d6-b1c530bd3d74
    Status: Started
    Snapshot Count: 0
    Number of Bricks: 2
    Transport-type: tcp
    Bricks:
    Brick1: node1:/data/sdb1
    Brick2: node2:/data/sdb1
    Options Reconfigured:
    transport.address-family: inet
    nfs.disable: on
    
    • 创建条带卷
    [root@node1 ~]# gluster volume create stripe-vol stripe 2 node1:/data/sdc1  node2:/data/sdc1 force
    volume create: stripe-vol: success: please start the volume to access data
    "创建"
    [root@node1 ~]# gluster volume start stripe-vol "启动"
    volume start: stripe-vol: success
    [root@node1 ~]# gluster volume info stripe-vol "查看信息"
     
     
    Volume Name: stripe-vol
    Type: Stripe
    Volume ID: 04e52229-541c-478e-a216-fe9b44f13cff
    Status: Started
    Snapshot Count: 0
    Number of Bricks: 1 x 2 = 2
    Transport-type: tcp
    Bricks:
    Brick1: node1:/data/sdc1
    Brick2: node2:/data/sdc1
    Options Reconfigured:
    transport.address-family: inet
    nfs.disable: on
    
    [root@node1 ~]# 
    
    • 创建复制卷
    [root@node1 ~]# gluster volume create rep-vol replica 2 node3:/data/sdb1 node4:/data/sdb1 force
    volume create: rep-vol: success: please start the volume to access data
    [root@node1 ~]# 
    [root@node1 ~]# gluster volume start rep-vol
    volume start: rep-vol: success
    [root@node1 ~]# gluster volume info rep-vol
     
    Volume Name: rep-vol
    Type: Replicate
    Volume ID: 373cd126-3222-4a98-9142-3c35d3451351
    Status: Started
    Snapshot Count: 0
    Number of Bricks: 1 x 2 = 2
    Transport-type: tcp
    Bricks:
    Brick1: node3:/data/sdb1
    Brick2: node4:/data/sdb1
    Options Reconfigured:
    transport.address-family: inet
    nfs.disable: on
    
    • 创建分布式条带卷(至少4个节点)
    [root@node1 ~]# gluster volume create dis-stripe stripe 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 force
    volume create: dis-stripe: success: please start the volume to access data
    [root@node1 ~]# 
    [root@node1 ~]# gluster volume start dis-stripe
    volume start: dis-stripe: success
    [root@node1 ~]# gluster volume info dis-stripe
     
    Volume Name: dis-stripe
    Type: Distributed-Stripe
    Volume ID: 3715b2f7-cf52-4a85-97db-5354ed77784b
    Status: Started
    Snapshot Count: 0
    Number of Bricks: 2 x 2 = 4
    Transport-type: tcp
    Bricks:
    Brick1: node1:/data/sdd1
    Brick2: node2:/data/sdd1
    Brick3: node3:/data/sdd1
    Brick4: node4:/data/sdd1
    Options Reconfigured:
    transport.address-family: inet
    nfs.disable: on
    
    • 创建分布式复制卷(至少4个节点)
    [root@node1 ~]# gluster volume create dis-rep replica 2 node1:/data/sde1 node2:/data/sde1 node3:/data/sde1 node4:/data/sde1 force
    volume create: dis-rep: success: please start the volume to access data
    [root@node1 ~]# 
    [root@node1 ~]# gluster volume start dis-rep
    volume start: dis-rep: success
    [root@node1 ~]# gluster volume info dis-rep
     
    Volume Name: dis-rep
    Type: Distributed-Replicate
    Volume ID: bc4058a0-35a2-4542-9f16-60aa66f78ba2
    Status: Started
    Snapshot Count: 0
    Number of Bricks: 2 x 2 = 4
    Transport-type: tcp
    Bricks:
    Brick1: node1:/data/sde1
    Brick2: node2:/data/sde1
    Brick3: node3:/data/sde1
    Brick4: node4:/data/sde1
    Options Reconfigured:
    transport.address-family: inet
    nfs.disable: on
    

2.3: 配置客户端

  • 1.配置GFS源,安装相关软件包

    [root@client yum.repos.d]# mount.cifs //192.168.31.224/redhat7 /opt
    [root@client yum.repos.d]# yum remove glusterfs -y
    [root@client yum.repos.d]# yum remove glusterfs-libs.x86_64 -y
    
    [root@client opt]# vim /etc/yum.repos.d/GLFS.repo
    [GLFS]
    name=glfs
    baseurl=file:///opt/gfs/gfsrepo
    gpgcheck=0
    enabled=1
    [root@client yum.repos.d]# yum clean all
    [root@client yum.repos.d]# yum list
    [root@client yum.repos.d]# yum -y install glusterfs glusterfs-fuse
    
  • 2.做地址映射

    [root@client ~]# vim /etc/hosts
     
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    192.168.100.140 node1
    192.168.100.150 node2
    192.168.100.160 node3
    192.168.100.170 node4
    
  • 3.创建临时挂载点,关闭安全性功能

    "挂载分布式卷"
    [root@client ~]# mkdir -p /text/dis
    [root@client ~]# mount.glusterfs node1:dis-vol /text/dis
    [root@client ~]# df -Th
    //192.168.31.224/redhat7 cifs            227G   42G  185G   19% /opt
    node1:dis-vol            fuse.glusterfs   40G   65M   40G    1% /text/dis
    
    "挂载条带卷"
    [root@client ~]# mkdir -p /text/strip
    [root@client ~]# mount.glusterfs node1:stripe-vol /text/strip
    [root@client /]# df -Th
    //192.168.31.224/redhat7 cifs            227G   42G  185G   19% /opt
    node1:dis-vol            fuse.glusterfs   40G  265M   40G    1% /text/dis
    node1:stripe-vol         fuse.glusterfs   40G   65M   40G    1% /text/strip
    
    "挂载复制卷"
    [root@client ~]# mkdir /text/rep
    [root@client ~]# mount.glusterfs node3:rep-vol /text/rep/
    
    "挂载分布式条带卷"
    [root@client ~]# mkdir /text/dis-str
    [root@client ~]# mount.glusterfs node2:dis-stripe /text/dis-str/
    
    "挂载分布式复制卷"
    [root@client ~]# mkdir /text/dis-rep
    [root@client ~]# mount.glusterfs node4:dis-rep /text/dis-rep/
    [root@client ~]# systemctl stop firewalld
    [root@client ~]# setenforce 0
    [root@client ~]# 
    
    "查看挂载信息"
    [root@client /]# df -Th
    文件系统                 类型            容量  已用  可用 已用% 挂载点
    /dev/sda2                xfs             190G  4.2G  186G    3% /
    devtmpfs                 devtmpfs        1.9G     0  1.9G    0% /dev
    tmpfs                    tmpfs           1.9G     0  1.9G    0% /dev/shm
    tmpfs                    tmpfs           1.9G   13M  1.9G    1% /run
    tmpfs                    tmpfs           1.9G     0  1.9G    0% /sys/fs/cgroup
    /dev/sda3                xfs              50G   33M   50G    1% /home
    /dev/sda1                xfs              50G  174M   50G    1% /boot
    tmpfs                    tmpfs           378M   12K  378M    1% /run/user/42
    tmpfs                    tmpfs           378M     0  378M    0% /run/user/0
    //192.168.31.224/redhat7 cifs            227G   42G  185G   19% /opt
    node1:dis-vol            fuse.glusterfs   40G  265M   40G    1% /text/dis
    node1:stripe-vol         fuse.glusterfs   40G  265M   40G    1% /text/strip
    node3:rep-vol            fuse.glusterfs   20G  233M   20G    2% /text/rep
    node2:dis-stripe         fuse.glusterfs   80G  330M   80G    1% /text/dis-str
    node4:dis-rep            fuse.glusterfs   40G  265M   40G    1% /text/dis-rep
    
    [root@client ~]#
    
  • 3.测试GFS卷的功能

    "创建5个40M的文件"
    dd if=/dev/zero of=/demo1.log bs=1M count=40
    dd if=/dev/zero of=/demo2.log bs=1M count=40
    dd if=/dev/zero of=/demo3.log bs=1M count=40
    dd if=/dev/zero of=/demo4.log bs=1M count=40
    dd if=/dev/zero of=/demo5.log bs=1M count=40
    
    [root@client ~]# dd if=/dev/zero of=/demo1.log bs=1M count=40
    记录了40+0 的读入
    记录了40+0 的写出
    41943040字节(42 MB)已复制,0.119366 秒,351 MB/
    [root@client ~]# dd if=/dev/zero of=/demo2.log bs=1M count=40
    记录了40+0 的读入
    记录了40+0 的写出
    41943040字节(42 MB)已复制,0.145625 秒,288 MB/
    [root@client ~]# dd if=/dev/zero of=/demo3.log bs=1M count=40
    记录了40+0 的读入
    记录了40+0 的写出
    41943040字节(42 MB)已复制,0.103901 秒,404 MB/
    [root@client ~]# dd if=/dev/zero of=/demo4.log bs=1M count=40
    记录了40+0 的读入
    记录了40+0 的写出
    41943040字节(42 MB)已复制,0.123886 秒,339 MB/
    [root@client ~]# dd if=/dev/zero of=/demo5.log bs=1M count=40
    记录了40+0 的读入
    记录了40+0 的写出
    41943040字节(42 MB)已复制,0.0815509 秒,514 MB/
    [root@client /]# ls
    bin        demo2.log  demo5.log  home   media  proc  sbin  text  var
    boot       demo3.log  dev        lib    mnt    root  srv   tmp
    demo1.log  demo4.log  etc        lib64  opt    run   sys   usr
    
    
    ----把创建的文件复制到不同卷上
    
    ####把测试文件放到分布式卷目录下,查看服务端存储分布
    
    [root@client ~]# cp /demo* /text/dis
    [root@client /]# ls /text/dis
    demo1.log  demo2.log  demo3.log  demo4.log  demo5.log
    "检查在node节点的存储分布"
    [root@node1 ~]# cd /data/sdb1
    [root@node1 sdb1]# ll -h
    总用量 160M
    -rw-r--r--. 2 root root 40M 9  13 23:48 demo1.log
    -rw-r--r--. 2 root root 40M 9  13 23:48 demo2.log
    -rw-r--r--. 2 root root 40M 9  13 23:48 demo3.log
    -rw-r--r--. 2 root root 40M 9  13 23:48 demo4.log
    [root@node2 opt]# cd /data/sdb1
    [root@node2 sdb1]# ll -h
    总用量 40M
    -rw-r--r--. 2 root root 40M 9  13 23:48 demo5.log
    "可以看出,分布式通过Hash算法把文件分布在不同节点存储,但是每个文件不被分成N块"
    
    ####把测试文件放到条带卷目录下,查看服务端存储分布
    
    [root@client ~]# cp /demo* /text/strip
    [root@node1 sdb1]# cd /data/sdc1
    [root@node1 sdc1]# ll -h
    总用量 100M
    -rw-r--r--. 2 root root 20M 9  14 00:02 demo1.log "每个40M的文件被分成两块进行两个节点分布式存储"
    -rw-r--r--. 2 root root 20M 9  14 00:02 demo2.log
    -rw-r--r--. 2 root root 20M 9  14 00:02 demo3.log
    -rw-r--r--. 2 root root 20M 9  14 00:02 demo4.log
    -rw-r--r--. 2 root root 20M 9  14 00:02 demo5.log
    [root@node2 sdb1]# cd /data/sdc1
    [root@node2 sdc1]# ll -h
    总用量 100M
    -rw-r--r--. 2 root root 20M 9  14 00:02 demo1.log
    -rw-r--r--. 2 root root 20M 9  14 00:02 demo2.log
    -rw-r--r--. 2 root root 20M 9  14 00:02 demo3.log
    -rw-r--r--. 2 root root 20M 9  14 00:02 demo4.log
    -rw-r--r--. 2 root root 20M 9  14 00:02 demo5.log
    
    ####把测试文件放到复制卷目录下,查看服务端存储分布
    
    [root@client ~]# cp /demo* /text/rep/
    [root@node4 yum.repos.d]# cd /data/sdb1
    [root@node4 sdb1]# ll -h
    总用量 200M
    -rw-r--r--. 2 root root 40M 9  14 00:09 demo1.log	"每个40M的文件在两个节点两份"
    -rw-r--r--. 2 root root 40M 9  14 00:09 demo2.log
    -rw-r--r--. 2 root root 40M 9  14 00:09 demo3.log
    -rw-r--r--. 2 root root 40M 9  14 00:09 demo4.log
    -rw-r--r--. 2 root root 40M 9  14 00:09 demo5.log
    [root@node3 yum.repos.d]# cd /data/sdb1
    [root@node3 sdb1]# ll -h
    总用量 200M
    -rw-r--r--. 2 root root 40M 9  14 00:09 demo1.log
    -rw-r--r--. 2 root root 40M 9  14 00:09 demo2.log
    -rw-r--r--. 2 root root 40M 9  14 00:09 demo3.log
    -rw-r--r--. 2 root root 40M 9  14 00:09 demo4.log
    -rw-r--r--. 2 root root 40M 9  14 00:09 demo5.log
    
    ####把测试文件放到分布式条带卷目录下,查看服务端存储分布
    
    [root@client ~]# cp /demo* /text/dis-str
    [root@node1 sdc1]# cd /data/sdd1
    [root@node1 sdd1]# ll -h
    总用量 80M
    -rw-r--r--. 2 root root 20M 9  14 00:15 demo1.log
    -rw-r--r--. 2 root root 20M 9  14 00:15 demo2.log
    -rw-r--r--. 2 root root 20M 9  14 00:15 demo3.log
    -rw-r--r--. 2 root root 20M 9  14 00:15 demo4.log
    [root@node2 sdc1]# cd /data/sdd1
    [root@node2 sdd1]# ll -h
    总用量 80M		"1234分布式到node1和node2;再对1234条带分割,每个文件分两半,进行存储"
    -rw-r--r--. 2 root root 20M 9  14 00:15 demo1.log
    -rw-r--r--. 2 root root 20M 9  14 00:15 demo2.log
    -rw-r--r--. 2 root root 20M 9  14 00:15 demo3.log
    -rw-r--r--. 2 root root 20M 9  14 00:15 demo4.log
    [root@node3 sdb1]# cd /data/sdd1
    [root@node3 sdd1]# ll -h
    总用量 20M		"5分布式到node3和node4;再对5进行分割存储"
    -rw-r--r--. 2 root root 20M 9  14 00:15 demo5.log
    [root@node4 sdb1]# cd /data/sdd1
    [root@node4 sdd1]# ll -h
    总用量 20M
    -rw-r--r--. 2 root root 20M 9  14 00:15 demo5.log
    
    
    ####把测试文件放到分布式复制卷目录下,查看服务端存储分布
    
    [root@client ~]# cp /demo* /text/dis-rep
    [root@node1 sdd1]# cd /data/sde1
    [root@node1 sde1]# 
    [root@node1 sde1]# ll -h
    总用量 160M		"1234分布式到node1和node2;再对1234复制卷,5被分配到nod3和node4,再5的内容再做个复制卷;"
    -rw-r--r--. 2 root root 40M 9  14 00:23 demo1.log
    -rw-r--r--. 2 root root 40M 9  14 00:23 demo2.log
    -rw-r--r--. 2 root root 40M 9  14 00:23 demo3.log
    -rw-r--r--. 2 root root 40M 9  14 00:23 demo4.log
    [root@node2 sdd1]# cd /data/sde1
    [root@node2 sde1]# ll -h
    总用量 160M				""
    -rw-r--r--. 2 root root 40M 9  14 00:23 demo1.log
    -rw-r--r--. 2 root root 40M 9  14 00:23 demo2.log
    -rw-r--r--. 2 root root 40M 9  14 00:23 demo3.log
    -rw-r--r--. 2 root root 40M 9  14 00:23 demo4.log
    [root@node3 sde1]# cd /data/sde1
    [root@node3 sde1]# ll -h
    总用量 40M
    -rw-r--r--. 2 root root 40M 9  14 00:23 demo5.log
    
    [root@node4 sde1]# cd /data/sde1
    [root@node4 sde1]# ll -h
    总用量 40M
    -rw-r--r--. 2 root root 40M 9  14 00:23 demo5.log
    

2.4: 模拟故障,node2宕机

  • [root@node2 /]# init 0
    [root@client /]# cd /text
    [root@client text]# ls
    dis  dis-rep  dis-str  rep  strip
    [root@client text]# ls dis
    demo1.log  demo2.log  demo3.log  demo4.log
    [root@client text]# ls dis-rep/	"分布式复制卷数据没有丢失"
    demo1.log  demo2.log  demo3.log  demo4.log  demo5.log
    [root@client text]# ls dis-str/
    demo5.log
    [root@client text]# ls rep
    demo1.log  demo2.log  demo3.log  demo4.log  demo5.log	"复制卷数据也没有丢失"
    [root@client text]# ls strip
    [root@client text]# 
    

2.5: 其他维护命令

  • 1、查看GlusterFS卷
    [root@node1 ~]# gluster volume list 
    2、查看所有卷的信息
    [root@node1 ~]# gluster volume info
    3.查看所有卷状态
    [root@node1 ~]# gluster volume status
    4. ####停止一个卷
    [root@node1 ~]# gluster volume stop dis-stripe 
    5. 删除一个卷
    [root@node1 ~]# gluster volume delete dis-stripe   
    6.白名单 仅允许
    [root@node1 ~]# gluster volume set dis-rep auth.allow 192.168.100.*     ##设置192.168.100.0网段的所有IP地址 都能访问dis-rep卷(分布式复制卷)
    volume set: success           
    7.黑名单 仅拒绝
    [root@node1 sde1]# gluster volume set dis-rep auth.reject 192.168.100.80
    volume set: success
    
    [root@node1 ~]# gluster volume 
    add-brick        heal             quota            start
    barrier          help             rebalance        statedump
    clear-locks      info             remove-brick     status
    create           list             replace-brick    stop
    delete           log              reset            sync
    geo-replication  profile          set              top
    "reset" 恢复默认
    
内容概要:该论文聚焦于6G通信中20-100GHz频段的电磁场(EMF)暴露评估问题,提出了一种基于自适应可重构架构神经网络(RAWA-NN)的预测框架。该框架通过集成权重分析模块和优化模块,能够自动优化网络超参数,显著减少训练时间。模型使用70%的前臂数据进行训练,其余数据用于测试,并用腹部和股四头肌数据验证模型泛化能力。结果显示,该模型在不同参数下的相对差异(RD)在前臂低于2.6%,其他身体部位低于9.5%,可有效预测皮肤表面的温升和吸收功率密度(APD)。此外,论文还提供了详细的代码实现,涵盖数据预处理、权重分析模块、自适应优化模块、RAWA-NN模型构建及训练评估等内容。 适合人群:从事电磁兼容性研究、6G通信技术研发以及对神经网络优化感兴趣的科研人员和工程师。 使用场景及目标:①研究6G通信中高频段电磁暴露对人体的影响;②开发更高效的电磁暴露评估工具;③优化神经网络架构以提高模型训练效率和预测精度。 其他说明:论文不仅提出了理论框架,还提供了完整的代码实现,方便读者复现实验结果。此外,论文还讨论了未来的研究方向,包括扩展到更高频段(如300GHz)的数据处理、引入强化学习优化超参数、以及实现多物理场耦合的智能电磁暴露评估系统。建议读者在实际应用中根据具体需求调整模型架构和参数,并结合真实数据进行验证。
内容概要:本文是北京金融科技产业联盟发布的《基于数据空间的金融数据可信流通研究报告》,探讨了金融数据可信流通的现状、挑战和发展前景。文章首先介绍了金融数据在数字化转型中的重要性及其面临的隐私保护和安全挑战。接着,文章详细阐述了数据空间的概念及其发展历程,尤其是可信数据空间(TDM)在我国的发展情况。文中还深入分析了金融数据可信流通的典型应用场景、关键技术和方案架构,如数据访问控制、数据使用控制、智能合约、数据脱敏等。最后,文章展示了多个典型场景应用案例,如中信银行总分行数据流通管控、工银金租数据流通、银联安全生物特征支付等,并总结了当前可信数据空间建设中存在的法规、技术、标准和商业模式挑战,提出了相应的政策建议。 适用人群:金融行业从业者、数据安全管理人员、政策制定者、科技研发人员等。 使用场景及目标:①理解金融数据可信流通的重要性和挑战;②学习可信数据空间的关键技术和应用场景;③探索金融数据可信流通的具体实践案例;④了解当前可信数据空间建设的瓶颈和未来发展方向。 其他说明:本文不仅提供了详尽的技术和应用分析,还提出了具体的政策建议,有助于推动金融数据可信流通的健康发展。阅读本文可以帮助读者深入了解金融数据安全保护和高效利用的最佳实践,为相关政策和技术的发展提供参考。
基于Python的天气预测和天气可视化项目源码+文档说明(高分毕设/大作业),个人经导师指导并认可通过的高分设计项目,评审分99分,代码完整确保可以运行,小白也可以亲自搞定,主要针对计算机相关专业的正在做大作业的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业,代码资料完整,下载可用。 基于Python的天气预测和天气可视化项目源码+文档说明(高分毕设/大作业)基于Python的天气预测和天气可视化项目源码+文档说明(高分毕设/大作业)基于Python的天气预测和天气可视化项目源码+文档说明(高分毕设/大作业)基于Python的天气预测和天气可视化项目源码+文档说明(高分毕设/大作业)基于Python的天气预测和天气可视化项目源码+文档说明(高分毕设/大作业)基于Python的天气预测和天气可视化项目源码+文档说明(高分毕设/大作业)基于Python的天气预测和天气可视化项目源码+文档说明(高分毕设/大作业)基于Python的天气预测和天气可视化项目源码+文档说明(高分毕设/大作业)基于Python的天气预测和天气可视化项目源码+文档说明(高分毕设/大作业)基于Python的天气预测和天气可视化项目源码+文档说明(高分毕设/大作业)基于Python的天气预测和天气可视化项目源码+文档说明(高分毕设/大作业)基于Python的天气预测和天气可视化项目源码+文档说明(高分毕设/大作业)基于Python的天气预测和天气可视化项目源码+文档说明(高分毕设/大作业)基于Python的天气预测和天气可视化项目源码+文档说明(高分毕设/大作业)基于Python的天气预测和天气可视化项目源码+文档说明(高分毕设/大作业)基于Python的天气预测和天气可视化项目源码+文档说明(高分毕设/大作业)基于Python的天气预测和天气可视化项目源码+文档说明(高分毕设/大作业
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值