BlobFuse v1을 사용하여 Azure Blob Storage를 파일 시스템으로 탑재하는 방법

주의

이 문서에서는 EOL(수명 종료) 상태에 가까워진 Linux 배포판인 CentOS를 참조하세요. 이에 따라 사용 및 플랜을 고려하세요. 자세한 내용은 CentOS 수명 종료 지침을 참조하세요.

Important

BlobFuse2 는 BlobFuse의 최신 버전이며 이 문서, BlobFuse v1에서 설명한 버전에 비해 많은 부분이 개선되었습니다. BlobFuse2의 향상된 기능에 대해 알아보려면 BlobFuse2 개선 사항 목록을 참조하세요.

BlobFuse는 Azure Blob Storage의 가상 파일 시스템 드라이버입니다. BlobFuse를 사용하여 Linux 파일 시스템을 통해 스토리지 계정의 기존 블록 Blob 데이터에 액세스할 수 있습니다. BlobFuse는 구분 기호로 슬래시 '/'가 있는 가상 디렉터리 체계를 사용합니다.

이 가이드에서는 BlobFuse v1을 사용하고, Blob Storage 컨테이너를 Linux에 탑재하고, 데이터에 액세스하는 방법을 보여 줍니다. BlobFuse v1에 대해 자세히 알아보려면 readmewiki를 참조하세요.

Warning

BlobFuse는 단순히 요청을 Blob REST API로 변환하기 때문에 100% POSIX 규정 준수를 보장하지 않습니다. 예를 들어 이름 바꾸기 작업은 POSIX에서 원자성이지만, BlobFuse에서는 그렇지 않습니다. 네이티브 파일 시스템과 BlobFuse의 차이점에 대한 전체 목록은 BlobFuse 소스 코드 리포지토리를 방문하세요.

Linux에 BlobFuse v1 설치

BlobFuse 이진 파일은 Ubuntu, Debian, SUSE, CentOS, Oracle Linux 및 RHEL 배포를 위한 Linux용 Microsoft 소프트웨어 리포지토리에서 사용할 수 있습니다. 해당 배포에서 BlobFuse를 설치하려면 목록에서 리포지토리 중 하나를 구성합니다. 배포에 사용할 수 있는 이진 파일이 없는 경우 Azure Storage 설치 단계에 따라 소스 코드에서 이진 파일을 빌드할 수도 있습니다.

BlobFuse는 Ubuntu 버전: 16.04, 18.04 및 20.04, RHEL 버전: 7.5, 7.8, 7.9, 8.0, 8.1, 8.2, CentOS 버전: 7.0, 8.0, Debian 버전: 9.0, 10.0, SUSE 버전: 15, Oracle Linux 8.1에 대한 Linux 리포지토리에 게시되었습니다. 이 명령을 실행하면 해당 버전 중 하나가 배포되었는지 확인할 수 있습니다.

