Skip to main content

设置对象存储

Access Key 和 Secret Key

如果你的云服务商支持为虚拟主机绑定对象存储访问策略,实现免密钥访问(类似 AWS IAM),则在 juicefs authjuicefs mount 时可以省略密钥(留空)。详情参考 juicefs auth

对于追求易用的用户,我们推荐为 API 密钥赋予完整的读写权限,包括创建桶(CreateBucket)的权限,让客户端可以在初次挂载时自动为你创建存储桶。

但是对于有着严格安全条例、希望使用最小权限的用户,JuiceFS 需要的最小权限是 HeadObject|GetObject|PutObject|DeleteObject。可以把访问权限限制在指定存储桶(默认为 juicefs-<VOL_NAME>)及指定前缀(固定使用文件系统名称)的资源范围内。在以最小权限运行时,JuiceFS 将无法为你创建对象存储桶,你需要自行创建。

提示
  1. 由于 JuiceFS 客户端需要执行后台任务,比如碎片合并,因此即便使用只读令牌挂载,客户端也需要 PutObjectDeleteObject 权限来执行这些后台任务。如果希望只读客户端真正以「只读」方式访问对象存储桶,那么需要为客户端禁用后台任务,详见「客户端访问令牌」
  2. 如果需要导入文件,或者启用了「跨区域复制」功能,则还需要 ListObjects 权限。

常用对象存储

Amazon S3

查看「AWS 安全凭证」。如果已经使用 IAM 角色为 Amazon EC2 实例上运行的应用程序授予权限,则可以在 juicefs mount 时省略密钥。

如果使用密钥,访问权限策略示范如下:

{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:DeleteObject",
"s3:GetObject",
"s3:HeadObject",
"s3:PutObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::juicefs-example/example/*"
]
}
]
}

Google 云存储

首先要在 Google Cloud Platform 创建一个项目(Project),记住项目的 Project ID:

GCP-project-ID

然后下载安装 Cloud SDK:

curl https://sdk.cloud.google.com | bash

安装完成后运行:

gcloud auth application-default login

根据提示完成登录认证。到此就完成了 GCP 平台认证,保存下认证信息。

接下来就可以执行 juicefs mount 挂载 JuiceFS 了,挂载时会要求输入 Project ID(也可以用 GOOGLE_CLOUD_PROJECT 环境变量来指定)。

如果是在 Compute Engine 的虚拟机里面使用 JuiceFS,推荐给虚拟机加上存储的完整访问权限,则不需要手动再授权。

Azure Blob 存储

JuiceFS 目前只在 Microsoft Azure 中国区 提供服务,如果需要其他服务区可以联系我们开通。

当 JuiceFS 使用 Azure Blob Storage 作为数据存储时,需要现在 Azure 中创建一个存储帐户。在左侧导航的“所有服务”中找到“存储帐户”。

Azure-storage-account

进入“存储帐户”创建一个新的,其中“名称”在挂载 JuiceFS 时需要提供,帐户类型选择“Blob 存储”。

Azure-create-storage-account

进入刚创建的存储帐户,可以看到“访问密钥”,两个密钥都可以用于 JuiceFS 挂载。

Azure-storage-access-key

Backblaze B2

首先创建一个拥有读写权限的 Application Keys

JuiceFS 需要 master application key 才能创建桶。建议手动创建一个名字为 juicefs-Name 的桶(Name 表示 JuiceFS 文件系统的名字),然后创建一个有这个桶的读写权限的 Application Key。

IBM 云对象存储

需要 API Key 和 资源 ID 来访问对象存储,查看 Retrieving your instance ID

DigitalOcean Spaces

查看 How To Create a DigitalOcean Space and API Key

Wasabi

查看 Creating a Root Access Key and Secret Key

阿里云 OSS

进入对象存储的控制台,可以在右侧看到 Access Key 入口:

aliyun-oss-key-1

创建一个 Access Key 用于 JuiceFS 挂载:

aliyun-oss-key-2

访问权限策略示范如下:

{
"Statement": [
{
"Action": [
"oss:DeleteObject",
"oss:GetObject",
"oss:HeadObject",
"oss:PutObject"
],
"Effect": "Allow",
"Resource": [
"acs:oss:*:*:juicefs-example/example/*"
]
}
],
"Version": "1"
}

腾讯云 COS

使用腾讯云 COS 时,挂载需要额外提供 APPID,因此我们推荐在创建文件系统时,就将 APPID 填入 Bucket 字段,形如 {bucket}-{APPID}。如果你没有在创建文件系统时指定 APPID,那么在挂载的时候,JuiceFS 还会交互式地要求你额外输入 APPID。此外,APPID 也可以通过 juicefs auth--bucket 参数来指定,格式同 {bucket}-{APPID}

进入腾讯云控制台,APPID 在 账号信息 中查看。点击右上角账号的下拉菜单,可以看到账号信息入口,

