Gluster分布式文件存储

ceph、gluster、longhorn选型对比 高可用gluster-server部署两个以上的节点,gluster-server没有主从之分、是对等的。通过复制卷可以实现数据高可用,一个文件分别存在两个节点上,有一个节点宕机,文件依然能正常读写。为文件计算一个值,根据值放在某个pg上(pg属于某个osd),文件的其他副本放到其他osd上。文件实际是使用对象存储存到osd上,因为脱离了linux文件系统,所以无法在磁盘直观的看到文件,只能通过ceph挂载查看。Ceph是一个分布式的存储系统,可以在统一的系统中提供唯一的对象、块和文件存储。 阅读详情

 

目录

一、GlusterFS Volume

1. Glusterfs Volume介绍

2. Glusterfs Volume类型介绍

二、Heketi使用

1. 基本安装配置

2. 导入GlusterFS信息

3. 创建Volume及管理

4. Heheti基本原理

三、基于Kubernetes的GlusterFS存储卷

1. 创建StorageClass

2. 创建PVC


一、GlusterFS Volume

1. Glusterfs Volume介绍

Gluster volume是由多个brick组成的,每个brick实际是服务器上的一个目录

如下,volume1这个卷是由k8s-node1上的/data/brick1目录和k8s-node2上的/data/brick1组成的,往这个卷上写数据实际上就是往对应的brick目录中写数据

  

一个volume中的brick可以是多个服务器下的目录,也可以是一个服务器下的多个目录

如下volumetest卷就是k8s-node1服务器上的两个目录组成

 

2. Glusterfs Volume类型介绍

Distributed:分布式卷

文件通过 hash 算法随机分布到由 bricks 组成的卷上。GlusterFS默认创建的都是分布式卷

// 创建卷
gluster volume create volume1 k8s-node1:/data/brick1 k8s-node2:/data/brick1

// 启动卷
gluster volume start volume1

// 查看卷
gluster volume info volume1

卷创建完成后可以通过客户端进行使用(客户端需要安装glusterfs-fuse支持glusterfs文件系统,安装步骤略)

// 挂载glusterfs volume
mount -t glusterfs 172.16.2.100:/volume1 /opt/testdata

// 查看挂载目录
df -h | grep /opt/testdata
172.16.2.100:/volume1                                    3.6T  1.7T  1.9T  47% /opt/testdata

可以往目录下创建几个文件

[root@k8s-node1 ~]# cd /opt/testdata/

[root@k8s-node1 testdata]# touch testfile{1..6}

[root@k8s-node1 testdata]# ll
total 0
-rw-r--r-- 1 root root 0 May 22 14:52 testfile1
-rw-r--r-- 1 root root 0 May 22 14:52 testfile2
-rw-r--r-- 1 root root 0 May 22 14:52 testfile3
-rw-r--r-- 1 root root 0 May 22 14:52 testfile4
-rw-r--r-- 1 root root 0 May 22 14:52 testfile5
-rw-r--r-- 1 root root 0 May 22 14:52 testfile6

可以看到在/opt/testdata目录下创建了6个文件可以全部展示

前面说过往gluster volume中写数据实际上上往volume对应的brick中写数据,volume1对应的是k8s-node1上的/data/brick1目录和k8s-node2上的/data/brick1目录,分别查看

// k8s-node1节点
[root@k8s-node1 ~]# cd /data/brick1/
[root@k8s-node1 brick1]# ll
total 0
-rw-r--r-- 2 root root 0 May 22 14:52 testfile5

// k8s-node2节点
[root@k8s-node2 ~]# cd /data/brick1/
[root@k8s-node2 brick1]# ll
total 0
-rw-r--r-- 2 root root 0 May 22 14:52 testfile1
-rw-r--r-- 2 root root 0 May 22 14:52 testfile2
-rw-r--r-- 2 root root 0 May 22 14:52 testfile3
-rw-r--r-- 2 root root 0 May 22 14:52 testfile4
-rw-r--r-- 2 root root 0 May 22 14:52 testfile6

可以看到6个文件分布在两个brick中(具体的分布算法略)

Replicated: 复制式卷

