GlusterFS 文件系统

更新时间:
2024-05-13
下载文档

GlusterFS 文件系统

简介

SylixOS从3.5.1 内核起支持 GlusterFS 文件系统。GlusterFS 系统是一个可扩展的网络文件系统,相比其他分布式文件系统,GlusterFS 具有高扩展性、高可用性、高性能、可横向扩展等特点,并且其没有元数据服务器的设计,让整个服务没有单点故障的隐患。

在 SylixOS 中,GlusterFS 的结构如下:

服务端和客户端的基本功能由一组解析层(Translator/Xlator)构成。

  • Fuse translator:处理 FUSE 请求与解析。
  • DHT translator:将请求映射到文件或目录所在的正确的块中。
  • AFR translator:处理复制卷类型的请求。
  • PC(Protocol Client translator):处理客户端中的通讯请求。
  • PS(Protocol server translator):处理服务端中的通讯请求。
  • POSIX translator:处理 POSIX 接口解析。

服务器的搭建

下面以 SylixOS 为例为您介绍服务器的搭建过程。

  1. 服务器配置

    下面以 2 台不同架构设备组成服务器:

    架构设备地址
    AArch6410.12.3.8/16
    x8610.12.2.250/16
  2. 磁盘初始化

    将使用区域磁盘格式化为 TpsFS。

  3. 创建存储卷

    分别在 2 台设备中创建以下目录。

    /apps/data/brick1/gv1
    
  4. 启动 GlusterFS 服务

    分别在 2 台设备中执行以下命令。

    [root@sylixos:/root]# glusterd -p /var/run/glusterd.pid
    [root@sylixos:/root]# ps
    
          NAME            FATHER      STAT  PID   GRP    MEMORY    UID   GID   USER
    ---------------- ---------------- ---- ----- ----- ---------- ----- ----- ------
    kernel           <orphan>         R        0     0       88KB     0     0 root
    glusterd         <orphan>         R        1     1    14496KB     0     0 root
    
    total vprocess: 2
    

通过 ps 可以看到服务已经启动。

  1. 配置信任池

    以下命令在 1 台服务器中执行即可,对于不同的服务器请修改其中的目标 IP 地址。可以通过 status 查看当前是否完成建立。

    [root@sylixos:/root]# gluster peer probe 10.12.3.8
    peer probe: success
    
    [root@sylixos:/root]# gluster peer status
    Number of Peers: 1
    
    Hostname: 10.12.3.8
    Uuid: 67c0875a-bfde-11d3-a99c-eb93c48d8b67
    State: Peer in Cluster (Connected)
    
    
  2. 创建存储卷

    下面我们以分布式卷创建为例,请在 1 台服务器中执行以下命令:

    
    [root@sylixos:/root]# gluster vol create gv1 10.12.2.250:/apps/data/brick1/gv1 10.12.3.8:/apps/data/brick1/gv1 force
    volume create: gv1: success: please start the volume to access data
    [root@sylixos:/root]# gluster vol info
    
    Volume Name: gv1
    Type: Distribute
    Volume ID: 5eaa6684-476b-11ee-89f5-715e1eb16eab
    Status: Created
    Snapshot Count: 0
    Number of Bricks: 2
    Transport-type: tcp
    Bricks:
    Brick1: 10.12.2.250:/apps/data/brick1/gv1
    Brick2: 10.12.3.8:/apps/data/brick1/gv1
    Options Reconfigured:
    storage.fips-mode-rchecksum: on
    transport.address-family: inet
    nfs.disable: on
    
    
  3. 配置存储卷

    SylixOS 客户端不支持 write-behind 特性,需要在服务端将其关闭。

    gluster vol set gv1 performance.write-behind off
    

    如果需要使用分布式卷(Distributed Volume),需要在服务端设置开启 readdir-ahead 功能,否则对 readdir 会造成影响。

    gluster vol set gv1 performance.readdir-ahead on
    
  4. 启动存储卷

    以下命令在 1 台服务器中执行即可。

    [root@sylixos:/root]# gluster vol start gv1
    volume start: gv1: success
    [root@sylixos:/root]# gluster vol info
    
    Volume Name: gv1
    Type: Distribute
    Volume ID: 5eaa6684-476b-11ee-89f5-715e1eb16eab
    Status: Started
    Snapshot Count: 0
    Number of Bricks: 2
    Transport-type: tcp
    Bricks:
    Brick1: 10.12.2.250:/apps/data/brick1/gv1
    Brick2: 10.12.3.8:/apps/data/brick1/gv1
    Options Reconfigured:
    performance.readdir-ahead: on
    performance.write-behind: off
    storage.fips-mode-rchecksum: on
    transport.address-family: inet
    nfs.disable: on
    
    

    通过任意的服务器均可查看卷的运行状态。

  5. 挂载存储卷

    我们在 Debian 中挂载上述创建的分布式卷,请使用以下命令:

    root@debian:~# glusterfs --process-name fuse --volfile-server=10.12.2.250 --volfile-id=gv1 /mnt/glusterfs
    root@debian:~# cd /mnt/glusterfs/
    root@debian:/mnt/glusterfs# ls
    root@debian:/mnt/glusterfs#
    
    

