BlobFuse2를 사용하여 Linux에 Azure Blob Storage 컨테이너를 탑재하는 방법
이 문서에서는 BlobFuse2를 설치 및 구성하고, Azure Blob 컨테이너를 탑재하고, 컨테이너에서 데이터에 액세스하는 방법을 보여 줍니다. 기본 단계는 다음과 같습니다.
BlobFuse2 설치 방법
BlobFuse2 설치에는 두 가지 옵션이 있습니다.
- Linux용 Microsoft 소프트웨어 리포지토리에서 BlobFuse2 설치 - 기본 설치 방법입니다. BlobFuse2는 여러 일반적인 Linux 배포판의 리포지토리에서 사용할 수 있습니다.
- 소스 코드에서 BlobFuse2 이진 파일 빌드 - 배포의 리포지토리에서 사용할 수 없는 경우 소스 코드에서 BlobFuse2 이진 파일을 빌드할 수 있습니다.
옵션 1: Linux용 Microsoft 소프트웨어 리포지토리에서 BlobFuse2 설치
지원되는 배포판은 BlobFuse2 릴리스를 참조하세요.
libfuse 지원에 대한 자세한 내용은 BlobFuse2 추가 정보를 참조하세요.
Linux 버전을 확인하려면 다음 명령을 실행합니다.
cat /etc/*-release
배포판에 사용 가능한 이진 파일이 없으면 옵션 2: 소스 코드에서 이진 파일을 빌드하면 됩니다.
리포지토리에서 BlobFuse2를 설치하려면 다음을 수행합니다.
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 배포를 가리킵니다.
BlobFuse2 설치
옵션 2: 소스 코드에서 이진 파일 빌드
소스 코드에서 BlobFuse2 이진 파일을 빌드하려면 다음을 수행합니다.
종속성을 설치합니다.
Git 설치:
sudo apt-get install git
BlobFuse2 종속성을 설치합니다.
Ubuntu에서:
sudo apt-get install libfuse3-dev fuse3 -y
리포지토리를 복제합니다.
sudo git clone https://github.com/Azure/azure-storage-fuse/ sudo cd ./azure-storage-fuse sudo git checkout main
BlobFuse2 빌드:
go get go build -tags=fuse3
팁
Go를 설치해야 하는 경우 Go용 다운로드 및 설치를 참조하세요.
BlobFuse2를 구성하는 방법
다양한 설정을 사용하여 BlobFuse2를 구성할 수 있습니다. 일반적인 설정 중 일부는 다음과 같습니다.
- 로깅 위치 및 옵션
- 캐싱을 위한 임시 파일 경로
- 탑재할 Azure Storage 계정 및 Blob 컨테이너에 대한 정보
환경 변수를 사용하거나 BlobFuse2 명령에 전달할 매개 변수로 YAML 구성 파일에서 설정을 구성할 수 있습니다. 기본 방법은 구성 파일을 사용하는 것입니다.
BlobFuse2의 각 구성 매개 변수 및 이를 지정하는 방법에 대한 자세한 내용은 다음 문서를 참조하세요.
탑재를 위해 BlobFuse2를 구성하려면 다음을 수행합니다.
캐싱 구성
BlobFuse2는 로컬 파일 캐싱 기술을 사용하여 네이티브와 유사한 성능을 제공합니다. 캐싱 구성 및 동작은 대용량 파일을 스트리밍하는지 아니면 작은 파일에 액세스하는지에 따라 다릅니다.
큰 파일 스트리밍을 위한 캐싱 구성
BlobFuse2는 파일에 대한 디스크 캐싱 대신 읽기 및 쓰기 작업에 대한 스트리밍을 지원합니다. 스트리밍 모드에서 BlobFuse2는 읽기 및 쓰기를 위해 메모리에 큰 파일 블록을 캐시합니다. 스트리밍 캐싱과 관련된 구성 설정은 구성 파일의 stream:
설정 아래에 있습니다.
stream:
block-size-mb:
For read only mode, the size of each block to be cached in memory while streaming (in MB)
For read/write mode, the size of newly created blocks
max-buffers: The total number of buffers to store blocks in
buffer-size-mb: The size for each buffer
기본 스트리밍 시나리오에 대한 몇 가지 설정으로 빠르게 시작하려면 샘플 스트리밍 구성 파일을 참조하세요.
작은 파일에 대한 캐싱 구성
작은 파일은 구성 파일의 file_cache:
아래에 지정된 임시 경로에 캐시됩니다.
file_cache:
path: <path to local disk cache>
참고 항목
BlobFuse2는 열려 있는 모든 파일 콘텐츠를 임시 경로에 저장합니다. 열려 있는 모든 파일을 포함하기에 충분한 공간이 있는지 확인합니다.
파일 캐싱을 위한 임시 경로를 구성하는 세 가지 일반적인 옵션이 있습니다.
로컬 고성능 디스크 사용
파일 캐싱에 기존 로컬 디스크를 사용하는 경우 SSD(Solid-State Disk)와 같이 가능한 최상의 성능을 제공하는 디스크를 선택합니다.
RAM 디스크 사용
다음 예제에서는 BlobFuse2에 대한 디렉터리를 만들고 16GB의 RAM 디스크를 만듭니다. 요구 사항을 충족하는 크기를 선택합니다. BlobFuse2는 RAM 디스크를 사용하여 최대 16GB 크기의 파일을 엽니다.
sudo mkdir /mnt/ramdisk
sudo mount -t tmpfs -o size=16g tmpfs /mnt/ramdisk
sudo mkdir /mnt/ramdisk/blobfuse2tmp
sudo chown <youruser> /mnt/ramdisk/blobfuse2tmp
SSD 사용
Azure에서는 VM에서 사용할 수 있는 SSD 임시 디스크를 사용하여 BlobFuse2에 대기 시간이 짧은 버퍼를 제공할 수 있습니다. 사용하는 프로비저닝 에이전트에 따라 cloud-init의 경우 /mnt 또는 Microsoft Azure Linux 에이전트(waagent) VM의 경우 /mnt/resource에 임시 디스크를 탑재합니다.
사용자가 임시 경로에 액세스할 수 있는지 확인합니다.
sudo mkdir /mnt/resource/blobfuse2tmp -p
sudo chown <youruser> /mnt/resource/blobfuse2tmp
Blob 컨테이너를 탑재할 빈 디렉터리를 만듭니다.
Blob 컨테이너를 탑재할 빈 디렉터리를 만들려면 다음을 수행합니다.
mkdir ~/mycontainer
스토리지 계정에 대한 액세스 권한 부여
컨테이너를 탑재하는 사용자의 스토리지 계정에 대한 액세스 권한을 부여해야 합니다. 액세스 권한을 부여하는 가장 일반적인 방법은 다음 옵션 중 하나를 사용하는 것입니다.
- 스토리지 계정 액세스 키
- 공유 액세스 서명
- 관리 ID
- 서비스 주체
구성 파일 또는 환경 변수에서 권한 부여 정보를 제공할 수 있습니다. 자세한 내용은 BlobFuse2에 대한 설정 구성을 참조하세요.
Blob 컨테이너를 탑재하는 방법
Important
BlobFuse2는 중복된 탑재 경로를 지원하지 않습니다. BlobFuse2의 여러 인스턴스를 실행하는 경우 각 인스턴스에 고유하고 중복되지 않는 탑재 지점이 있는지 확인합니다.
BlobFuse2는 동일한 탑재 경로에서 NFS와 함께 사용될 수 없습니다. NFS와 동일한 탑재 경로에서 BlobFuse2를 실행한 결과는 정의되지 않으며 데이터 손상이 발생할 수 있습니다.
BlobFuse2를 사용하여 Azure 블록 Blob 컨테이너를 탑재하려면 다음 명령을 실행합니다. 이 명령은 ./config.yaml
에 지정된 컨테이너를 ~/mycontainer
위치에 탑재합니다.
sudo blobfuse2 mount ~/mycontainer --config-file=./config.yaml
참고 항목
탑재 옵션의 전체 목록은 BlobFuse2 탑재 명령을 참조하세요.
이제 Linux 파일 시스템 및 관련 API를 통해 블록 Blob에 액세스할 수 있습니다. 배포를 테스트하기 위해 새 디렉터리 및 파일을 만들어 봅니다.
cd ~/mycontainer
mkdir test
echo "hello world" > test/blob.txt
데이터에 액세스하는 방법
일반적으로 기본 Linux 파일 시스템을 사용할 때와 같이 BlobFuse2로 탑재된 스토리지를 사용할 수 있습니다. 파일 경로의 구분 기호로 슬래시(/
)가 있는 가상 디렉터리 구성표를 사용하고 기본 파일 시스템 작업을 지원합니다(예: mkdir
, opendir
, readdir
, rmdir
, open
, read
, create
, write
, close
, unlink
, truncate
, stat
및 rename
).
그러나 다음과 같은 몇 가지 중요한 기능 차이점을 알고 있어야 합니다.
기능 지원
이 표에서는 사용자 계정에서 이 기능이 지원되는 방법과 특정 기능을 사용하도록 설정할 때 지원에 미치는 영향을 보여 줍니다.
Storage 계정 유형 | Blob Storage(기본 지원) | Data Lake Storage 1 | NFS 3.0 1 | SFTP 1 |
---|---|---|---|---|
표준 범용 v2 | ||||
Premium 블록 Blob |
1 Azure Data Lake Storage, NFS(네트워크 파일 시스템) 3.0 프로토콜 및 SFTP(SSH 파일 전송 프로토콜) 지원은 모두 계층 구조 네임스페이스를 사용하도록 설정된 스토리지 계정이 필요합니다.