类似 RAID 1,replica 数必须等于 volume 中 brick 所包含的存储服务器数,可用性高。

(为了测试将之前创建的分布式的volume1删除)

// 解除挂载
[root@k8s-node1 ~]# umount /opt/testdata/
// 停止volume
[root@k8s-node1 ~]# gluster volume stop volume1
Stopping volume will make its data inaccessible. Do you want to continue? (y/n) y
volume stop: volume1: success
// 删除volume
[root@k8s-node1 ~]# gluster volume delete volume1
Deleting volume will erase all information about the volume. Do you want to continue? (y/n) y
volume delete: volume1: success

创建复制卷

创建Replicated卷需要指定副本数(注意,副本数需要等于brick所在的服务器数量)

// 创建卷
gluster volume create volume2 replica 2 k8s-node1:/data/brick1 k8s-node2:/data/brick1

// 启动卷
gluster volume start volume2

// 查看卷
gluster volume info volume2

挂载(略)

创建文件进行测试

// 创建6个文件
[root@k8s-node1 ~]# cd /opt/testdata
[root@k8s-node1 testdata]# touch testfile{1..6}
[root@k8s-node1 testdata]# ll
total 0
-rw-r--r-- 1 root root 0 May 22 15:06 testfile1
-rw-r--r-- 1 root root 0 May 22 15:06 testfile2
-rw-r--r-- 1 root root 0 May 22 15:06 testfile3
-rw-r--r-- 1 root root 0 May 22 15:06 testfile4
-rw-r--r-- 1 root root 0 May 22 15:06 testfile5
-rw-r--r-- 1 root root 0 May 22 15:06 testfile6

查看volume对应的brick目录下的文件

// k8s-node1节点
[root@k8s-node1 ~]# cd /data/brick1/
[root@k8s-node1 brick1]# ll
total 0
-rw-r--r-- 2 root root 0 May 22 15:06 testfile1
-rw-r--r-- 2 root root 0 May 22 15:06 testfile2
-rw-r--r-- 2 root root 0 May 22 15:06 testfile3
-rw-r--r-- 2 root root 0 May 22 15:06 testfile4
-rw-r--r-- 2 root root 0 May 22 15:06 testfile5
-rw-r--r-- 2 root root 0 May 22 15:06 testfile6

// k8s-node2节点
[root@k8s-node2 ~]# cd /data/brick1/
[root@k8s-node2 brick1]# ll
total 0
-rw-r--r-- 2 root root 0 May 22 15:10 testfile1
-rw-r--r-- 2 root root 0 May 22 15:10 testfile2
-rw-r--r-- 2 root root 0 May 22 15:10 testfile3
-rw-r--r-- 2 root root 0 May 22 15:10 testfile4
-rw-r--r-- 2 root root 0 May 22 15:10 testfile5
-rw-r--r-- 2 root root 0 May 22 15:10 testfile6

可以看到对于Replicated类型的卷,在两个brick下有相同的文件(对文件进行复制)

Striped: 条带式卷

类似 RAID 0,stripe 数必须等于 volume 中 brick 所包含的存储服务器数,文件被分成数据块,以 Round Robin 的方式存储在 bricks 中,并发粒度是数据块,大文件性能好。

gluster volume create volume3 stripe 2 k8s-node1:/data/brick1 k8s-node2:/data/brick1

gluster volume start volume3

gluster volume info volume3

挂载并创建文件进行测试

条带卷主要是将文件分割存储,所以本次创建几个实际大小的文件

// 创建10M的文件
[root@k8s-node1 testdata]# dd if=/dev/zero bs=1024 count=10000 of=10M.file
10000+0 records in
10000+0 records out
10240000 bytes (10 MB) copied, 0.651303 s, 15.7 MB/s

// 创建20M的文件
[root@k8s-node1 testdata]# dd if=/dev/zero bs=1024 count=20000 of=20M.file
20000+0 records in
20000+0 records out
20480000 bytes (20 MB) copied, 1.29391 s, 15.8 MB/s

// 查看文件大小
[root@k8s-node1 testdata]# du -sh *
9.8M	10M.file
20M	20M.file

看看volume对应的brick

