更清晰地了解 glusterfs 的复制功能

更清晰地了解 glusterfs 的复制功能

在 server01 上,我已经安装并配置了 glusterfs-server 和 glusterfs-client 以将目录 /var/appdata 复制到 server02。

似乎一切都运行正常,但我不确定我是否理解了整个事情。

  • 目录 /var/gfs_appdata 是 /var/appdata 上的一个视图,这意味着在 /var/appdata 中生成的所有文件都被复制到 server02,或者我的应用程序必须将所有生成的文件存储到 /var/gfs_appdata 中。
  • 目录 /var/gfs_appdata 不保存任何物理数据。
  • server01上生成的file01什么时候出现在server02上,复制什么时候发生?

在 server01 上,glusterfs 通过 fstab 挂载:

/etc/glusterfs/glusterfs.vol              /var/gfs_appdata/  glusterfs  defaults  0  0

在 server01 和 server02 上,glusterfs-server 在启动时使用 /etc/glusterfs/glusterfsd.vol 自动启动:

volume posix1
  type storage/posix
  option directory /var/appdata
end-volume

volume locks1
    type features/locks
    subvolumes posix1
end-volume

volume brick1
    type performance/io-threads
    option thread-count 8
    subvolumes locks1
end-volume

volume server-tcp
    type protocol/server
    option transport-type tcp
    option auth.addr.brick1.allow *
    option transport.socket.listen-port 6996
    option transport.socket.nodelay on
    subvolumes brick1
end-volume

/etc/glusterfs/glusterfs.vol:

# RAID 1
# TRANSPORT-TYPE tcp
volume data01
    type protocol/client
    option transport-type tcp
    option remote-host 192.168.0.1
    option transport.socket.nodelay on
    option remote-port 6996
    option remote-subvolume brick1
end-volume

volume data02
    type protocol/client
    option transport-type tcp
    option remote-host 192.168.0.2
    option transport.socket.nodelay on
    option remote-port 6996
    option remote-subvolume brick1
end-volume

volume mirror-0
    type cluster/replicate
    subvolumes data01 data02
end-volume

volume readahead
    type performance/read-ahead
    option page-count 4
    subvolumes mirror-0
end-volume

volume iocache
    type performance/io-cache
    option cache-size `echo $(( $(grep 'MemTotal' /proc/meminfo | sed 's/[^0-9]//g') / 5120 ))`MB
    option cache-timeout 1
    subvolumes readahead
end-volume

volume quickread
    type performance/quick-read
    option cache-timeout 1
    option max-file-size 64kB
    subvolumes iocache
end-volume

volume writebehind
    type performance/write-behind
    option cache-size 4MB
    subvolumes quickread
end-volume

volume statprefetch
    type performance/stat-prefetch
    subvolumes writebehind
end-volume

答案1

好的,看起来这是实际的问题:

server01上生成的file01什么时候出现在server02上,复制什么时候发生?

一旦在 server01 上创建/更改/删除文件,复制就会开始。复制完成所需的确切时间取决于存储 I/O、网络带宽以及需要复制的数据量。

我使用 glusterfs 的方式是,gluster 卷中的文件通常很小,因此复制新文件几乎是即时的。

更新:至于您是否应该直接写入 brick (/var/appdata) 或 mount (/var/gfs_appdata),我的理解是,您应该始终使用 mount 进行读写。老实说,我不知道为什么会这样,大约一年前,一位(现已离职)同事在我们开始使用 glusterfs 之前对它进行了大量测试,而我还没有了解更详细的细节。

以下是对类似问题的回答,其中详细解释了为什么应该这样做:Apache 可以直接读取 GlusterFS Brick 但写入 GlusterFS 挂载吗?

相关内容