本页面介绍了几种使用 Cloud Storage FUSE 将 Cloud Storage 存储桶装载到本地文件系统的方法。
准备工作
如需装载存储桶,您必须先完成以下任务。
获取所需角色
如需装载存储桶,请让存储桶所有者为您授予存储桶的 Storage Object Viewer (roles/storage.objectViewer
) 角色。请注意,如果您已创建存储桶,您可能已经拥有存储桶的 Storage Admin (roles/storage.admin
) 角色,不需要 Storage Object Viewer 角色。
Storage Object Viewer 预定义角色可提供装载存储桶所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
storage.objects.list
您也可以使用自定义角色或其他预定义角色来获得此权限。
如需了解如何授予存储桶的角色,请参阅将 IAM 与存储桶搭配使用。
安装 Cloud Storage FUSE
安装 Cloud Storage FUSE(如果您尚未这样做)。
对 Cloud Storage FUSE 请求进行身份验证
如需对向 Cloud Storage 发送的 Cloud Storage FUSE 请求进行身份验证,您必须设置应用默认凭据。默认情况下,Cloud Storage FUSE 会自动加载现有应用默认凭据,无需进行任何进一步配置。
如需使用 Google Cloud CLI 设置应用默认凭据,请完成以下步骤:
-
Install the Google Cloud CLI.
-
Configure the gcloud CLI to use your federated identity.
For more information, see Sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create local authentication credentials for your user account:
gcloud auth application-default login
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
创建 Compute Engine 虚拟机 (VM) 时,其服务账号还可用于对 Cloud Storage FUSE 的访问权限进行身份验证。
装载存储桶
如需将存储桶装载到本地文件系统,请使用以下命令:
gcsfuse GLOBAL_OPTIONS BUCKET_NAME MOUNT_POINT
其中:
GLOBAL_OPTIONS
是可以添加的选项,用于控制装载的设置方式。如需详细了解选项及其使用方法,请参阅 Cloud Storage FUSE CLI 选项。BUCKET_NAME
是要装载的存储桶的名称。例如my-bucket
。如果您要执行动态装载,请从此命令中排除存储桶名称。MOUNT_POINT
是装载存储桶的本地目录。例如/path/to/mount/point
。
Cloud Storage FUSE 退出后,您可以通过在已装载的存储桶装载点上运行 ls
来访问该存储桶。如果您希望 Cloud Storage FUSE 保留在前台(例如,用于调试日志记录),则可以在运行 gcsfuse
命令时使用 --foreground
标志。
装载示例
本部分介绍装载存储桶的不同示例命令。
静态装载
静态装载是指装载特定存储桶。例如,如需将存储桶 my-bucket
装载到目录 /path/to/mount/point
中,请运行以下命令:
mkdir /path/to/mount/point
gcsfuse my-bucket /path/to/mount/point
动态装载
动态装载是指将用户有权访问的所有存储桶装载为子目录。
执行动态装载时,您需要从命令中排除存储桶名称。例如,假设您有权访问存储桶 my-bucket-1
、my-bucket-2
和 my-bucket-3
。如需将所有存储桶装载到目录 /path/to/mount/point
中,请运行以下命令:
mkdir /path/to/mount/point
gcsfuse /path/to/mount/point
然后,您可以将存储桶作为子目录进行访问:
ls /path/to/mount/point/my-bucket-1/
ls /path/to/mount/point/my-bucket-2/
ls /path/to/mount/point/my-bucket-3/
无法从根装载点列出动态装载的存储桶。而是必须在列出操作中指定存储桶名称。
以只读方式装载存储桶
如需以只读方式装载存储桶,请将 -o ro
选项传递给 gcsfuse
命令。例如,如需以只读方式将存储桶 my-bucket
装载到目录 /path/to/mount/point
中,请运行以下命令:
gcsfuse -o ro my-bucket /path/to/mount/point
在存储桶中装载目录
默认情况下,Cloud Storage FUSE 会完整地装载存储桶,其中包括存储桶的所有内容和目录结构。如需在存储桶中装载特定目录,请将 --only-dir
选项传递给 gcsfuse
命令。例如,如需将目录 my-bucket/a/b
装载到目录 /path/to/mount/point
中,请运行以下命令:
gcsfuse --only-dir a/b my-bucket /path/to/mount/point
使用 Linux mount
命令进行装载
Cloud Storage FUSE 安装包括一个 Linux mount
命令理解的帮助程序,可让您使用 mount
命令来装载存储桶。如果您使用的是 Linux,则 mount
命令必须从根目录运行。例如,以下命令会将存储桶 my-bucket
装载到路径 /path/to/mount/point
下:
sudo mount -t gcsfuse -o rw,user my-bucket /path/to/mount/point
使用 Linux mount
命令装载时,Cloud Storage FUSE CLI 选项可以作为参数传递给 -o
标志,但其中连字符 (-
) 应替换为下划线 (_
)。例如,应该使用 implicit_dirs
,而不是 implicit-dirs
。
sudo mount -t gcsfuse -o implicit_dirs my-bucket /path/to/mount/point
永久性装载
Cloud Storage FUSE 安装包括一个在路径 /sbin/mount.gcsfuse
下安装到系统中的帮助程序。此帮助程序可让您使用 /etc/fstab
文件创建装载点,以便您可以保留装载。
例如,将以下行添加到 /etc/fstab
文件后,这些行会在 /mount/point
路径下为存储桶 my-bucket
定义装载点:
my-bucket /mount/point gcsfuse rw,noauto,user
其中:
rw
选项指定使用读写权限创建装载点。noauto
选项指定不应在启动时装载文件系统。通过
user
选项,任何人都可以创建/etc/fstab
文件中指定的装载点。将示例行添加到/etc/fstab
文件后,您可以以非根用户身份运行mount /mount/point
。
如果您要在启动时自动装载存储桶,则可能需要在 /etc/fstab
条目中添加 x-systemd.requires=network-online.target
选项或 _netdev
选项,以确保 Cloud Storage FUSE 在装载之前等待网络系统准备就绪。例如:
my-bucket /mount/point gcsfuse rw,x-systemd.requires=network-online.target,user
您可以通过在 /etc/fstab
条目中添加选项 uid
和/或 gid
,以特定非根用户身份自动装载存储桶。例如:
my-bucket /mount/point gcsfuse rw,_netdev,allow_other,uid=1001,gid=1001
与 linux mount
命令类似,用于在 /etc/fstab
文件中装载的标志必须使用下划线 (_
),而不是连字符 (-
)。例如,应该是 implicit_dirs
,而非 implicit-dirs
。
装载带有文件夹的存储桶
您可以装载带有多种文件夹类型的存储桶。
装载带有托管式文件夹的存储桶
如需装载包括其托管文件夹在内的存储桶,请在命令中添加 --implicit-dirs
选项。
例如,如需将存储桶 my-bucket
及其托管式文件夹装载到目录 /path/to/mount/point
中,请运行以下命令:
gcsfuse my-bucket /path/to/mount/point --implicit-dirs
装载带有托管文件夹的存储桶时,请牢记以下限制和注意事项:
空托管文件夹不会显示在已装载的存储桶中。
您无法使用 Cloud Storage FUSE 对托管文件夹设置或管理 IAM 权限。如需对托管文件夹设置或管理 IAM 权限,请参阅将 IAM 与托管文件夹搭配使用。
您可以使用
cp
和mv
命令在已装载的存储桶中复制和移动托管文件夹。复制或移动托管文件夹时,原始托管文件夹中的 IAM 政策不会在新的托管文件夹中保留。您必须对新的托管式文件夹设置新的 IAM 政策。
装载带有隐式定义的文件夹的存储桶
您可以在 Cloud Storage FUSE 命令中使用 --implicit-dirs
标志装载隐式定义的文件夹。隐式定义的文件夹是指未在 Cloud Storage 中明确创建为对象的文件夹。借助 --implicit-dirs
标志,您可以在装载存储桶时查看文件夹。
例如,如需将存储桶 my-bucket
装载到目录 /path/to/mount/point
中,并使用隐式定义的文件夹,请运行以下命令:
gcsfuse my-bucket /path/to/mount/point --implicit-dirs
装载带有文件夹的启用了分层命名空间的存储桶
您可以装载已启用分层命名空间(预览版)的存储桶,包括其文件夹。使用分层命名空间挂载存储桶时,您无需指定 --implicit-dirs
标志,文件夹就会显示在已挂载的存储桶中。
例如,如需将存储桶 my-bucket
及其文件夹装载到目录 /path/to/mount/point
中,请运行以下命令:
gcsfuse my-bucket /path/to/mount/point
控制对装载点的访问权限
默认情况下,Cloud Storage FUSE 使用仅允许调用用户访问已装载存储桶的内容的权限创建存储桶装载点。这是在 FUSE 内核中实施的安全措施。
如需装载存储桶并允许其他人访问存储桶装载点,您可以在以根用户身份运行命令 mount
时使用选项 -o allow_other
:
mount -t gcsfuse -o allow_other my-bucket /path/to/mount/point
如果您要避免以根用户身份装载存储桶,则必须将 user_allow_other
添加到 /etc/fuse.conf
文件以允许其他人访问存储桶装载点。
如需访问已装载的存储桶,除了调用用户之外,其他用户还必须拥有所需的 IAM 权限。
访问已装载的存储桶所需的角色
如需从已装载的存储桶读取数据以及将数据写入已装载的存储桶,请让存储桶所有者为您授予存储桶的 Storage Object User (roles/storage.objectUser
) 角色。
此预定义角色可提供从已装载的存储桶读取数据以及将数据写入已装载的存储桶所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
storage.objects.create
storage.objects.delete
storage.objects.get
storage.objects.list
storage.objects.update
您也可以使用自定义角色或其他预定义角色来获得这些权限。
如需了解如何授予存储桶的角色,请参阅将 IAM 与存储桶搭配使用。
卸载存储桶
如需卸载存储桶,请使用 fusermount
工具:
fusermount -u /path/to/mount/point
后续步骤
了解 Cloud Storage FUSE 性能,例如如何控制缓存行为或日志活动。