// k8s-node1节点
[root@k8s-node1 ~]# cd /data/brick1/
[root@k8s-node1 brick1]# ll
total 15024
-rw-r--r-- 2 root root  5128192 May 22 15:20 10M.file
-rw-r--r-- 2 root root 10256384 May 22 15:20 20M.file
[root@k8s-node1 brick1]# du -sh *
4.9M	10M.file
9.8M	20M.file

// k8s-node2节点
[root@k8s-node2 ~]# cd /data/brick1/
[root@k8s-node2 brick1]# ll
total 14976
-rw-r--r-- 2 root root  5111808 May 22 15:20 10M.file
-rw-r--r-- 2 root root 10223616 May 22 15:20 20M.file
[root@k8s-node2 brick1]# du -sh *
4.9M	10M.file
9.8M	20M.file

可以看到同一个文件分成了几部分分别存储在不同的brick目录下

(一个本质的区别是 分布式卷和复制卷的brick中存储的都是一个完整的文件,直接从brick中拷贝文件也可以直接使用,但是条带卷的brick中存储的只是文件的一部分,一个数据块,不能直接使用,往条带卷中写文件的效率是最高的,类似于raid0,一个文件写的时候是将文件分成几块,并发的往brick中写数据)

Distributed Striped: 分布式的条带卷

volume中 brick 所包含的存储服务器数必须是 stripe 的倍数(>=2倍),兼顾分布式和条带式的功能。

Distributed Replicated: 分布式的复制卷

volume 中 brick 所包含的存储服务器数必须是 replica 的倍数(>=2倍),兼顾分布式和复制式的功能。

 

二、Heketi使用

Glusterfs Volume是由多个brick目录组成的,volume的大小和brick目录的大小相关

但是实际场景下不可能提前准备好相关的目录,也不可能等到创建的时候再去创建相关大小的目录