当前的卷中没有内容,我们创建一些文件及目录:

root@debian:/mnt/glusterfs# tree .
.
├── a
   ├── 1.txt
   └── 2.txt
└── b
    ├── 3.txt
    └── 4.txt

2 directories, 4 files
root@debian:/mnt/glusterfs# cat a/1.txt
aaa
root@debian:/mnt/glusterfs# cat a/2.txt
bbb
root@debian:/mnt/glusterfs# cat b/3.txt
ccc
root@debian:/mnt/glusterfs# cat b/4.txt
ddd
root@debian:/mnt/glusterfs#

回到我们的服务器中,可以查看到已经在存储卷中创建了对应的文件,由于是分布式卷,文件仅存在一份内容,没有冗余,如果是复制卷,则两处服务器中内容相同。

# 10.12.3.8
[root@sylixos:/apps/data/brick1/gv1]# ls
.glusterfs  a  b
[root@sylixos:/apps/data/brick1/gv1]# ls a/
[root@sylixos:/apps/data/brick1/gv1]# ls b
4.txt
[root@sylixos:/apps/data/brick1/gv1]# cat b/4.txt
ddd
[root@sylixos:/apps/data/brick1/gv1]#
# 10.12.2.250
[root@sylixos:/apps/data/brick1/gv1]# ls
.glusterfs  a  b
[root@sylixos:/apps/data/brick1/gv1]# ls a
1.txt  2.txt
[root@sylixos:/apps/data/brick1/gv1]# ls b
3.txt
[root@sylixos:/apps/data/brick1/gv1]# cat b/3.txt
ccc
[root@sylixos:/apps/data/brick1/gv1]#

客户端搭建

确认 FUSE 驱动状态

[root@sylixos:/root]# lsmod

            NAME               HANDLE       TYPE  GLB       BASE         SIZE   SYMCNT
------------------------- ---------------- ------ --- ---------------- -------- ------
VPROC: kernel             pid:   0 TOTAL MEM: 90112
+ xinput.ko                       4e075300 KERNEL YES       8000009000     2454      1
+ xsiipc.ko                       4e08c570 KERNEL YES       800000f000     5edc     14
+ xtimer.ko                       4e08da10 KERNEL YES       8000004000      830      6
+ xfuse.ko                        4e08f1c0 KERNEL YES       800001c000     72c4      1

total modules: 4

挂载方式

glusterfs --process-name fuse --volfile-server=10.12.3.20 --volfile-id=gv0 /mnt/glusterfs
文档内容是否对您有所帮助?
有帮助
没帮助