이 페이지에서는 Cloud Storage FUSE를 사용하여 Cloud Storage 버킷을 로컬 파일 시스템에 마운트하는 여러 가지 방법을 보여줍니다.
시작하기 전에
버킷을 마운트하고 액세스하려면 먼저 다음 작업을 완료해야 합니다.
버킷을 마운트하고 액세스하는 데 필요한 역할 가져오기
버킷을 마운트하고, 액세스하고, 읽기 및 쓰기 작업을 실행하려면 버킷 소유자에게 버킷에 대한 스토리지 객체 사용자(roles/storage.objectUser
) 역할을 부여해 달라고 요청하세요.
이 사전 정의된 역할에는 마운트된 버킷에서 읽고 마운트된 버킷에 쓰는 데 필요한 권한이 포함되어 있습니다. 정확히 필요한 권한을 보려면 필수 권한 섹션을 펼치세요.
필수 권한
storage.objects.create
storage.objects.delete
storage.objects.get
storage.objects.list
storage.objects.update
커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 얻을 수도 있습니다.
버킷에 대한 역할 부여는 버킷에 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.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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 --implicit-dirs my-bucket /path/to/mount/point
관리형 폴더로 버킷을 마운트할 때 다음 제한사항과 고려사항에 유의하세요.
빈 관리형 폴더는 마운트된 버킷에 표시되지 않습니다.
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 --implicit-dirs my-bucket /path/to/mount/point
폴더가 포함된 계층적 네임스페이스가 사용 설정된 버킷 마운트
폴더를 포함한 계층적 네임스페이스가 사용 설정된 버킷을 마운트할 수 있습니다. 계층적 네임스페이스로 버킷을 마운트할 때는 폴더가 마운트된 버킷에 표시되도록 --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
파일에 추가해야 합니다.
버킷 마운트 해제
버킷을 마운트 해제하려면 fusermount
도구를 사용합니다.
fusermount -u /path/to/mount/point
다음 단계
캐싱 동작 또는 로그 활동을 제어하는 방법 등 Cloud Storage FUSE 성능 알아보기
Cloud Storage FUSE의 디렉터리 시맨틱스에 대해 알아보기