cat /etc/*-release

Microsoft 패키지 리포지토리 구성

Microsoft 제품용 Linux 패키지 리포지토리를 구성합니다.

예를 들어 Redhat Enterprise Linux 8 배포의 경우 다음과 같습니다.

sudo rpm -Uvh https://packages.microsoft.com/config/rhel/8/packages-microsoft-prod.rpm

마찬가지로 URL을 .../rhel/7/...로 변경하여 Redhat Enterprise Linux 7 배포를 가리킵니다.

BlobFuse v1 설치

sudo yum install blobfuse

탑재 준비

BlobFuse는 열려있는 파일이 있으면 버퍼링하고 캐시하기 위해 파일 시스템에 임시 경로를 요청하여 네이티브와 비슷한 성능을 제공합니다. 이 임시 경로의 경우 성능이 가장 좋은 디스크를 선택하거나 최상의 성능을 위해 RAM 디스크를 사용합니다.

참고 항목

BlobFuse는 열려 있는 모든 파일 콘텐츠를 임시 경로에 저장합니다. 열려 있는 모든 파일을 수용하기에 충분한 공간이 있는지 확인합니다.

(선택 사항) 임시 경로로 RAM 디스크 사용

다음 예제에서는 BlobFuse에 대한 디렉터리를 만들고 16GB의 RAM 디스크를 만듭니다. 필요에 따라 크기를 선택합니다. 이 RAM 디스크를 사용하면 BlobFuse에서 최대 16GB 크기의 파일을 열 수 있습니다.

sudo mkdir /mnt/ramdisk
sudo mount -t tmpfs -o size=16g tmpfs /mnt/ramdisk
sudo mkdir /mnt/ramdisk/blobfusetmp
sudo chown <youruser> /mnt/ramdisk/blobfusetmp

SSD를 임시 경로로 사용

Azure에서는 VM에서 사용할 수 있는 임시 디스크(SSD)를 사용하여 BlobFuse에 대기 시간이 짧은 버퍼를 제공할 수 있습니다. 사용된 프로비저닝 에이전트에 따라 임시 디스크는 cloud-init의 경우 '/mnt'에 탑재되거나 waagent VM의 경우 '/mnt/resource'에 탑재됩니다.

사용자가 임시 경로에 액세스할 수 있는지 확인합니다.

sudo mkdir /mnt/resource/blobfusetmp -p
sudo chown <youruser> /mnt/resource/blobfusetmp

스토리지 계정에 대한 액세스 권한 부여

계정 액세스 키, 공유 액세스 서명, 관리 ID 또는 서비스 주체를 사용하여 스토리지 계정에 대한 액세스 권한을 부여할 수 있습니다. 권한 부여 정보는 명령줄, 구성 파일 또는 환경 변수에 제공될 수 있습니다. 자세한 내용은 BlobFuse 추가 정보에서 유효한 인증 설정을 참조하세요.

예를 들어 계정 액세스 키로 권한을 부여하고 구성 파일에 저장한다고 가정합니다. 구성 파일의 형식은 다음과 같아야 합니다.

accountName myaccount
accountKey storageaccesskey
containerName mycontainer
authType Key

accountName은 전체 URL이 아니라 스토리지 계정의 이름입니다. 스토리지 정보로 myaccount, storageaccesskeymycontainer를 업데이트해야 합니다.

다음을 사용하여 이 파일을 만듭니다.

sudo touch /path/to/fuse_connection.cfg

이 파일을 만들고 편집한 후에는 다른 사용자가 읽을 수 없도록 액세스를 제한해야 합니다.

sudo chmod 600 /path/to/fuse_connection.cfg

참고 항목

Windows에서 구성 파일을 만든 경우 dos2unix를 실행하여 삭제하고 Unix 형식으로 파일을 변환해야 합니다.

탑재할 빈 디렉터리 만들기

sudo mkdir ~/mycontainer

탑재

참고 항목

탑재 옵션에 대한 전체 목록은 BlobFuse 리포지토리를 확인하세요.

BlobFuse를 탑재하려면 사용자와 함께 다음 명령을 실행합니다. 이 명령은 '/path/to/fuse_connection.cfg'에 지정된 컨테이너를 '/mycontainer' 위치에 탑재합니다.

sudo blobfuse ~/mycontainer --tmp-path=/mnt/resource/blobfusetmp  --config-file=/path/to/fuse_connection.cfg -o attr_timeout=240 -o entry_timeout=240 -o negative_timeout=120

참고 항목

ADLS 계정을 사용하는 경우 --use-adls=true를 포함해야 합니다.

이제 일반 파일 시스템 API를 통해 블록 Blob에 액세스할 수 있습니다. 디렉터리를 탑재하는 사용자만 디렉터리에 액세스할 수 있으므로, 기본적으로, 액세스가 보호됩니다. 모든 사용자에게 액세스를 허용하려면 -o allow_other 옵션을 통해 탑재하면 됩니다.

sudo cd ~/mycontainer
sudo mkdir test
sudo echo "hello world" > test/blob.txt

탑재 유지

탑재를 유지하는 방법을 알아보려면 BlobFuse Wiki에서 Persisting을 참조하세요.

기능 지원

이 기능에 대한 지원은 Data Lake Storage Gen2, NFS(네트워크 파일 시스템) 3.0 프로토콜 또는 SSH SFTP(파일 전송 프로토콜)를 사용하도록 설정하면 영향을 받을 수 있습니다. 이러한 기능을 사용하도록 설정한 경우 Azure Storage 계정의 Blob Storage 기능 지원을 참조하여 이 기능에 대한 지원을 평가합니다.

다음 단계