세 번째 클라이언트가 스토리지 버킷의 파일에 액세스할 수 있도록 gcsfuse 마운트 내보내기

세 번째 클라이언트가 스토리지 버킷의 파일에 액세스할 수 있도록 gcsfuse 마운트 내보내기

스토리지 버킷을 로컬 디렉터리에 마운트합니다. /share 그런 다음 이제 개체 저장소의 내용으로 채워진 이 디렉터리를 다른 컴퓨터에서 사용할 수 있도록 만들려고 합니다. 목표는 이 다른 머신이 gcsfuse-client 자체를 사용할 필요 없이 nfs 또는 이와 유사한 것에 의존할 수 있다는 것입니다.

nfs를 사용하여 gcsfuse 디렉터리를 노출하려고 했습니다 /share. nfs-share가 작동했습니다. 그러나 클라우드 스토리지 버킷을 nfs 공유에 마운트했을 때 원격 시스템(nfs-client)은 객체 저장소의 파일을 보지 못했습니다.

따라서 체인의 두 부분은 서로 별도로 작동합니다.

  • 객체 저장소를 로컬 디렉터리에 마운트할 수 있습니다.
  • nfs당 디렉토리를 두 ​​번째 시스템으로 내보낼 수 있습니다.

하지만 객체 저장소의 내용을 두 번째 시스템으로 '통과'할 수는 없습니다.

쿠버네티스 클러스터 내부에서 일어나는 모든 일.

방정식에서 nfs를 배제하기 위해 사이드카 패턴을 사용하여 /share동일한 포드의 두 번째 컨테이너에 노출했습니다. 동일한 결과: 두 번째 컨테이너는 객체 저장소의 내용을 볼 수 없습니다.

나는 (gcs)fuse-filesystem에 대해 많이 알지 못하지만 사람들은 그것을 '사용자 공간' 파일 시스템이라고 부릅니다. 그 이유는 gcsfuse 마운트의 내용을 두 번째 시스템으로 전달할 수 없기 때문입니까?

편집: 객체 스토리지를 마운트할 때 여러 가지 다른 옵션을 시도했습니다. 여기에는 다음과 같은 옵션이 있습니다.

gcsfuse -o nonempty -o allow_other --implicit-dirs --gid 0 --uid 0 --file-mode 777 --dir-mode 777 video-storage-dev /share
gcsfuse -o nonempty -o allow_other video-storage-dev /share

답변1

이 문제에 대한 가능한 해결 방법:

  1. user_allow_other퓨즈 구성에서 구성 옵션이 활성화 되지 않았을 수 있습니다 . 이렇게 하려면 파일에서 /etc/fuse.conf주석 처리되지 않은 다음 줄이 있는지 확인한 user_allow_other후 다시 시도하세요.

  2. 위의 내용이 작동하지 않으면 다음을 살펴보십시오.이 유닉스 질문, NFS를 통해 FUSE 내보내기를 해결합니다. 요약하면, 대부분의 Linux 배포판에서는 NFSv2 또는 NFSv3을 통해 FUSE 탑재 fs 내보내기를 허용하지 않으므로 NFSv4를 사용해야 합니다.

관련 정보