Heketi (https://github.com/heketi/heketi ),是一个基于 RESTful API 的 GlusterFS 卷管理框架,可以方便的管理volume

1. 基本安装配置

yum安装heketi(也可以容器化部署)

yum install heketi heketi-client -y

配置Heketi

{
    "_port_comment": "Heketi Server Port Number",
    "port": "8080",  // 端口
    "_use_auth": "Enable JWT authorization. Please enable for deployment",
    "use_auth": false,
    "_jwt": "Private keys for access",
    "jwt": {
        "_admin": "Admin has access to all APIs",
        "admin": {
            "key": "My Secret"
        },
        "_user": "User only has access to /volumes endpoint",
        "user": {
            "key": "My Secret"
        }
    },
    "_glusterfs_comment": "GlusterFS Configuration",
    "glusterfs": {
        "_executor_comment": [
            "Execute plugin. Possible choices: mock, ssh",
            "mock: This setting is used for testing and development.",
            "      It will not send commands to any node.",
            "ssh:  This setting will notify Heketi to ssh to the nodes.",
            "      It will need the values in sshexec to be configured.",
            "kubernetes: Communicate with GlusterFS containers over",
            "            Kubernetes exec api."
        ],
        "executor": "ssh",   // 执行方式,使用SSH连接
        "_sshexec_comment": "SSH username and private key file information",
        "sshexec": {   // 密钥信息
            "keyfile": "/root/.ssh/id_rsa",
            "user": "root",
            "port": "22",
            "_fstab_comment": "It's vary dangerous to use the default '/etc/fstab'!",
            "fstab": "/etc/heketi/fstab" // 文件系统配置文件
        },
        "_kubeexec_comment": "Kubernetes configuration",
        "kubeexec": {
            "host": "https://kubernetes.host:8443",
            "cert": "/path/to/crt.file",
            "insecure": false,
            "user": "kubernetes username",
            "password": "password for kubernetes user",
            "namespace": "OpenShift project or Kubernetes namespace",
            "fstab": "/etc/heketi/fstab"
        },
        "_db_comment": "Database file name",
        "db": "/var/lib/heketi/heketi.db",
        "brick_max_size_gb" : 1024,
        "brick_min_size_gb" : 1,
        "max_bricks_per_volume" : 33,
        "_loglevel_comment": [
            "Set log level. Choices are:",
            "  none, critical, error, warning, info, debug",
            "Default is warning"
        ],
        "loglevel": "warning"
    }
}

Heketi通过ssh的方式连接到Glusterfs各个节点执行操作,heketi配置文件中需要指明私钥文件,并把对应的公钥文件上传到GlusterFS各台服务器的 /root/.ssh/ 下面,并重命命名为authorized_keys,/etc/heketi/heketi.json 中 的 keyfile 指向生成的私钥文件(包含路径),总之要确保heketi节点可以无密码访问glusterfs各节点。

启动Heketi

systemctl enable heketi
systemctl start heketi

基本RestAPI测试

[root@k8s-node1 ~]# curl http://127.0.0.1:8080/hello
Hello from Heketi

2. 导入GlusterFS信息

通过一个json文件可以定义GlusterFs节点的信息,包括节点以及节点的磁盘信息。示例文件如下:

{
    "clusters": [
        {
            "nodes": [
                {
                    "node": {
                        "hostnames": {
                            "manage": [
                                "192.168.1.100"
                            ], 
                            "storage": [
                                "192.168.1.100"
                            ]
                        }, 
                        "zone": 1
                    }, 
                    "devices": [
                        "/dev/sdc"
                    ]
                }, 
                {
                    "node": {
                        "hostnames": {
                            "manage": [
                                "192.168.2.100"
                            ], 
                            "storage": [
                                "192.168.2.100"
                            ]
                        }, 
                        "zone": 1
                    }, 
                    "devices": [
                        "/dev/sdc"
                    ]
                }
            ]
        }
    ]
}
// 导入topo信息
[root@k8s-node1 heketi]# export HEKETI_CLI_SERVER=http://127.0.0.1:8083
[root@k8s-node1 heketi]# heketi-cli topology load --json=topology.json

// 查看topo信息
[root@k8s-node1 heketi]# heketi-cli  topology info

3. 创建Volume及管理

// 创建一个10G大小Volume
heketi-cli volume create --name=volumeheketi --replica=2 --size=1

// 获取Volume列表
heketi-cli volume list

// 获取volume详情
heketi-cli volume info volumeheketi 

可以看到通过heketi创建volume不再需要指定brick目录,并且可以根据需要创建指定大小的卷

4. Heheti基本原理

我们知道GlusterFs Volume的brick是一个directory,但我们在heketi导入glusterfs集群的topologyfile中申明的是磁盘,那heketi如何使用磁盘的呢

答案很简单,当用户通过heketi-cli创建volume时, heketi会把节点上的磁盘组成vg,然后volume的每个brick对应的其实是vg上的一个lvm。heketi会负责这个流程,并最终将lvm挂载到某个目录,这个目录就成为brick。具体示例,如下面所示

heketi首先会将磁盘信息组成一个vg

// k8s-node1节点
[root@k8s-node1 ~]# pvs
  PV         VG                                  Fmt  Attr PSize  PFree  
  /dev/sdc   vg_1e121d3f725764eb55cb15cc42aa8f99 lvm2 a--  <2.73t  <2.59t
[root@k8s-node1 ~]# vgs
  VG                                  #PV #LV #SN Attr   VSize  VFree  
  vg_1e121d3f725764eb55cb15cc42aa8f99   1  38   0 wz--n- <2.73t  <2.59t

// k8s-node2节点
[root@k8s-node2 ~]# pvs
  PV         VG                                  Fmt  Attr PSize  PFree  
  /dev/sdc   vg_e193b95ccea9ee90b09e837e80f5c3b9 lvm2 a--  <2.73t  <2.59t
[root@k8s-node2 ~]# vgs
  VG                                  #PV #LV #SN Attr   VSize  VFree  
  vg_e193b95ccea9ee90b09e837e80f5c3b9   1  38   0 wz--n- <2.73t  <2.59t

通过heketi创建volume并查看volume信息

[root@k8s-node1 ~]# heketi-cli volume create --name=volumeheketi --replica=2 --size=1
Name: volumeheketi
Size: 1
Volume Id: c17457b22899059d4b09b5f56cf74e7b
Cluster Id: 6b6e86c292608a56f4c4065832392a10
Mount: 172.16.2.200:volumeheketi
Mount Options: backup-volfile-servers=172.16.2.100
Block: false
Free Size: 0
Block Volumes: []
Durability Type: replicate
Distributed+Replica: 2

通过Gluster直接查看volume信息

[root@k8s-node1 ~]# gluster volume info volumeheketi
 
Volume Name: volumeheketi
Type: Replicate
Volume ID: 91a3764a-4ceb-4bc3-b523-65e2b847fb13
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: 192.168.1.100:/var/lib/heketi/mounts/vg_1e121d3f725764eb55cb15cc42aa8f99/brick_ad96a8bd3d00505ad0bc026f7debe146/brick
Brick2: 192.168.2.100:/var/lib/heketi/mounts/vg_e193b95ccea9ee90b09e837e80f5c3b9/brick_6c64490e4130c1b4ce833377c417a19d/brick
Options Reconfigured:
transport.address-family: inet
nfs.disable: on

可以看到在glusterfs中仍然有brick信息,但是这个目录是一个由hetike自动生成的lv

[root@k8s-node1 ~]# lvdisplay /dev/vg_1e121d3f725764eb55cb15cc42aa8f99/brick_ad96a8bd3d00505ad0bc026f7debe146
  --- Logical volume ---
  LV Path                /dev/vg_1e121d3f725764eb55cb15cc42aa8f99/brick_ad96a8bd3d00505ad0bc026f7debe146
  LV Name                brick_ad96a8bd3d00505ad0bc026f7debe146
  VG Name                vg_1e121d3f725764eb55cb15cc42aa8f99
  LV UUID                OqGMZK-WSS0-YO1q-Af4L-lj0R-kEdc-DdJS8x
  LV Write Access        read/write
  LV Creation host, time k8s-node1, 2019-05-24 14:15:19 +0800
  LV Pool name           tp_ad96a8bd3d00505ad0bc026f7debe146
  LV Status              available
  # open                 1
  LV Size                1.00 GiB      // LV大小是创建时指定的volume大小
  Mapped size            0.66%
  Current LE             256
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:88

查看该lv的挂载信息

[root@k8s-node1 ~]# df -h| grep brick_ad96a8bd3d00505ad0bc026f7debe146
/dev/mapper/vg_1e121d3f725764eb55cb15cc42aa8f99-brick_ad96a8bd3d00505ad0bc026f7debe146 1020M   33M  987M   4% /var/lib/heketi/mounts/vg_1e121d3f725764eb55cb15cc42aa8f99/brick_ad96a8bd3d00505ad0bc026f7debe146

可以看到该目录就是volume对应的brick目录

三、基于Kubernetes的GlusterFS存储卷

Kubernetes通过创建StorageClass来使用 Dynamic Provisioning 特性,StorageClass连接Heketi,可以根据需要自动创建GluserFS的Volume,StorageClass还是要系统管理员创建,不过StorageClass不需要每次创建,因为这个不需要很多,不同的PVC可以用同一个StorageClass。

1. 创建StorageClass

// 配置文件
[root@k8s-node1 ~]# cat glusterfs-sc.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: heketi-sc
parameters:
  clusterid: 6b6e86c292608a56f4c4065832392a10
  resturl: http://192.168.1.100:8083
  volumetype: replicate:2
provisioner: kubernetes.io/glusterfs

// 创建
[root@k8s-node1 ~]# kubectl create -f glusterfs-sc.yaml
storageclass "heketi-sc" created

其中clusterid可以通过heketi获取

[root@k8s-node1 ~]# heketi-cli cluster list
Clusters:
Id:6b6e86c292608a56f4c4065832392a10 [file][block]

2. 创建PVC

(按照正常K8s使用Glusterfs volume的方式,还需要创建ep、pv,并且需要预先在glusterfs上创建好volume,但现在通过storageclass,这些步骤可以通通省略,只需要直接创建PVC即可)

[root@k8s-node1 ~]# cat glusterfs-pvc.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: glusterfs-test-vol1
  annotations:
    volume.beta.kubernetes.io/storage-class: "heketi-sc"
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Gi
 
[root@k8s-node1 ~]# kubectl  create -f glusterfs-pvc.yaml
persistentvolumeclaim "glusterfs-test-vol1" created

 

关于gluster分布式哈希研究 1. 背景 GlusterFS使用DHT模块来聚合多台机器的物理存储空间,形成一个单一的全局命名空间,并使用卷(Volume)这一逻辑概念来表示这样的空间。每个卷可以包含一个或多个子卷(Subvolume),子卷也可称为DHT子卷,同样是一个逻辑概念,一个子卷可以是单个brick、一个副本卷(Replica)或一个EC(Erasure Coding)卷,而副本卷和EC卷自身又都是由一组brick构成。而brick则是GlusterFS中的最基本存储单元,表示为一个机器上的本地文件系统导出目录。 D... 阅读详情

相关推荐

优快云余额充值前必读:这5个隐藏条款,90%的开发者都忽略了(附iOS内购避坑指南)

本文揭示了优快云余额充值中90%开发者忽略的5个隐藏条款,包括不可退款规则、iOS内购限制、账号安全责任等关键内容,特别提供了iOS内购避坑指南,帮助开发者避免资金损失和账号风险。

weixin_26765287的博客 147

k8s教程(Volume篇)-动态存储管理案例(GlusterFS)

k8s GlusterFS 动态存储管理案例

阿甘兄 1389

告别电机啸叫!手把手教你配置TMC5160的StealthChop2静音模式(附参数自整定避坑指南)

本文详细介绍了如何通过配置TMC5160的StealthChop2模式彻底消除3D打印机电机噪音。从硬件准备到参数自整定,再到高级调优与异常处理,手把手教你实现实验室级别的静音效果,提升打印质量和使用体验。

weixin_33724659的博客 487

glusterfs——volume管理

转自:http://my.oschina.net/hncscwc/blog/225454?p=1 Q: 常用的命令有哪些?创建volume:gluster volume create NAME stripe SCOUNT replica RCOUNT transport TYPE BRICKLISTNAME为volume的名字;SCOUNT,RCOUNT分别为stripe...

weixin_34348805的博客 342

深入解析高通Adreno DPU的DRM/KMS驱动架构与硬件协同设计

本文深入解析了高通Adreno DPU的DRM/KMS驱动架构与硬件协同设计,详细介绍了Adreno DPU的核心模块组成、显示接口设计以及DRM驱动架构。通过实际案例和调试技巧,帮助开发者理解硬件与软件的协同工作原理,优化显示性能并解决常见问题。

weixin_29266679的博客 436

数据安全实战技能解析:从加密攻防到数字水印的竞赛指南

数据安全是信息安全领域的核心,其基础在于密码学与信息隐藏技术。密码学通过加密算法(如AES、RSA)和哈希函数,保障数据的机密性与完整性,其原理涉及对称/非对称加密、工作模式及密钥管理。数字水印技术则基于信号处理(如DCT/DWT变换),将信息嵌入多媒体载体,用于版权保护与溯源。这些技术的价值在于为数据全生命周期提供“防泄漏”与“可追溯”的解决方案,广泛应用于企业数据治理、合规审计和**数据防泄漏(DLP)** 系统。本文以一场贴近实战的**数据安全职业技能竞赛**为切入点,深入剖析如何运用密码分析、磁盘取

weixin_34314962的博客 402

关于GlusterFS的卷

GlusterFS的几种卷

SRE成长记 650

用VINS-Fusion跑通EuRoC数据集:Ubuntu22.04+ROS2环境下的保姆级评测指南

本文详细介绍了在Ubuntu22.04和ROS2 Humble环境下使用VINS-Fusion处理EuRoC数据集的完整流程。从环境配置、数据集转换到参数调优和性能评估,提供了一套全面的多传感器融合分析方案,帮助开发者在无人机精准定位场景中实现高效部署与优化。

weixin_29212867的博客 517

Gluster 常用操作命令

Gluster 常用操作命令1. 启动/关闭/查看glusterd服务2. 为存储池添加/移除服务器节点3. 查看所有节点的基本状态(显示的时候不包括本节点):4. 查询volume 信息5. [挂载分区](https://www.linuxprobe.com/mount-detail-parameters.html)6. 客户端以glusterfs方式挂载7. 创建/启动/停止/删除卷8. 查看卷信息列出集群中的所有卷:9. Server端创建复制卷10. Client端操作(NFS挂载、Glus

liuskyter 4302

Caffeine:为每个元素动态设置过期时间

Caffeine利用expireAfter方法实现为每个元素动态设置过期时间

大数据开发、JAVA开发、人工智能AI 1万+

DAF-Net:动态注意力红外-可见光图像融合

DAF-Net 红外-可见光融合链路:IR/VIS 双分支 (Conv+ResBlock → 64ch) → DynamicAttentionFusion (Cat→Sigmoid→加权) → 重建 (Conv→Sigmoid)。TNO 上 SSIM=0.782 (vs IR), 0.734 (vs VIS), 参数量仅 218K。核心贡献:轻量动态注意力门控, 无监督 SSIM+MSE 损失不需要配准 ground truth。

FJN110的博客 318

heketi 与GlusterFS常见命令

heketi-cli volume create --size=1 --replica=2 # 创建一个1G的磁盘,副本数为2,时间大概2-3分钟。参考文献https://https://blog.youkuaiyun.com/jxlhljh/article/details/126481525。参考:https://www.cnblogs.com/bfmq/p/14542635.html。删除device-->删除node-->删除-->删除cluster集群。10、创建heketi-ui。1、列出volume。

weixin_43490243的博客 1103

Dify框架面试内容整理-如何优化Dify的应用性能?

为1536维)可选用 PCA、FAISS 的量化压缩方法降低维度(如128、256、512);对知识库预览、任务流配置等页面,使用 nginx/cache-control 减少请求。API 响应耗时(P50/P95)、Token 使用量、缓存命中率、向量检索耗时;对 Prompt+输入内容计算 Hash,缓存相同请求的返回结果;使用占位符 + 函数拼接,按需组合 Prompt,而非静态长模板;数据量大时,应在构建索引前清洗冗余段落、统一格式,避免重复向量。维度越低,检索越快,但可能影响召回准确度,需平衡。

不务正业的猿 1549

探索未来存储:Gluster —— 免费开源的超大规模网络文件系统

![Gluster Logo](https://www.gluster.org/wp-content/uploads/2016/03/gluster-ant.png) **Gluster** 是一个强大且免费的开源软件,它提供了一种可扩展至数PB级别的网络文件系统。无论你是对象、块还是文件存储的需求,Gluster 都能以灵活的接口满足你的业务场景。 ## 技术深度解析 Gluster 的核...

gitblog_00421的博客 954

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Gluster一些级别知识

1:. 基本概念 (1) brick:The brick is the storage filesystem that has been assigned to a volume. (2) subvolume:A brick after being processed by at least one translator. (3) volume:The final share a

Wait for 的专栏 1017

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

TaoCloud与红帽发布XDFS-Pro分布式文件存储

大道云行科技与红帽在京正式签署战略合作协议,并发布内嵌红帽Gluster企业版的XDFS-Pro分布式文件存储系统。双方将围绕红帽Gluster企业版软件、虚拟化软件、云管理平台的销售、交付、服务及培训认证进行深入合作,共同提升双方在各自业务领域内的竞争力,为用户构建更为弹性、高效、经济的软件定义数据中心基础架构。 随着云计算和大数据的飞速发展,...

weixin_34356138的博客 324

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

GlusterFS分布式文件存储的原理和案例部署

一、GlusterFS概述 GlusterFS简介 开源的分布式文件系统 有存储服务器、客户端以及NFS/Samba 存储网关组成 无元数据服务器 GlusterFS特点 扩展性和高性能 高可用性 全局统一命名空间 弹性卷管理 基于标准协议 GlusterFS术语 Brick Volume FUSE VFS Glusterd 模块化堆栈式架构 模块化、堆栈式的架构通过对模块的组合,实现复杂的功能 二、GlusterFS工作原理 2.1 GlusterFS工作流程 客户端或应用程序通过

qq_41786285的博客 1184

Gluster FS分布式文件系统

Gluster FS分布式文件系统Gluster FS概述分布式文件系统介绍1.文件系统组成2.文件系统作用3.文件系统的挂载使用Gluster FS 简介Gluster FS 特点Gluster FS组成Gluster FS专业术语模块化堆栈式架构Gluster FS工作原理GlusterFS卷类型基本卷复合卷GlusterFS集群部署实验环境:1.关闭防火墙2.磁盘分区并挂载3.添加映射安装部署GlusterFS解压gfsrepo.zip配置本地yum源安装并启动添加节点到存储信任池中创建卷1.创建分布

weixin_55905026的博客 1385

当容器遇上Ceph和Gluster……

2016年8月5日,全球开源领导厂商红帽携手ZD至顶网、Intel、云达科技共同举办的主题为“开放 融合 开源开启存储新世界”的2016年中国开源企业存储峰会在北京富力万丽酒店隆重召开。在下午的议题中,红帽资深架构师张家驹为大家分享了“容器原生存储”的主题演讲,并在会后坐客ZD专访间,介绍了红帽Ceph架构和Gluster的技术与容器存储的那些事儿。以下...

weixin_33835690的博客 180

Gluster FS 分布式存储

文章目录

qq_35479765的博客 748

GFS分布式搭建

GFS支持的七种卷 1、分布式卷(默认):文件通过HASH算法分布到所有Brick Server上,这种卷是GFS的基础;以文件为单位根据HASH算法散列到不同的Brick,其实只是扩大了磁盘空间,并不具备容错能力,属于文件级RAID 0 2、条带卷(默认):类似RAID 0,文件被分成数据库并以轮询的方式分布到多个Brick Server上,文件存储以数据块为单位,支持大文件存储,文件越大,读取效率越高 3、复制卷(Replica volume):将文件同步到多个Brick上,使其具备多个文件副本,属于文

m0_55614372的博客 467

mysql使用gluster共享存储_kubernetes配置glusterfs动态存储

GlusterFS分布式文件系统一.简单介绍分布式存储按其存储接口分为三种:文件存储、块存储、对象存储*文件存储通常支持POSIX接口(如glusterFS,但GFS、HDFS是非POSIX接口的),可以像普通文件系统(如ext4)那样访问,但又比普通文件系统多了并行化访问的能力和冗余机制。主要的分布式存储系统有TFS、CephFS、GlusterFS和HDFS等。主要存储非结构化数据,如普通文件...

weixin_33140481的博客 864

如何评估Kubernetes持久化存储方案

在2018年的Garnter技术成熟度曲线中,容器存储出现在了技术触发期,已经开始进入大众的视野。我相信,在未来的两年内,容器存储会随着Kubernetes的进一步成熟和商业化,其地位会越来越重要。如何在五花八门的存储产品中,选择适合自己的一款,将会是IT大佬们必须要面对的问题。本次分享将会从使用场景角度分析,如何评估容器存储方案。 五花八门的存储概念 从用户角度看,存储就是一块盘或者一个目录...

YAN_RONG_TECHNOLOGY的博客 1714

GlusterFS卷配置全指南:从分布式到纠错卷,轻松掌握高性能存储方案

GlusterFS卷配置全指南:从分布式到纠错卷,轻松掌握高性能存储方案

虽非技冠群英首,愿与同道共长歌; 大鹏一日同风起,扶摇直上九万里; 1523

ceph 存储 对比_Ceph与Gluster之开源存储的对比

转载:https://www.cnblogs.com/happy-king/p/9193975.html#_label0阅读目录一、Ceph与Gluster的原理对比Ceph和Gluster是Red Hat旗下的成熟的开源存储产品,Ceph与Gluster在原理上有着本质上的不同。1、CephCeph基于一个名为RADOS的对象存储系统,使用一系列API将数据以块(block)、文件(file)和...

weixin_30941189的博客 264
上一篇: Openstack Cinder源码分析-删除Volume(一)
下一篇: Kubernetes-ResourceQuota配额限制
Aaron.com
博客等级 码龄17年 25粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值