vault backup: 2026-11-07 16:33:44
This commit is contained in:
@@ -0,0 +1,141 @@
|
||||
以下是 Mountpoint for Amazon S3 的安装和与 S3 兼容服务(如 RustFS)配合使用的教程。
|
||||
|
||||
### 1. 安装 Mountpoint
|
||||
|
||||
Mountpoint 提供预编译的安装包,支持多种 Linux 发行版。
|
||||
|
||||
* **Ubuntu / Debian (基于 DEB)**
|
||||
```bash
|
||||
# 下载适用于 x86_64 架构的 .deb 包
|
||||
wget https://s3.amazonaws.com/mountpoint-s3-release/latest/x86_64/mount-s3.deb
|
||||
# 安装
|
||||
sudo apt-get install -y ./mount-s3.deb
|
||||
```
|
||||
对于 ARM64 架构,将 URL 中的 `x86_64` 替换为 `arm64`。
|
||||
|
||||
* **Amazon Linux / RHEL / CentOS (基于 RPM)**
|
||||
```bash
|
||||
# 下载适用于 x86_64 架构的 .rpm 包
|
||||
wget https://s3.amazonaws.com/mountpoint-s3-release/latest/x86_64/mount-s3.rpm
|
||||
# 安装
|
||||
sudo yum install -y ./mount-s3.rpm
|
||||
```
|
||||
对于 ARM64 架构,将 URL 中的 `x86_64` 替换为 `arm64`。
|
||||
|
||||
* **验证安装**
|
||||
安装完成后,运行以下命令验证是否成功:
|
||||
```bash
|
||||
mount-s3 --version
|
||||
```
|
||||
如果安装成功,会输出版本信息,例如 `mount-s3 1.21.0`。
|
||||
|
||||
### 2. 配置访问凭证
|
||||
|
||||
Mountpoint 使用与 AWS CLI 相同的方式发现凭证。对于自建的 S3 服务,你需要通过环境变量提供访问密钥:
|
||||
|
||||
```bash
|
||||
export AWS_ACCESS_KEY_ID=myaccesskey
|
||||
export AWS_SECRET_ACCESS_KEY=mysecretkey
|
||||
export AWS_ENDPOINT_URL=http://你的RustFS服务IP:9000
|
||||
```
|
||||
Mountpoint 会自动读取这些环境变量。
|
||||
|
||||
### 3. 挂载存储桶
|
||||
|
||||
#### 3.1 基础挂载(适用于 AWS S3)
|
||||
|
||||
如果你的目标是标准的 AWS S3,挂载命令非常简单:
|
||||
```bash
|
||||
mkdir ~/mnt
|
||||
mount-s3 my-bucket ~/mnt
|
||||
```
|
||||
此时,`~/mnt` 目录就成为了你 S3 存储桶的挂载点。
|
||||
|
||||
#### 3.2 挂载到 S3 兼容服务(如 RustFS)
|
||||
|
||||
对于非 AWS 的 S3 兼容服务,**必须指定服务端点(Endpoint)**。
|
||||
|
||||
Mountpoint 提供两种方式:
|
||||
|
||||
* **方式一:使用命令行参数 `--endpoint-url`**
|
||||
```bash
|
||||
mount-s3 my-bucket ~/mnt --endpoint-url http://你的RustFS服务IP:9000
|
||||
```
|
||||
|
||||
* **方式二:使用环境变量 `AWS_ENDPOINT_URL`(推荐)**
|
||||
这种方式更便于在容器或脚本中统一管理配置。
|
||||
```bash
|
||||
export AWS_ENDPOINT_URL=http://你的RustFS服务IP:9000
|
||||
mount-s3 my-bucket ~/mnt
|
||||
```
|
||||
|
||||
> **注意**:Mountpoint 默认使用 `virtual-hosted-style` 的请求方式。如果你的 S3 服务(如 RustFS)不支持这种样式,可能会遇到 DNS 解析问题。此时,你可能需要在挂载时添加 `--endpoint-url` 参数,并确保其指向正确的服务地址。
|
||||
|
||||
### 4. 启用 10GB 本地缓存
|
||||
|
||||
Mountpoint 支持可选的本地缓存,用于加速对热点数据的重复读取。它的工作模式是按需加载,只有被访问过的数据才会被缓存。
|
||||
|
||||
你可以通过以下参数启用并限制缓存大小:
|
||||
|
||||
* `--cache <目录>`:指定缓存数据存放的本地目录。
|
||||
* `--max-cache-size <大小>`:**以 MiB 为单位**设置缓存的最大容量。缓存淘汰策略为 **LRU(最近最少使用)**。
|
||||
|
||||
**挂载命令示例(10GB = 10240 MiB):**
|
||||
|
||||
```bash
|
||||
# 创建缓存目录
|
||||
mkdir ~/cache
|
||||
|
||||
# 挂载并启用缓存,限制最大10GB
|
||||
mount-s3 my-bucket ~/mnt \
|
||||
--endpoint-url http://你的RustFS服务IP:9000 \
|
||||
--cache ~/cache \
|
||||
--max-cache-size 10240
|
||||
```
|
||||
|
||||
当缓存占满后,Mountpoint 会自动淘汰最久未使用的数据以腾出空间。
|
||||
|
||||
### 5. 其他常用选项
|
||||
|
||||
* **元数据缓存 (`--metadata-ttl`)**:缓存文件的元数据(如大小、存在性),可减少对 S3 的请求。但需要注意,这可能会使外部对文件的修改无法及时看到。
|
||||
* **后台运行**:`mount-s3` 命令默认在后台运行,不会阻塞终端。
|
||||
* **卸载挂载点**:
|
||||
```bash
|
||||
umount ~/mnt
|
||||
```
|
||||
如果权限不足,可能需要使用 `sudo`。
|
||||
|
||||
### 6. 核心注意事项
|
||||
|
||||
1. **缓存仅加速读取**:本地缓存**仅对读取操作生效**。所有的写入(创建、修改、删除)操作都会**直接提交到后端的 S3 服务**,不会先写入缓存。
|
||||
2. **非完整 POSIX 兼容**:Mountpoint 并非一个完整的 POSIX 文件系统,它针对高吞吐量的读写访问进行了优化。一些依赖复杂文件系统特性(如文件锁、稀疏文件等)的应用可能无法正常工作。
|
||||
3. **权限问题**:如果遇到权限错误,可以尝试在挂载命令中添加 `--allow-other` 参数,允许其他用户访问挂载点。
|
||||
|
||||
### 7. 在 Docker 容器中使用
|
||||
|
||||
Mountpoint 也提供了官方 Docker 镜像,方便在容器化环境中使用。
|
||||
|
||||
```bash
|
||||
# 拉取镜像
|
||||
docker pull public.ecr.aws/mountpoint-s3/mountpoint-s3
|
||||
|
||||
# 运行容器并挂载
|
||||
docker run -it --rm \
|
||||
--cap-add SYS_ADMIN \
|
||||
--device /dev/fuse \
|
||||
-e AWS_ACCESS_KEY_ID=myaccesskey \
|
||||
-e AWS_SECRET_ACCESS_KEY=mysecretkey \
|
||||
-e AWS_ENDPOINT_URL=http://你的RustFS服务IP:9000 \
|
||||
public.ecr.aws/mountpoint-s3/mountpoint-s3 \
|
||||
my-bucket /mnt
|
||||
```
|
||||
注意,运行需要添加 `--cap-add SYS_ADMIN` 和 `--device /dev/fuse` 权限。
|
||||
|
||||
|
||||
|
||||
## 查询所有挂载
|
||||
mount | grep mountpoint-s3
|
||||
|
||||
|
||||
## 取消挂载
|
||||
umount
|
||||
Reference in New Issue
Block a user