EOS 是 CERN 开发的PB级的文件存储系统。在 Linux 客户端上可以通过 Autofs (Automount) 来自动挂载 EOS。


目录

  1. Autofs 介绍与结构
    1. Autofs 介绍
    2. Autofs 与 /etc/fstab
    3. Autofs 结构
  2. 安装配置 Autofs
    1. 安装 Autofs
    2. 配置 /etc/auto.master
    3. 创建 /etc/auto.eos
  3. 客户端挂载 EOS
    1. 安装 EOS-client
    2. 配置 /etc/sysconfig/eos.dev
    3. 挂载 EOS

Autofs 介绍与结构

Autofs 介绍

Autofs 或者 Automount 是 Linux 下一个非常友好的自动按需挂载文件系统的软件。在 Linux 下, 我们一般地是用 /etc/fstab 来设定挂载点的,这两种方法都可以挂载文件系统,那它们有什么区别呢?

Autofs 与 /etc/fstab

/tec/fstab 是用来永久挂载文件系统的,在挂载目录很少时会很有用,但是如果挂载目录多了会对整个系统的性能有影响,所以一般只挂载一些必要的目录。

autofs 则是按需挂载文件系统。 默认地,autofs 挂载的文件系统是处于未挂载状态,只有用户尝试去访问挂载点时,它才会自动挂载该文件系统。当用户一定时间不用该文件系统后,其会被自动卸载。

Autofs 结构

下图展示了 Autofs 的结构:

  • /etc/autofs.conf 是 autofs 的配置文件
  • /etc/auto.master 是 autofs 的主要挂载点配置文件
  • /etc/autofs_ldap_auth.confLDAP 认证文件
  • /etc/auto.misc 则是 Linux 设备的挂载模板

安装配置 Autofs

安装 Autofs

1
2
3
4
### CentOS/Fedora
$ sudo yum install -y autofs
### Debian/Ubuntu
$ sudo apt install -y autofs

配置 /etc/auto.master

/etc/auto.master 中记录了自动挂载的目录和配置文件,我们要挂载 EOS, 就在里面添加一项:

1
/eos /etc/auto.eos  --timeout=10

其中,

  • /eos 是自动挂载点,我们将 EOS 文件系统挂载到 /eos 目录
  • /etc/auto.eos 是挂载配置文件,指定了文件系统类型等等
  • --timeout 是超时设置,如果超过指定时间如 10s 没有使用该文件系统,它就会被自动卸载

创建 /etc/auto.eos

/etc/auto.eos 是我们自己创建的, 配置文件格式一般如下:

1
<name of the Share> <File System> [host]:<Share Path/Drive Path/Syntax>

下面是 EOS 文件系统的配置:

1
dev    --fstype=eos   :dev

对于 NFS 等系统,这时就可以通过启动或重启 autofs 服务来挂载共享目录了,但是对于 EOS, 我们还要做额外的工作。

客户端挂载 EOS

安装 EOS-client

客户端要挂载 EOS, 必须要安装 EOS-client:

1
$ sudo yum install -y eos-client eos-fuse eos-fusex eos-fuse-core eos-fusex-core

配置 /etc/sysconfig/eos.dev

挂载 EOS 的配置文件大致如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
export EOS_FUSE_CACHE=1
export EOS_FUSE_CACHE_PAGE_SIZE=32768
export EOS_FUSE_CACHE_SIZE=268435456
export EOS_FUSE_KERNELCACHE=1
export EOS_FUSE_DEBUG=0
export EOS_FUSE_LOGLEVEL=4
export EOS_FUSE_MGM_ALIAS=YOUR_MGM_HOST
export EOS_FUSE_MOUNTDIR=/eos/dev
export EOS_FUSE_REMOTEDIR=/eos/dev
export EOS_FUSE_NEG_ENTRY_CACHE_TIME=1.0e-09
export EOS_FUSE_ATTR_CACHE_TIME=0.0000000000000001
export EOS_FUSE_ENTRY_CACHE_TIME=0.0000000000000001
export EOS_FUSE_SYNC=1
export EOS_FUSE_NOPIO=1
export EOS_FUSE_PIDMAP=1
export EOS_FUSE_RDAHEAD=1
export EOS_FUSE_RDAHEAD_WINDOW=262144
export EOS_FUSE_RMLVL_PROTECT=2
export EOS_FUSE_SHOW_SPECIAL_FILES=0
export EOS_FUSE_USER_KRB5CC=0
export EOS_LOG_SYSLOG=0
export XRD_APPNAME=eos-fuse
export XRD_CONNECTIONRETRY=4096
export XRD_CONNECTIONWINDOW=10
export XRD_DATASERVERTTL=300
export XRD_LOADBALANCERTTL=1800
export XRD_LOGLEVEL=Info
export XRD_REDIRECTLIMIT=5
export XRD_REQUESTTIMEOUT=60
export XRD_STREAMERRORWINDOW=60
export XRD_STREAMTIMEOUT=60
export XRD_TIMEOUTRESOLUTION=1
export XRD_WORKERTHREADS=16
export EOS_FUSE_XATTR_ENOSYS=system.posix_acl_access
test -e /usr/lib64/libjemalloc.so.1 && export LD_PRELOAD=/usr/lib64/libjemalloc.so.1

其中需要修改的是

  • EOS_FUSE_MGM_ALIAS: EOS 的 MGM 节点主机名
  • EOS_FUSE_MOUNTDIR: 需要挂载的目录
  • EOS_FUSE_REMOUNTEDIR: 挂载到本机的目录

挂载 EOS

配置完成后,我们就可以挂载 EOS 文件系统了:

1
2
$ sudo systemctl enable --now autofs.service
$ sudo systemctl restart autofs.service