tencent-account-appid

Secret ID 和 Secret Key 需要在 API 密钥管理 中查看或创建。

tencent-keys

访问权限策略示范如下:

{
"Statement": [
{
"Effect": "Allow",
"Action": [
"cos:DeleteObject",
"cos:GetObject",
"cos:HeadObject",
"cos:PutObject"
],
"Resource": [
"qcs::cos:ap-guangzhou:uid/1250000000:juicefs-example-1250000000/example/*"
]
}
],
"Version": "2.0"
}

华为云 OBS

查看获取华为云访问密钥

百度云 BOS

对象存储密钥在顶部导航右上角的账号下拉菜单中,点击“安全认证”进入密钥列表。

baidu-bos-key

金山云 KS3

查看用户访问密钥管理

青云 QingStor

登入青云控制台,在右上角账号图标的下拉菜单中找到 API 密钥

qingcloud-key

七牛云 Kodo

查看怎么获取或者找到 Access Key 和 Secret Key

UCloud US3

登录 UCloud 控制台,在产品与服务面板中找到 API 产品,里面可以查看有的密钥对。

ucloud-key

Ceph

Ceph 提供两种对接方式:RADOS 和 RGW。前者是 Ceph 底层存储协议,后者则是 S3 网关,暴露标准的 S3 接口。我们推荐通过 RADOS 客户端协议直接对接底层存储,绕过 RGW 能够带来更好的时延。如果需要通过 S3 协议对接,用法与其他 S3 协议对象存储一样。

如果对接底层存储 RADOS,JuiceFS 使用 librados2,支持 Ceph >= 12.2。挂载时需要提供集群名称(比如 ceph), 以及用户名称(比如 client.admin)。

不直接支持的对象存储

JuiceFS 支持所有提供云主机托管,并且提供对象存储服务的公有云服务商,如果你所使用的服务提供商还不在我们列表,或者缺少你需要使用的区域,可以联系 Juicedata 工程师,我们通常会在 48 小时内完成部署和更新。不过即便如此,仍可能遇到一些 JuiceFS 并不直接支持的情况,在下方详细介绍。

Cloudflare R2(和其他兼容 S3 的对象存储)

R2 注意事项

因为 R2 的 ListObjects API 并非完全 S3 兼容(结果不排序),所以 JuiceFS 的部分功能无法使用,比如 juicefs gcjuicefs fsckjuicefs syncjuicefs destroy

Cloudflare 不提供云主机,因此不在 JuiceFS 的标准支持列表里,但是由于 R2 支持 S3 API,因此可以通过 S3 兼容方式接入 JuiceFS。不光是 R2,所有 S3 API 兼容的对象存储都可以采用这种方式接入。此处以 R2 为例,接入步骤如下:

  • 在控制台点击创建文件系统时,「对象存储区域」的本意是用来设置要使用的对象存储所在的平台和区域,显而易见,R2 并不会位列其中,因此选择 AWS,并选中与你应用主机网络延迟最优的区域(通常也是地理位置最接近的区域)。这样一来,文件系统的存储协议会被设置为 S3,但后续我们并不会直接使用 AWS S3,而是使用 R2 的 S3 兼容 API;
  • 在 Bucket 处填写完整 Endpoint,例如 https://xxx.r2.cloudflarestorage.com/dev
  • 点击「设置」标签页,按照教程所示的命令,在宿主机安装 JuiceFS 客户端;
  • 准备好 R2 的认证信息,并按照「快速上手」的指导完成挂载。

自建对象存储

自建对象存储往往会配合 JuiceFS 私有部署一起使用,但如果有需要,JuiceFS 云服务用户一样可以使用自建对象存储。假设你使用 MinIO,在新加坡自建数据中心,那么 JuiceFS 云服务的对接步骤如下:

  • 在控制台点击创建文件系统,「对象存储区域」并不会包含 MinIO,但 JuiceFS 客户端依然可以通过 S3 或者原生 MinIO 的方式进行接入:

    • 如果打算使用 S3 兼容 API,那么选择 AWS,并选中与你应用主机网络延迟最优的区域(在这个例子中,就是亚太地区 - 新加坡)。这样一来,文件系统的存储协议会被设置为 S3,但后续我们并不会直接使用 AWS S3,而是使用 MinIO 的 S3 兼容 API;
    • 如果打算使用原生 MinIO SDK 接入 JuiceFS,请先按照 S3 的方式配置,然后联系 Juicedata 工程师为你后台修改存储类型。
  • 在 Bucket 处填写完整 Endpoint,如下图所示。如果你希望使用 MinIO SDK 进行接入,请先按照 S3 方式创建,然后联系 Juicedata 工程师进行后台修改;

    other-object-storage

  • 点击「设置」标签页,按照教程所示的命令,在宿主机安装 JuiceFS 客户端;

  • 准备好 MinIO 的认证信息,并按照「快速上手」的指导完成挂载。