在 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 挂载吗?