Cloud Storage FUSE를 사용하여 Cloud Storage 버킷 마운트

마운트 옵션

이 페이지에서는 Cloud Storage FUSE를 사용하여 Cloud Storage 버킷을 로컬 파일 시스템에 마운트하는 여러 가지 방법을 보여줍니다.

시작하기 전에

버킷을 마운트하려면 먼저 다음 태스크를 완료해야 합니다.

필요한 역할 얻기

버킷을 마운트하려면 버킷 소유자에게 버킷에 대한 스토리지 객체 뷰어(roles/storage.objectViewer) 역할을 부여해 달라고 요청하세요. 버킷을 만든 경우 이미 버킷에 대한 스토리지 관리자(roles/storage.admin) 역할이 있을 수 있으며 스토리지 객체 뷰어 역할은 필요하지 않습니다.

스토리지 객체 뷰어 사전 정의된 역할에는 버킷을 마운트하는 데 필요한 권한이 포함되어 있습니다. 정확히 필요한 권한을 보려면 필수 권한 섹션을 펼치세요.

필수 권한

  • storage.objects.list

커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.

버킷에 대한 역할 부여는 버킷에 IAM 사용을 참조하세요.

Cloud Storage FUSE 설치

아직 설치하지 않았으면 Cloud Storage FUSE를 설치합니다.

Cloud Storage FUSE 요청 인증

Cloud Storage에 대해 Cloud Storage FUSE 요청을 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정해야 합니다. 기본적으로 Cloud Storage FUSE는 추가 구성 없이 기존 애플리케이션 기본 사용자 인증 정보를 자동으로 로드합니다.

Google Cloud CLI를 사용하여 애플리케이션 기본 사용자 인증 정보를 설정하려면 다음 단계를 완료합니다.

  1. Install the Google Cloud CLI.
  2. To initialize the gcloud CLI, run the following command:

    gcloud init
  3. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

또한 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가 포그라운드에 유지되도록 하려면(예: 디버그 로깅용) --foreground 플래그와 함께 gcsfuse 명령어를 실행할 수 있습니다.

마운트 예시

이 섹션에서는 버킷을 마운트하는 데 사용할 수 있는 다양한 예시 명령어를 설명합니다.

정적 마운트

정적 마운트는 특정 버킷 마운트를 의미합니다. 예를 들어 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/

동적으로 마운트된 버킷은 루트 마운트 지점에서 나열될 수 없습니다. 대신 버킷 이름을 list 작업의 일부로 지정해야 합니다.

버킷을 읽기 전용으로 마운트

버킷을 읽기 전용으로 마운트하려면 -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 설치에는 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를 실행할 수 있습니다.

부팅 시 버킷을 자동으로 마운트하려면 Cloud Storage FUSE가 마운트 전 네트워크 시스템 준비를 기다리도록 x-systemd.requires=network-online.target 옵션 또는 _netdev 옵션을 /etc/fstab 항목에 포함해야 할 수 있습니다. 예를 들면 다음과 같습니다.

my-bucket /mount/point gcsfuse rw,x-systemd.requires=network-online.target,user

uid, gid 또는 두 옵션 모두를 /etc/fstab 항목에 포함하여 특정 비루트 사용자로 버킷을 자동으로 마운트할 수 있습니다. 예를 들면 다음과 같습니다.

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 사용을 참조하세요.

  • cpmv 명령어를 사용하여 마운트된 버킷에서 관리형 폴더를 복사하고 이동할 수 있습니다. 관리형 폴더를 복사하거나 이동하면 원래 관리형 폴더에 대한 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 커널 내에 구현된 보안 측정입니다.

버킷을 마운트하고 다른 사람이 버킷 마운트 지점에 액세스하도록 허용하려면 -o allow_other 옵션을 사용해서 루트로 mount 명령어를 실행할 수 있습니다.

mount -t gcsfuse -o allow_other my-bucket /path/to/mount/point

루트로 버킷을 마운트하지 않도록 하려면 다른 사람이 버킷 마운트 지점에 액세스하도록 user_allow_other/etc/fuse.conf 파일에 추가해야 합니다.

마운트된 버킷에 액세스하려면 호출 사용자 외에 다른 사용자에게 필요한 IAM 권한이 있어야 합니다.

마운트된 버킷에 액세스하는 데 필요한 역할

마운트된 버킷에서 읽고 쓰려면 버킷 소유자에게 버킷에 대한 스토리지 객체 사용자(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

다음 단계