# 挂载并行文件系统
通过obsfs使用OBS服务，需要将OBS的并行文件系统挂载至您本地的文件系统上。挂载完成后，可以像操作本地目录一样操作OBS并行文件系统，比如保存某个文件至挂载目录，即上传对象至OBS。
![](https://support.huaweicloud.com/fstg-obs/public_sys-resources/note_3.0-zh-cn.png)
- obsfs通过公网挂载到ECS时占用OBS公网流量和ECS弹性网卡流量（不收费），若产生公网访问还会占用EIP流量。
 
#### 约束与限制
- 本地挂载目录可以不为空，但是挂载后此目录下原有的内容将不可用，取消挂载后即可恢复。建议使用空目录作为挂载目录。
- obsfs挂载OBS并行文件系统后，不支持作为ftp目录使用。
- 并行文件系统的容量请以实际使用情况为准。
- 一个并行文件系统支持挂载到多个obsfs客户端，但数据一致性需由您自行维护，避免出现多个obsfs客户端同时对一个文件并发写入的情况。
- 桶级和目录级的桶策略和IAM策略对obsfs挂载访问都生效。
- 挂载至本地系统的并行文件系统不能提供与本地文件系统完全相同的性能或功能，使用时需要注意以下细节：
  - 挂载目录中的文件或文件夹不支持硬链接命令。
  
  - 创建的目录深度不超过45层。
  
  - 因obsfs使用FUSE框架存在内核态与用户态切换，不适合高并发场景。
  
  - 默认开启缓存，ls、stat等linux命令缓存过期后首次执行需要远程访问OBS服务器，所以性能较差。
   
 
#### 前提条件
- 已成功获取obsfs，具体操作请参见[下载并安装obsfs](https://support.huaweicloud.com/fstg-obs/obs_12_0004.html)。
- 已初始化obsfs，具体操作请参见[初始化obsfs](https://support.huaweicloud.com/fstg-obs/obs_12_0006.html)。
- 本地挂载目录已存在。
  ![](https://support.huaweicloud.com/fstg-obs/public_sys-resources/note_3.0-zh-cn.png)
  您也可以使用**mkdir** 命令创建一个新目录用来挂载并行文件系统。比如创建一个mountpoint目录，命令为：
  ```
  mkdir mountpoint
  ```
  
- 已校准当前系统时间。 如果当前系统时间与存储服务器时间相差过大，会导致请求鉴权失败。
  
 
#### 手动挂载并行文件系统
![](https://support.huaweicloud.com/fstg-obs/public_sys-resources/note_3.0-zh-cn.png)
通过此方式挂载的并行文件系统，在Linux重启后需要重新挂载。您也可以根据实际情况选择开机自动挂载并行文件系统，具体操作请参见[开机自动挂载并行文件系统]。
1. 打开命令行终端。
2. 使用**cd**命令进入obsfs所在目录。
3. 按照以下格式执行挂载命令。
   
   ```
   ./obsfs 并行文件系统名 本地挂载目录 -o url=区域终端节点地址 -o passwd_file=密钥文件路径 -o big_writes -o max_write=131072 -o use_ino 其他挂载参数
   ```
   - 并行文件系统名：输入待挂载的并行文件系统名称。
     ![](https://support.huaweicloud.com/fstg-obs/public_sys-resources/note_3.0-zh-cn.png)
     支持将并行文件系统中特定目录挂载到本地。用户使用此种方式挂载，进入本地挂载目录后，仅能访问并行文件系统中的特定目录。挂载命令如下：
     ./obsfs *并行文件系统名:/目录名 本地挂载目录* -o url=*区域终端节点地址* *-* opasswd_file=*密钥文件路径 -* o big_writes*-* omax_write=131072-ouse_ino*其他挂载参数*
     
   
   - 本地挂载目录：输入待挂载目录的绝对路径或相对路径。
   
   - 区域终端节点地址：根据待挂载并行文件系统所在区域名称获取对应的终端节点地址，具体信息请参见[地区和终端节点](https://developer.huaweicloud.com/endpoint?OBS)**。**
   
   - 挂载参数 挂载参数（除passwd_file、use_ino外）为可选项，根据需求选择合适的参数组合，格式为：**-o *参数名称*=** ***参数值*** 。在不需要设置参数值的情况下，直接使用**-o** ***参数** **名称*** 即可。OBS支持的挂载参数及说明如[表1]所示。
     ![](https://support.huaweicloud.com/fstg-obs/public_sys-resources/note_3.0-zh-cn.png)
     关于obsfs挂载时的参数设置，可执行**./obsfs --help**命令了解更多。
      表1挂载参数说明 
     | 参数名称                 | 参数类型           | 是否必选 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
     |:---|:---|:---|:---|
     | passwd_file        | String         | 是  | **参数解释**： 指密钥文件路径，使用obsfs时将从此路径中获取AK和SK信息，以对用户身份进行验证。根据[初始化obsfs](https://support.huaweicloud.com/fstg-obs/obs_12_0006.html)配置的密钥文件路径进行设置。 **约束限制：** 为了认证信息安全，文件权限需要是600（其他group用户不可访问）才可以正常被obsfs读取。 **取值范围：** 根据[初始化obsfs](https://support.huaweicloud.com/fstg-obs/obs_12_0006.html)配置的密钥文件路径进行设置。 **默认取值：** 不涉及。                                                                                                                                                                                                                                                                                                                                                    |
     | use_ino               | Boolean Flag  | 否    | **参数解释**： 使用该选项，由obsfs分配inode编号。并行文件系统场景下推荐启用。 **约束限制：** 不涉及。 **取值范围**： 不涉及。 **默认取值：** false：关闭                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
     | big_writes          | Boolean Flag   | 否  | **参数解释**： 配置后可更改写缓存最大值大小。 **约束限制：** 需配合max_write参数使用。 **取值范围**： 不涉及。 **默认取值：** false：关闭                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
     | max_write           | Int             | 否   | **参数解释**： 设置单次写请求的最大数据块大小（单位：字节），仅配置big_writes的情况下才生效，默认写大小为4KB，推荐使用128KB。 **约束限制：** 需与big_writes同时使用，否则不生效。 **取值范围**： 正整数，单位为字节（推荐值：131072，即128KB）。 **默认取值：** 4096（4KB）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
     | nonempty             | Boolean Flag  | 否   | **参数解释**： 允许挂载目录非空。 **约束限制：** 不涉及。 **取值范围**： 不涉及。 **默认取值：** false：关闭                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
     | allow_other          | Boolean Flag   | 否   | **参数解释**： 允许其他用户访问并行文件系统。 **约束限制：** 不涉及。 **取值范围**： 不涉及。 **默认取值：** false：关闭                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
     | max_background     | Int          | 否    | **参数解释：** 可配置后台最大等待请求数。FUSE内核模块的参数，此参数是直接传给内核的。 **约束限制：** 需要root用户权限才能设置超过默认值。 **取值范围：** 正整数，受到内核内存和/sys/fs/fuse/connections/\<id\>/max_background影响而变化。 **默认取值：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
     | use_path_request_style | Boolean Flag | 否     | **参数解释**： 当采用路径式（使用legacy API 调用风格）访问OBS时，请使用该参数。 **约束限制：** 当 url 参数值为 IP 地址时，obsfs 会自动切换为路径式访问（无需手动指定此参数）。该参数主要用于强制使用路径式访问的非 IP 场景。 **取值范围**： 不涉及。 **默认取值：** false：关闭                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
     | umask                   | String          | 否      | **参数解释**： 配置文件权限的掩码，使用此参数会覆盖并行文件系统内所有文件的权限。 说明： 使用umask配置后，挂载目录下文件权限会被覆盖为0777 - umask 使用示例：-o umask=xxx ``` 设置umask为0777：文件系统中所有文件权限为0000 设置umask为0000：文件系统中所有文件权限为0777 设置umask为0002：文件系统中所有文件权限为0775 ``` **约束限制：** 不涉及。 **取值范围：** 支持0000-0777 - 当umask为0777：文件系统中所有文件权限被覆盖为0000，表示无人有权限；  - 当umask为0000：文件系统中所有文件权限被覆盖为0777，表示所有人有读写执行权限；  - 当umask为0002：文件系统中所有文件权限被覆盖为0775，表示其他用户组用户仅有读和执行权限，自己和同组内用户有读写执行权限。   **默认取值：** 0000 |
     | obsfslog             | Boolean Flag | 否    | **参数解释**： 从配置文件加载日志配置参数，包括日志模式、级别等。使用此参数可以在不重启进程的情况下，更改日志级别。 说明： 配置文件路径固定为：/etc/obsfsconfig，如果要使用此参数，需要手动在本地创建此路径并参照以下示例及注释写入内容。 配置文件内容示例： ``` //日志模式。值为0，日志模式为前台显示。值为1，模式为生成日志文件，路径：/var/log/obsfs，以进程号命名。值为2，模式为日志写入系统日志。 dbglogmode=1 //日志级别。dbg、info、warn、err、crit。日志级别为dbg或info时，会打印业务详细信息，例如：桶名、文件名等。 dbglevel=info ``` **约束限制：** 在 /etc/obsfsconfig 文件中添加 dbglogmode=1 后，无需添加此挂载参数也可启用文件日志。 **取值范围**： 不涉及。 **默认取值：** false：关闭                                                                                                                                                                               |
     | hwcache_write_size     | Int             | 否    | **参数解释**： obsfs挂载并行文件系统使用内存作为缓存，hwcache_write_size控制缓存大小，达到设置的阈值则触发上传同步。 **约束限制：** obsfs支持3s超时上传，未达到阈值且超过3s没有缓存写入则触发上传。 **取值范围**： 1024-134217728（1KB-128MiB） **默认取值：** 6160384（5.875MiB）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
        
     
   
   
   
   
4. 执行以下命令，检查挂载结果。 
   ```
   df -h
   ```
   当界面显示如下类似回显信息时，表示OBS并行文件系统挂载成功。
   ```
   Filesystem       Size         Used       Avail      Use%      Mounted on
   obsfs            256T         0          256T       0%        /path/to/mountpoint
   ```
   ![](https://support.huaweicloud.com/fstg-obs/public_sys-resources/note_3.0-zh-cn.png)
   并行文件系统的容量请以实际使用情况为准。
   如果没有显示以上类似回显信息，表示OBS并行文件系统挂载失败。此时可在执行的挂载命令后面添加以下参数，用以在回显中输出挂载过程以及详细调试日志：
   ```
   -d -d -f -o f2 -o curldbg
   ```
   然后再根据具体的错误信息进行问题定位，常见异常处理请参考[挂载OBS失败](https://support.huaweicloud.com/fstg-obs/obs_12_0014.html)。
   
   
 
#### 命令示例
此处以挂载一个华北-北京一区域的"filesystem001"并行文件系统、obsfs密钥文件路径为"/etc/passwd-obsfs"作为前提条件提供如下挂载命令示例，介绍挂载OBS并行文件系统时的一些参数配置。
- 将并行文件系统"filesystem001"挂载至"/mnt/mount_path/"目录，并允许该目录为非空：
  ```
  ./obsfs filesystem001 /mnt/mount_path/ -o url=http://obs.cn-north-1.myhuaweicloud.com -o passwd_file=/etc/passwd-obsfs -o big_writes -o max_write=131072 -o nonempty -o use_ino
  ```
  
- 将并行文件系统"filesystem001"挂载至"/mnt/mount_path/"目录，并设置写缓存大小：
  ```
  ./obsfs filesystem001 /mnt/mount_path/ -o url=http://obs.cn-north-1.myhuaweicloud.com -o passwd_file=/etc/passwd-obsfs -o big_writes -o max_write=131072 -o max_background=100 -o use_ino
  ```
  
- 将并行文件系统"filesystem001"挂载至"/mnt/mount_path/"目录，并允许其他用户访问该目录：
  ```
  ./obsfs filesystem001 /mnt/mount_path/ -o url=http://obs.cn-north-1.myhuaweicloud.com  -o passwd_file=/etc/passwd-obsfs -o big_writes -o max_write=131072 -o allow_other -o use_ino
  ```
  
 
![](https://support.huaweicloud.com/fstg-obs/public_sys-resources/note_3.0-zh-cn.png)
当url参数值为IP地址时，请在以上挂载示例中携带-o use_path_request_style参数，否则会报域名解析错误。
 #### 开机自动挂载并行文件系统
以下内容以CentOS 7操作系统为例，介绍如何配置开机自动挂载。
1. 使用root用户登录Linux运行机。
2. 执行以下命令，创建一个/home/startobsfs.sh脚本文件。 
   ```
   vi /home/startobsfs.sh
   ```
   
   
3. 按**i** 进入编辑模式，将以下命令写入/home/startobsfs.sh脚本文件。
   
   ```
   #!/bin/bash
   cd obsfs所在的绝对路径
   ./obsfs 并行文件系统名 本地挂载目录 -o url=区域终端节点地址 -o passwd_file=密钥文件路径 -o big_writes -o max_write=131072 -o use_ino 挂载参数
   ```
   ![](https://support.huaweicloud.com/fstg-obs/public_sys-resources/note_3.0-zh-cn.png)
   挂载命令参数说明请参见"手动挂载并行文件系统"部分的[步骤3]。
   
   
4. 按**Esc** 键，输入**:wq**，保存并退出脚本文件。
5. 执行以下命令，赋予root用户对脚本的可执行权限。 
   ```
   chmod +x /home/startobsfs.sh
   ```
   
   
6. 执行以下命令，赋予root用户对rc.local文件的执行权限。 
   ```
   chmod +x /etc/rc.d/rc.local
   ```
   ![](https://support.huaweicloud.com/fstg-obs/public_sys-resources/note_3.0-zh-cn.png)
   不同操作系统的rc.local文件位置不同，在CentOS 7中，该文件位置为/etc/rc.d/rc.local。
   
   
7. 编辑/etc/rc.d/rc.local文件，将以下命令添加至文件末尾，保存并退出。
   
   ```
   bash /home/startobsfs.sh
   ```
   ![](https://support.huaweicloud.com/fstg-obs/public_sys-resources/note_3.0-zh-cn.png)
   如果/etc/rc.d/rc.local中有退出的命令，例如"exit 0"，请将本步骤中的命令添加至退出命令之前。
   
   
8. 重启后验证。 
   在重启Linux后，执行以下命令，查看OBS并行文件系统是否挂载成功。
   ```
   df -h
   ```
   ![](https://support.huaweicloud.com/fstg-obs/public_sys-resources/note_3.0-zh-cn.png)
   后续如果想取消开机自动挂载并行文件系统，删除rc.local文件中执行obsfs挂载命令的脚本文件，即在[7]中添加的命令。
   
   
 
#### 后续操作
后续如果需要对已挂载的并行文件系统进行参数设置（新增、修改或删除），请先取消挂载后再重新挂载。关于取消挂载并行文件系统的具体操作，请参见[取消挂载并行文件系统](https://support.huaweicloud.com/fstg-obs/obs_12_0009.html)。
